{ "openapi": "3.0.0", "info": { "title": "Xentral API", "version": "v0.1", "description": "Xentral is an ERP platform.", "contact": { "name": "Xentral", "url": "https://xentral.com", "email": "api@xentral.com" } }, "tags": [ { "name": "Accounting Export", "description": "Accounting Export endpoints" }, { "name": "Analytics", "description": "Everything that is powered by the Xentral Analytics Platform." }, { "name": "App", "description": "App represents information about apps available in the appstore." }, { "name": "AuthPlatform", "description": "AuthPlatform represents the oauth login for Xentral" }, { "name": "Collection", "description": "Create and manage collections for your reports." }, { "name": "Contact", "description": "Contacts represents the individual or company information." }, { "name": "Credit", "description": "Get information about your current current and monthly credits regarding Report usage." }, { "name": "Credit Note", "description": "A credit note is a document you send to your customer to correct a mistake on an order or an invoice, or to refund an amount paid for products or services." }, { "name": "Credit Note Tag", "description": "Credit Note resource tags management." }, { "name": "Customer", "description": "Customer represents an information related to company, or individual person." }, { "name": "Customer Address", "description": "Represents the address associated with a specific customer, including details such as location, contact information, and address type." }, { "name": "Customer - Contact Person", "description": "Contact person information related to a specific customer" }, { "name": "Customer Tag", "description": "Customer resource tags management." }, { "name": "Delivery Note", "description": "Delivery notes." }, { "name": "Delivery Note Tag", "description": "Delivery notes tags." }, { "name": "Delivery", "description": "Delivery information." }, { "name": "Delivery Terms", "description": "Delivery Terms" }, { "name": "Device Gateway", "description": "Device Gateway" }, { "name": "Documentation", "description": "Get documentation about our data catalog, tables and columns." }, { "name": "EInvoice", "description": "EInvoice related configurations" }, { "name": "Email", "description": "Email related operations" }, { "name": "Email Account", "description": "Email accounts that are available for sending/receiving emails in Xentral." }, { "name": "Employee", "description": "Employees" }, { "name": "Exchange Rates", "description": "Exchange rates provided by EXR Service." }, { "name": "External Reference", "description": "External shop references that are linked to a product." }, { "name": "External Reference Target", "description": "All external shops that exists within Xentral" }, { "name": "Goods Receipt", "description": "Goods Receipt for physical incoming goods." }, { "name": "Inventory", "description": "Inventory run management." }, { "name": "Invoice", "description": "An invoice is a commercial document issued by a seller to a buyer relating to a sale transaction and indicating the products, quantities, and agreed-upon prices for products or services the seller had provided the buyer." }, { "name": "Invoice Tag", "description": "Invoice resource tags management." }, { "name": "License", "description": "License and app subscription management" }, { "name": "Liability", "description": "Returns a collection with all liabilities." }, { "name": "Matrixproduct", "description": "Manage options for products." }, { "name": "Mobile Picking Tote", "description": "A picking tote resource." }, { "name": "Oauth", "description": "Oauth tokens for external providers." }, { "name": "Payment Methods", "description": "Payment Methods resource" }, { "name": "Payment Terms Group", "description": "PaymentTermsGroups can be used to group customers with identical payment terms such as different discounts, payment targets, and free postage options." }, { "name": "Payment Transaction", "description": "Payment Transaction resource" }, { "name": "Password Reset", "description": "Password Reset represents an one-time access key to change the password of the connected User." }, { "name": "Personal Access Token", "description": "Personal access token which are used to authenticate against API v3." }, { "name": "Pick List", "description": "A picking list contains instructions how to retrieve stock for fulfilling a single or a set of orders" }, { "name": "Point Of Sale", "description": "Point Of Sale (POS) endpoints." }, { "name": "Printer", "description": "An entity represent the physical printer connected to the instance." }, { "name": "Printer Setup", "description": "A printer setup for the wizard." }, { "name": "Product", "description": "Product represents the services or things given company sells in the business." }, { "name": "Product Category", "description": "Product Category represents the Product Category Tree that can be used to categorise products." }, { "name": "Product Free Field", "description": "40 product free fields can be used and individually labeled." }, { "name": "Product Import", "description": "Management of various ways of importing products into the system." }, { "name": "Product Media", "description": "Images of a product" }, { "name": "Product Tag", "description": "Product resource tags management." }, { "name": "Product Property", "description": "Product properties describe its physical traits." }, { "name": "Product Merchandise Group", "description": "Product merchandise groups." }, { "name": "Production", "description": "Production resource management" }, { "name": "Project", "description": "Project resource." }, { "name": "Provisional Return", "description": "Provisional Return resource." }, { "name": "Purchase Order", "description": "Purchase Orders made at a supplier." }, { "name": "Purchase Price", "description": "PurchasePrices determine the prices used for the purchasing of products." }, { "name": "Query", "description": "Create, manage and export reports and report results based on SQL queries against your data." }, { "name": "Report", "description": "Create, manage and export reports and report results based on SQL queries against your data." }, { "name": "Report Usage", "description": "Provide information about your usage in terms of credits spent." }, { "name": "Report User Access", "description": "Granular user access for reports." }, { "name": "Return", "description": "Return represents incoming shipments from customer to supplier" }, { "name": "Return Reason", "description": "Return reason describes why an item is being returned" }, { "name": "Ruleset", "description": "Provide information about the accessible Analytics Platform features based on the package the license is on." }, { "name": "Sales Channel", "description": "SalesChannel are the configured Shops/Marketplaces." }, { "name": "Sales Channels Product Settings", "description": "Sales Channel Settings inside a product." }, { "name": "Sales Price", "description": "SalesPrices determine the prices used in sales to customers." }, { "name": "Sales Order", "description": "SalesOrders are an outbound orders, meaning that someone has bought from you." }, { "name": "Setting", "description": "Settings represents the application's configurations." }, { "name": "Setting Item", "description": "SettingItems represents settings menu." }, { "name": "Shipping Methods", "description": "Shipping methods" }, { "name": "Stock Movement Types", "description": "Stock movement type" }, { "name": "Supplier", "description": "Suppliers represents an information related to providers of goods the company is managing." }, { "name": "Supplier Tag", "description": "Supplier resource tags management." }, { "name": "System Health", "description": "System Health" }, { "name": "Tax Rates", "description": "Tax Rates resource" }, { "name": "Token", "description": "Valid tokens grant access to API endpoints. You can exchange credentials in POST endpoint to create one." }, { "name": "Ticket", "description": "Tickets (currently only ticket /queues)" }, { "name": "UI Analytics", "description": "Information about instance statistics and insights." }, { "name": "UI Bookmark", "description": "Bookmarks allow saving external resources for a quick access." }, { "name": "UI Calendar", "description": "Calendar hosts resources related to the events scheduled in the company." }, { "name": "UI Query", "description": "Collection of endpoints which return data for BI features in the front end." }, { "name": "UI Search", "description": "Search allows to look for information matching given query and interact with it." }, { "name": "UI SystemMessage", "description": "SystemMessage is an automated status check verifying correct behavior of one of the many modules." }, { "name": "User", "description": "User represents a Xentral account used to access other parts of the system." }, { "name": "User Invitation", "description": "Invites created for new users." }, { "name": "User Email Verification", "description": "User Email Verification" }, { "name": "Storage Location", "description": "Represents the spaces within a warehouse" }, { "name": "Storage Item", "description": "Represent a storage item in a storage location" }, { "name": "Warehouse", "description": "Represents a location with storage space" }, { "name": "Webhook", "description": "Manage webhooks." }, { "name": "Tax Rate", "description": "Represents a tax rate for a product on given day and for given country" }, { "name": "Reporting Settings", "description": "Settings for analytics reporting platform" }, { "name": "Product Label", "description": "Product labels management." } ], "components": { "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer", "description": "Bearer token obtained in POST /tokens endpoint or pregenerated in the system." } } }, "security": [ { "BearerAuth": [] } ], "servers": [ { "url": "https://{xentralId}.xentral.biz", "description": "Your Xentral Instance", "variables": { "xentralId": { "default": "xentral" } } }, { "url": "https://{domain}", "description": "Xentral at a custom domain", "variables": { "domain": { "default": "xentral.com" } } } ], "x-readme": { "samples-languages": [] }, "paths": { "/api/v1/analytics/report": { "get": { "tags": [ "Report" ], "operationId": "analytics.report.list", "summary": "Get list of reports.", "description": "Returns a list of reports (official Xentral reports and custom reports)", "responses": { "200": { "description": "Report response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "post": { "tags": [ "Report" ], "operationId": "analytics.report.create", "summary": "Create report", "description": "Creates a new report and returns the new record", "requestBody": { "description": "Create report request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "report" ], "example": { "report": { "title": "My report", "description": "This is my report", "userId": 1, "sqlString": "SELECT * FROM users", "isFavorite": true, "isReadOnly": false, "collectionId": 1, "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } }, "properties": { "report": { "type": "object", "additionalProperties": false, "required": [ "title", "collectionId" ], "properties": { "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "type": "boolean", "description": "Is report read-only", "example": false }, "collectionId": { "type": "number", "description": "ID of the collection the report belongs to", "example": 1 }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } } } } } }, "examples": { "example": { "summary": "Example report payload", "value": { "report": { "title": "My report", "description": "This is my report", "userId": 1, "sqlString": "SELECT * FROM users", "isFavorite": true, "isReadOnly": false, "collectionId": 1, "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } } } } } } }, "responses": { "200": { "description": "Report response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/report/{id}": { "get": { "tags": [ "Report" ], "operationId": "analytics.report.get", "summary": "Get report by ID", "description": "Returns a single report by ID", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Report response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "patch": { "tags": [ "Report" ], "operationId": "analytics.report.update", "summary": "Update a report", "description": "Updates an existing report specified by its ID and returns the new record", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Create report request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "report" ], "example": { "report": { "title": "My report", "description": "This is my report", "userId": 1, "sqlString": "SELECT * FROM users", "isFavorite": true, "isReadOnly": false, "collectionId": 1, "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } }, "properties": { "report": { "type": "object", "additionalProperties": false, "required": [ "title", "collectionId" ], "properties": { "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "type": "boolean", "description": "Is report read-only", "example": false }, "collectionId": { "type": "number", "description": "ID of the collection the report belongs to", "example": 1 }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } } } } } }, "examples": { "example": { "summary": "Example report payload", "value": { "report": { "title": "My report", "description": "This is my report", "userId": 1, "sqlString": "SELECT * FROM users", "isFavorite": true, "isReadOnly": false, "collectionId": 1, "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } } } } } } }, "responses": { "200": { "description": "Report response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "delete": { "tags": [ "Report" ], "operationId": "analytics.report.delete", "summary": "Delete a report", "description": "Deletes an existing report specified by its ID and returns the deleted record", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/report/{id}/export": { "get": { "tags": [ "Report" ], "operationId": "analytics.report.export.list", "summary": "List all recent report exports", "description": "List all exports for that report. Possible statuses are `success`, `failed`, `running` and `pending`. If status is success, then we also show the download link.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Query execution response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "status", "query", "url", "error", "createdAt", "updatedAt" ], "properties": { "id": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "Query execution ID" }, "status": { "example": "pending", "type": "string", "description": "Query execution status" }, "query": { "example": "SELECT * FROM users", "type": "string", "description": "SQL query" }, "url": { "example": "https://example.com", "type": "string", "description": "URL to download the result" }, "error": { "example": "SQL statement is invalid", "type": "string", "description": "Error message" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } }, "description": "Details of the query execution" } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "post": { "tags": [ "Report" ], "operationId": "analytics.report.export.create", "summary": "Create report export", "description": "Create an export for given report based on the SQL statement that is stored with the report. You can overwrite the stored query parameters by passing new parameters in the request body", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Report query payload", "content": { "application/json": { "schema": { "type": "object", "example": { "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] }, "properties": { "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } } } }, "examples": { "example": { "summary": "Example report query payload", "value": { "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } } } } } }, "responses": { "200": { "description": "Query execution response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "status", "query", "url", "error", "createdAt", "updatedAt" ], "properties": { "id": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "Query execution ID" }, "status": { "example": "pending", "type": "string", "description": "Query execution status" }, "query": { "example": "SELECT * FROM users", "type": "string", "description": "SQL query" }, "url": { "example": "https://example.com", "type": "string", "description": "URL to download the result" }, "error": { "example": "SQL statement is invalid", "type": "string", "description": "Error message" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } }, "description": "Details of the query execution" } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "402": { "description": "Resource can not be accessed because you exceeded the credit limit." }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/analytics/report/{id}/query": { "post": { "tags": [ "Report" ], "operationId": "analytics.report.query", "summary": "Execute a query synchronously", "description": "Execute a stored report query synchronously and get result table. The number of records that you receive as results is limited to a reasonable amount (currently 1000 records). This endpoint is mainly for viewing the data. Use the export endpoints in order to fetch all results.", "requestBody": { "description": "Report query payload", "content": { "application/json": { "schema": { "type": "object", "example": { "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] }, "properties": { "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } } } }, "examples": { "example": { "summary": "Example report query payload", "value": { "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } } } } } }, "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "preview", "in": "query", "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "properties": { "preview": { "type": "boolean", "example": false, "default": false, "description": "If true, only a limited amount of records will be returned, but the request does not cost any credits. If true, all results are returned up to a max number of 500 rows." } } } } ], "responses": { "200": { "description": "Query response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "meta" ], "properties": { "data": { "description": "Generic result response for a query in a table-like structure.", "type": "object", "nullable": true, "additionalProperties": false, "required": [ "header", "rows" ], "properties": { "header": { "type": "array", "items": { "type": "string" } }, "rows": { "type": "array", "items": { "type": "array", "items": { "type": "string" } } } }, "example": { "header": [ "id", "name" ], "rows": [ [ "1", "Alice" ], [ "2", "Bob" ] ] } }, "meta": { "description": "Query meta information.", "type": "object", "additionalProperties": false, "nullable": true, "example": { "query": "SELECT * FROM users", "executionTime": 0.123, "totalResults": 2, "columnTypes": [ "integer", "string" ] }, "properties": { "columnTypes": { "type": "array", "nullable": true, "items": { "type": "string" }, "description": "Derived column types for each column in the result table.", "example": [ "integer", "string" ] }, "executionTime": { "description": "Execution time of the query in seconds.", "example": 0.123, "type": "number", "nullable": true }, "query": { "description": "SQL query that was executed.", "type": "string", "nullable": false, "example": "SELECT * FROM users" }, "totalResults": { "description": "Total number of rows og the result (the returned result is always limited).", "type": "number", "nullable": true, "example": 2 } } } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "402": { "description": "Resource can not be accessed because you exceeded the credit limit." }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/analytics/report/{id}/permalink": { "get": { "tags": [ "Report" ], "operationId": "analytics.report.permalink.get", "summary": "List permalink for report", "description": "List permanent download link for report. You can only have one valid permalink enabled at a time for each report. Creating a new one will invalidate all existing permalinks.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Report permalink response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "reportId": { "example": 1, "type": "number", "description": "ID of the report" }, "validUntil": { "example": "2023-01-01", "type": "string", "format": "date", "description": "Date until the permalink is valid" }, "format": { "example": "csv", "type": "string", "description": "Export format" }, "token": { "example": "TCWfnii9zACLsCZBKSOkx7uyKyPNE8yIxvTmnGTNeoOxI39hCU6d3kQ3sYL8W8qcsI4tM8Eqxv1nPsdZfOjObbOeHSRmprh2rbQ9w8HzwQR6qzPBDVQDamJkU7FaPPxfhGKzVfM7FCapYCE3EZQt5JJUEQ6jFbmzEpIPBaMBtONw4rx2Rt0nijhyeaU5omzSl6Vdm8TsNakkynalV36SnZuneuw9OB4RULEXHs2SeqhLt7BI61JpL4jxfeX5b6lI", "type": "string", "description": "Random string token" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "post": { "tags": [ "Report" ], "operationId": "analytics.report.permalink.create", "summary": "Create permalink for report", "description": "Create permanent download link for report. You can only have one valid permalink enabled at a time for each report. Creating a new one will invalidate all existing permalinks.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Payload for creating permalink for report", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "permalink" ], "example": { "permalink": { "validUntil": "2023-01-01", "format": "csv" } }, "properties": { "permalink": { "type": "object", "additionalProperties": false, "properties": { "validUntil": { "example": "2023-01-01", "type": "string", "format": "date", "description": "Date until the permalink is valid" }, "format": { "example": "csv", "type": "string", "description": "Export format" } } } } }, "examples": { "example": { "summary": "Example of a report permalink", "value": { "permalink": { "validUntil": "2023-01-01", "format": "csv" } } } } } } }, "responses": { "200": { "description": "Report permalink response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "reportId": { "example": 1, "type": "number", "description": "ID of the report" }, "validUntil": { "example": "2023-01-01", "type": "string", "format": "date", "description": "Date until the permalink is valid" }, "format": { "example": "csv", "type": "string", "description": "Export format" }, "token": { "example": "TCWfnii9zACLsCZBKSOkx7uyKyPNE8yIxvTmnGTNeoOxI39hCU6d3kQ3sYL8W8qcsI4tM8Eqxv1nPsdZfOjObbOeHSRmprh2rbQ9w8HzwQR6qzPBDVQDamJkU7FaPPxfhGKzVfM7FCapYCE3EZQt5JJUEQ6jFbmzEpIPBaMBtONw4rx2Rt0nijhyeaU5omzSl6Vdm8TsNakkynalV36SnZuneuw9OB4RULEXHs2SeqhLt7BI61JpL4jxfeX5b6lI", "type": "string", "description": "Random string token" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "delete": { "tags": [ "Report" ], "operationId": "analytics.report.permalink.delete", "summary": "Invalidate permalink for report", "description": "Invalidate permanent download link for downloading report results", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/report/{id}/permalink/{token}": { "get": { "tags": [ "Report" ], "operationId": "analytics.report.permalink.download", "summary": "Download report via permalink", "description": "Download latest report export result via permalink. Using a permalink will allow anyone with the link to view the report. We recommend to use other export features for exporting data.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "token", "required": true, "description": "A randomly generated, 256 characters long, alphanumeric string.", "schema": { "type": "string", "example": "TCWfnii9zACLsCZBKSOkx7uyKyPNE8yIxvTmnGTNeoOxI39hCU6d3kQ3sYL8W8qcsI4tM8Eqxv1nPsdZfOjObbOeHSRmprh2rbQ9w8HzwQR6qzPBDVQDamJkU7FaPPxfhGKzVfM7FCapYCE3EZQt5JJUEQ6jFbmzEpIPBaMBtONw4rx2Rt0nijhyeaU5omzSl6Vdm8TsNakkynalV36SnZuneuw9OB4RULEXHs2SeqhLt7BI61JpL4jxfeX5b6lI", "description": "Random string token." } } ], "responses": { "202": { "description": "Request accepted. URL token is valid. No data can be provided yet, but data processing got triggered.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "status", "query", "url", "error", "createdAt", "updatedAt" ], "properties": { "id": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "Query execution ID" }, "status": { "example": "pending", "type": "string", "description": "Query execution status" }, "query": { "example": "SELECT * FROM users", "type": "string", "description": "SQL query" }, "url": { "example": "https://example.com", "type": "string", "description": "URL to download the result" }, "error": { "example": "SQL statement is invalid", "type": "string", "description": "Error message" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "301": { "description": "Permanent redirect response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the location you are redirected to" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "402": { "description": "Resource can not be accessed because you exceeded the credit limit." }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/analytics/report/{id}/schedule": { "get": { "tags": [ "Report" ], "operationId": "analytics.report.schedule.list", "summary": "List schedules for report", "description": "List all scheduled report exports", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Report schedule response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "reportId", "uuid", "crontab", "exportType", "createdAt", "updatedAt" ], "properties": { "reportId": { "example": 1, "type": "number", "description": "ID of the report" }, "crontab": { "example": "0 0 * * *", "type": "string", "description": "Crontab expression for scheduling the report" }, "exportType": { "example": "csv", "type": "string", "description": "Export type" }, "emailList": { "example": [ "email@xentral.com", "email1@xentral.com" ], "type": "array", "items": { "type": "string", "example": "email@xentral.com", "description": "List of email addresses to send the report to" } }, "uuid": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "UUID of the report schedule" }, "lastExecution": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "nullable": true, "description": "Last execution time" }, "nextExecution": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Next execution time" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "post": { "tags": [ "Report" ], "operationId": "analytics.report.schedule.create", "summary": "Create schedule for report", "description": "Create scheduled export for report", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Payload for creating report schedule", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "schedule" ], "properties": { "schedule": { "type": "object", "additionalProperties": false, "required": [ "crontab", "exportType" ], "properties": { "crontab": { "example": "0 0 * * *", "type": "string", "description": "Crontab expression for scheduling the report" }, "exportType": { "example": "email", "type": "string", "description": "Export type" }, "format": { "example": "csv", "type": "string", "description": "Export format" }, "emailList": { "example": [ "email@xentral.com", "email1@xentral.com" ], "type": "array", "description": "List of email addresses to send the report to", "items": { "type": "string", "example": "email@xentral.com", "description": "Email address" } } } } } }, "examples": { "example": { "summary": "Example of a report schedule", "value": { "schedule": { "crontab": "0 0 * * *", "exportType": "email", "format": "csv", "emailList": [ "email@xentral.com", "email1@xentral.com" ] } } } } } } }, "responses": { "200": { "description": "Report schedule response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "reportId", "uuid", "crontab", "exportType", "createdAt", "updatedAt" ], "properties": { "reportId": { "example": 1, "type": "number", "description": "ID of the report" }, "crontab": { "example": "0 0 * * *", "type": "string", "description": "Crontab expression for scheduling the report" }, "exportType": { "example": "csv", "type": "string", "description": "Export type" }, "emailList": { "example": [ "email@xentral.com", "email1@xentral.com" ], "type": "array", "items": { "type": "string", "example": "email@xentral.com", "description": "List of email addresses to send the report to" } }, "uuid": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "UUID of the report schedule" }, "lastExecution": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "nullable": true, "description": "Last execution time" }, "nextExecution": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Next execution time" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/report/{id}/schedule/{uuid}": { "delete": { "tags": [ "Report" ], "operationId": "analytics.report.schedule.delete", "summary": "Delete schedule for report", "description": "Delete scheduled report export", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "uuid", "required": true, "description": "The resource's UUID identifier.", "schema": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/collection": { "get": { "tags": [ "Collection" ], "operationId": "analytics.collection.get", "summary": "Get list of collections", "description": "Returns a list of report collections (official Xentral collections and custom collections).", "responses": { "200": { "description": "Collection response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "example": 1, "type": "number", "description": "Collection ID" }, "name": { "example": "My collection", "type": "string", "description": "Collection name" }, "description": { "example": "This is a collection", "type": "string", "description": "Collection description" }, "reports": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "post": { "tags": [ "Collection" ], "operationId": "analytics.collection.create", "summary": "Create collection", "description": "Creates a new collection and returns the new record", "requestBody": { "description": "Create collection request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "collection" ], "example": { "collection": { "name": "My collection", "description": "This is a collection" } }, "properties": { "collection": { "type": "object", "additionalProperties": false, "required": [ "name" ], "example": { "name": "My collection", "description": "This is a collection" }, "properties": { "name": { "example": "My collection", "type": "string", "description": "Collection name" }, "description": { "example": "This is a collection", "type": "string", "description": "Collection description" } } } } }, "examples": { "example": { "summary": "Example of creating a collection", "value": { "collection": { "name": "My collection", "description": "This is a collection" } } } } } } }, "responses": { "200": { "description": "Collection response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "example": 1, "type": "number", "description": "Collection ID" }, "name": { "example": "My collection", "type": "string", "description": "Collection name" }, "description": { "example": "This is a collection", "type": "string", "description": "Collection description" }, "reports": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/collection/{id}": { "get": { "tags": [ "Collection" ], "operationId": "analytics.collection.list", "summary": "Get a collection", "description": "Returns a single collections by ID.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Collection response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "example": 1, "type": "number", "description": "Collection ID" }, "name": { "example": "My collection", "type": "string", "description": "Collection name" }, "description": { "example": "This is a collection", "type": "string", "description": "Collection description" }, "reports": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "patch": { "tags": [ "Collection" ], "operationId": "analytics.collection.update", "summary": "Update a collection", "description": "Updates an existing collection specified by its ID and returns the new record", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Update collection request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "collection" ], "example": { "collection": { "name": "My collection", "description": "This is a collection" } }, "properties": { "collection": { "type": "object", "additionalProperties": false, "required": [ "name" ], "example": { "name": "My collection", "description": "This is a collection" }, "properties": { "name": { "example": "My collection", "type": "string", "description": "Collection name" }, "description": { "example": "This is a collection", "type": "string", "description": "Collection description" } } } } }, "examples": { "example": { "summary": "Example of updating a collection", "value": { "collection": { "name": "My collection", "description": "This is a collection" } } } } } } }, "responses": { "200": { "description": "Collection response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "example": 1, "type": "number", "description": "Collection ID" }, "name": { "example": "My collection", "type": "string", "description": "Collection name" }, "description": { "example": "This is a collection", "type": "string", "description": "Collection description" }, "reports": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "title", "sqlString", "collectionId" ], "properties": { "id": { "type": "number", "description": "Report ID", "example": 1 }, "title": { "type": "string", "description": "Report title", "example": "My report" }, "description": { "type": "string", "description": "Report description", "example": "This is my report" }, "userId": { "type": "number", "description": "User ID of the report creator", "example": 1 }, "sqlString": { "type": "string", "description": "SQL query string", "example": "SELECT * FROM users" }, "isFavorite": { "type": "boolean", "description": "Is report marked as favorite", "example": true }, "isReadOnly": { "example": false, "type": "boolean", "description": "Is report read-only" }, "collectionId": { "example": 1, "type": "number", "description": "ID of the collection the report belongs to" }, "lastEditedBy": { "example": "John Doe", "type": "string", "description": "User who last edited the report" }, "tags": { "type": "array", "example": [ { "id": 1, "name": "Official", "description": "This is my tag", "palette": "default", "isOfficial": true, "createdAt": "2023-01-01T00:00:00+00:00", "updatedAt": "2023-01-01T00:00:00+00:00" } ], "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "number", "description": "Tag ID", "example": 1 }, "name": { "type": "string", "description": "Tag name", "example": "Official" }, "description": { "type": "string", "description": "Tag description", "example": "This is my tag" }, "palette": { "type": "string", "enum": [ "default", "warning", "success", "danger", "primary" ], "description": "The palette value of the tag", "example": "default" }, "isOfficial": { "type": "boolean", "description": "Whether the tag is used for official Xentral reports", "example": true }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } } } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "delete": { "tags": [ "Collection" ], "operationId": "analytics.collection.delete", "summary": "Delete a collection", "description": "Deletes an existing collection specified by its ID and returns the deleted record", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/documentation": { "get": { "tags": [ "Documentation" ], "operationId": "analytics.documentation.list", "summary": "Get list of documentation", "description": "Returns a list of table documentation for each queryable table in the report builder", "responses": { "200": { "description": "Documentation response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "label", "shortDescription", "longDescription", "owners", "columns" ], "properties": { "label": { "example": "users", "type": "string", "description": "Table name" }, "shortDescription": { "example": "Users table", "type": "string", "description": "Short description of the table" }, "longDescription": { "example": "This table contains information about users", "type": "string", "description": "Long description of the table" }, "owners": { "type": "array", "items": { "example": "john.doe@xentral.com", "type": "string", "description": "Owner name or email" } }, "columns": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "example": "id", "type": "string", "description": "Column name" }, "description": { "example": "Unique identifier", "type": "string", "description": "Column description" }, "type": { "example": "integer", "type": "string", "description": "Column type" }, "source": { "example": "users.id", "type": "string", "description": "Column source" } } } }, "sources": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string", "description": "Source name" } } } } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/query": { "post": { "tags": [ "Query" ], "operationId": "analytics.query", "summary": "Execute a query synchronously", "description": "Execute a query synchronously on the Analytics platform and get result table (Redshift dialect). The number of records that you receive as results is limited to a reasonable amount. This endpoint is mainly for viewing the data. Use the export endpoints in order to fetch all results.", "requestBody": { "description": "Query payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "query" ], "example": { "query": "SELECT * FROM users", "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] }, "properties": { "query": { "type": "string", "description": "SQL query to execute", "example": "SELECT * FROM users" }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } } } }, "examples": { "example": { "summary": "Example SQL query payload", "value": { "query": "SELECT * FROM users", "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } } } } } }, "parameters": [ { "name": "preview", "in": "query", "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "properties": { "preview": { "type": "boolean", "example": false, "default": false, "description": "If true, only a limited amount of records will be returned, but the request does not cost any credits. If true, all results are returned up to a max number of 500 rows." } } } } ], "responses": { "200": { "description": "Query response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "meta" ], "properties": { "data": { "description": "Generic result response for a query in a table-like structure.", "type": "object", "nullable": true, "additionalProperties": false, "required": [ "header", "rows" ], "properties": { "header": { "type": "array", "items": { "type": "string" } }, "rows": { "type": "array", "items": { "type": "array", "items": { "type": "string" } } } }, "example": { "header": [ "id", "name" ], "rows": [ [ "1", "Alice" ], [ "2", "Bob" ] ] } }, "meta": { "description": "Query meta information.", "type": "object", "additionalProperties": false, "nullable": true, "example": { "query": "SELECT * FROM users", "executionTime": 0.123, "totalResults": 2, "columnTypes": [ "integer", "string" ] }, "properties": { "columnTypes": { "type": "array", "nullable": true, "items": { "type": "string" }, "description": "Derived column types for each column in the result table.", "example": [ "integer", "string" ] }, "executionTime": { "description": "Execution time of the query in seconds.", "example": 0.123, "type": "number", "nullable": true }, "query": { "description": "SQL query that was executed.", "type": "string", "nullable": false, "example": "SELECT * FROM users" }, "totalResults": { "description": "Total number of rows og the result (the returned result is always limited).", "type": "number", "nullable": true, "example": 2 } } } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "402": { "description": "Resource can not be accessed because you exceeded the credit limit." }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/analytics/query/export": { "post": { "tags": [ "Query" ], "operationId": "analytics.query.export.create", "summary": "Create query export", "description": "Create a query export. This starts a query execution. The query will be executed asynchronously. You can check the status of the query using the `GET /api/analytics/query/export/{uuid}` endpoint.", "requestBody": { "description": "Query payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "query" ], "example": { "query": "SELECT * FROM users", "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] }, "properties": { "query": { "type": "string", "description": "SQL query to execute", "example": "SELECT * FROM users" }, "parameters": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "defaultValue" ], "example": { "name": "date", "type": "string", "defaultValue": "2021-01-01" }, "properties": { "name": { "type": "string", "description": "Parameter name", "example": "date" }, "type": { "type": "string", "description": "Parameter type", "example": "string" }, "defaultValue": { "type": "string", "description": "Default value for parameter you want to store", "example": "2021-01-01" } } } } } }, "examples": { "example": { "summary": "Example SQL query payload", "value": { "query": "SELECT * FROM users", "parameters": [ { "name": "date", "type": "string", "defaultValue": "2021-01-01" } ] } } } } } }, "responses": { "200": { "description": "Query execution response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "status", "query", "url", "error", "createdAt", "updatedAt" ], "properties": { "id": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "Query execution ID" }, "status": { "example": "pending", "type": "string", "description": "Query execution status" }, "query": { "example": "SELECT * FROM users", "type": "string", "description": "SQL query" }, "url": { "example": "https://example.com", "type": "string", "description": "URL to download the result" }, "error": { "example": "SQL statement is invalid", "type": "string", "description": "Error message" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } }, "description": "Details of the query execution" } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "402": { "description": "Resource can not be accessed because you exceeded the credit limit." }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Query" ], "operationId": "analytics.query.export.list", "summary": "List recent query exports", "description": "Get a list of recent query exports and their status. Possible statuses are `success`, `failed`, `running` and `pending`. If status is success, then we also show the download link.", "responses": { "200": { "description": "Query execution response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "status", "query", "url", "error", "createdAt", "updatedAt" ], "properties": { "id": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "Query execution ID" }, "status": { "example": "pending", "type": "string", "description": "Query execution status" }, "query": { "example": "SELECT * FROM users", "type": "string", "description": "SQL query" }, "url": { "example": "https://example.com", "type": "string", "description": "URL to download the result" }, "error": { "example": "SQL statement is invalid", "type": "string", "description": "Error message" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } }, "description": "Details of the query execution" } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/query/export/{uuid}": { "get": { "tags": [ "Query" ], "operationId": "analytics.query.export.getById", "summary": "List query export by ID", "description": "Get specific query export by ID which (if completed successfully) contains a download link to a file in CSV format", "parameters": [ { "in": "path", "name": "uuid", "required": true, "description": "The resource's UUID identifier.", "schema": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" } } ], "responses": { "200": { "description": "Query execution response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "status", "query", "url", "error", "createdAt", "updatedAt" ], "properties": { "id": { "example": "123e4567-e89b-12d3-a456-426614174000", "type": "string", "format": "uuid", "description": "Query execution ID" }, "status": { "example": "pending", "type": "string", "description": "Query execution status" }, "query": { "example": "SELECT * FROM users", "type": "string", "description": "SQL query" }, "url": { "example": "https://example.com", "type": "string", "description": "URL to download the result" }, "error": { "example": "SQL statement is invalid", "type": "string", "description": "Error message" }, "createdAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Creation time" }, "updatedAt": { "example": "2023-01-01T00:00:00+00:00", "type": "string", "format": "date-time", "description": "Last update time" } } }, "description": "Details of the query execution" } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/credit": { "get": { "tags": [ "Credit" ], "operationId": "analytics.credit.get", "summary": "Get credit information", "description": "Get credit information regarding Report module usage.", "responses": { "200": { "description": "Shows the amount of used credits for this month as well as the total amount of credits available", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "example": { "data": [ { "totalCredits": 30, "usedCredits": 5 } ] }, "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "usedCredits", "totalCredits" ], "properties": { "totalCredits": { "type": "number", "example": 1, "description": "Total amount of credits available" }, "usedCredits": { "type": "number", "example": 1, "description": "Amount of used credits for this month" } } } } } } } } }, "400": { "description": "Error response with message", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "message" ], "properties": { "message": { "description": "Error message", "type": "string", "example": "SQL statement is invalid" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/reportUsage": { "get": { "tags": [ "Report Usage" ], "operationId": "analytics.reportUsage.get", "summary": "Get report usage", "description": "Get report usage which shows the history of chargeable requests made within the given timeframe", "parameters": [ { "in": "query", "name": "filter", "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "properties": { "start": { "type": "string", "format": "date", "description": "Start date of the usage records", "example": "2024-01-01" }, "end": { "type": "string", "format": "date", "description": "End date of the usage records", "example": "2024-01-31" } } } } ], "responses": { "200": { "description": "Shows all records of chargeable requests made within the given timeframe", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "example": { "data": [ { "id": 1, "endpoint": "report/123/export", "timestamp": "2024-01-01T00:00:00+00:00", "identifier": "My Report", "query": "SELECT * FROM table" } ] }, "properties": { "data": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "endpoint", "timestamp", "identifier", "query" ], "properties": { "id": { "type": "number", "example": 1, "description": "Unique identifier of the record" }, "endpoint": { "type": "string", "example": "report/123/export", "description": "Endpoint of the request" }, "timestamp": { "type": "string", "example": "2024-01-01T00:00:00+00:00", "format": "date-time", "description": "Timestamp of the request" }, "identifier": { "type": "string", "example": "My Report", "description": "Identifier of the item, which is the report name or 'Custom Query' for queries" }, "query": { "type": "string", "example": "SELECT * FROM table", "description": "SQL query that was executed" } } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/analytics/settings": { "get": { "tags": [ "Reporting Settings" ], "operationId": "analytics.settings.get", "summary": "Get settings", "description": "Returns current settings or default settings if none exist", "responses": { "200": { "description": "Report settings response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "nullable": true, "maxItems": 1, "items": { "type": "object", "additionalProperties": false, "required": [ "delimiter" ], "properties": { "delimiter": { "type": "string", "description": "The delimiter character used for CSV exports", "example": ",", "minLength": 1, "maxLength": 1 } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "patch": { "tags": [ "Reporting Settings" ], "operationId": "analytics.settings.update", "summary": "Update settings", "description": "Updates the current settings", "requestBody": { "description": "Update settings request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "delimiter" ], "properties": { "delimiter": { "type": "string", "description": "The delimiter character used for CSV exports", "example": ",", "minLength": 1, "maxLength": 1 } } }, "examples": { "example": { "summary": "Example of updating settings", "value": { "delimiter": ";" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/creditNotes": { "post": { "tags": [ "Credit Note" ], "operationId": "creditNote.create", "summary": "Create credit note", "description": "Creates a credit note", "requestBody": { "description": "Create a credit note object", "content": { "application/json": { "schema": { "type": "object", "required": [ "invoice" ], "additionalProperties": false, "properties": { "invoice": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "documentNumber": { "type": "string", "minLength": 1, "maxLength": 35 } } }, "examples": { "Create credit not from an invoice": { "value": { "invoice": { "id": "1337" } } }, "Create credit not from an invoice with a document number": { "value": { "invoice": { "id": "1337" }, "documentNumber": "415263" } } } }, "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "required": [ "invoice" ], "additionalProperties": false, "properties": { "invoice": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "documentNumber": { "type": "string", "minLength": 1, "maxLength": 35 } } }, "examples": { "Create credit not from an invoice": { "value": { "invoice": { "id": "1337" } } }, "Create credit not from an invoice with a document number": { "value": { "invoice": { "id": "1337" }, "documentNumber": "415263" } } } }, "application/vnd.xentral.fromreturn+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "return": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "isApproved": { "type": "boolean", "default": false }, "isPaid": { "type": "boolean", "default": false } } }, "examples": { "return": { "value": { "return": { "id": "1337" }, "isApproved": true, "isPaid": false } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Credit Note" ], "operationId": "creditNote.list", "summary": "List credit notes", "description": "Returns a collection with all credit notes.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "search", "id", "creditNote", "date", "status", "customerName", "customerNumber", "country", "projectId", "projectName", "projectAbbr", "paymentMethod", "paymentStatus", "amount", "currency" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } ] } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "creditNote", "date", "customerName", "customerNumber", "country", "project", "paymentMethod", "amount", "currency", "paymentStatus", "status" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "x-description-missing": true, "type": "string", "nullable": true, "example": "2024-900000" }, "date": { "x-description-missing": true, "type": "string", "format": "date", "example": "2024-05-29" }, "status": { "x-description-missing": true, "type": "string", "enum": [ "approved", "sent", "created", "closed", "canceled" ], "example": "created" }, "amount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": false, "required": [ "amount", "currencyCode" ], "properties": { "amount": { "type": "string" }, "currencyCode": { "type": "string" } }, "example": { "amount": "142.78", "currencyCode": "EUR" } }, "invoice": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "number" ], "properties": { "number": { "type": "string" } }, "example": { "number": "2022-400085" } }, "address": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "name", "customerNumber", "country" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "customerNumber": { "type": "string" }, "country": { "type": "string" } }, "example": { "id": "18", "name": "Richard E.", "customerNumber": "10011", "country": "DE" } }, "project": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "name", "abbreviation" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "abbreviation": { "type": "string" } }, "example": { "id": "5", "name": "Amazon FBM", "abbreviation": "FBM" } }, "payment": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "method", "status" ], "properties": { "method": { "type": "string" }, "status": { "type": "string" } }, "example": { "method": "shopify_payments", "status": "offen" } }, "paymentTransaction": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "paymentStatus" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "paymentStatus": { "type": "string" } }, "example": { "id": "2", "paymentStatus": "recorded" } }, "updatedBy": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2021-12-15T11:31:44+01:00" }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } }, "text/csv": { "schema": { "type": "string" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/creditNotes/{id}": { "get": { "tags": [ "Credit Note" ], "operationId": "creditNote.view", "summary": "View credit note", "description": "Returns details of a single credit note.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "x-description-missing": true, "type": "string", "nullable": true, "example": "9000000" }, "date": { "x-description-missing": true, "type": "string", "format": "date", "example": "2021-11-08" }, "createdAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2021-12-09T10:16:07+01:00" }, "createdBy": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "name" ], "nullable": true, "properties": { "name": { "type": "string" } }, "example": { "name": "Administrator" } }, "sentAt": { "x-description-missing": true, "type": "string", "format": "date-time", "nullable": true, "example": "2021-12-09T10:19:18+01:00" }, "sentBy": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "name" ], "nullable": true, "properties": { "name": { "type": "string" } }, "example": { "name": "Administrator" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2023-01-13T10:43:58+01:00" }, "grossValue": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "netValue": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "costCenter": { "x-description-missing": true, "type": "string", "example": "41000" }, "status": { "x-description-missing": true, "type": "string", "enum": [ "approved", "sent", "created", "closed", "canceled" ], "example": "sent" }, "project": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "2", "name": "B2C" } }, "customer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1", "name": "John Doe" } }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "externalOrderReference": { "x-description-missing": true, "type": "string", "nullable": true, "example": "1005" }, "devCustomer": { "x-description-missing": true, "type": "string", "nullable": true, "example": "dev" }, "billingAddress": { "type": "object", "description": "Billing address of the customer.", "additionalProperties": false, "required": [ "name", "contactPerson", "department", "subdivision", "street", "additionalDetails", "city", "zipCode", "country" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string", "nullable": true }, "subdivision": { "type": "string", "nullable": true }, "street": { "type": "string" }, "additionalDetails": { "type": "string", "nullable": true }, "city": { "type": "string" }, "zipCode": { "type": "string" }, "country": { "type": "string", "pattern": "[A-Z]{2}" }, "email": { "type": "string", "nullable": true } }, "example": { "id": "1", "name": "John Doe", "contactPerson": "", "department": "", "subdivision": "", "street": "Street 10", "additionalDetails": "", "city": "Berlin", "zipCode": "10101", "country": "DE" } }, "paymentMethodName": { "x-description-missing": true, "type": "string", "example": "invoice" }, "paymentStatus": { "type": "string", "description": "Status of the payment. Value `unknown` is displayed when a status from database cannot be identified. Value `unknown` cannot be used when creating or updating statuses (POST or PATCH endpoints)", "enum": [ "pending", "paid", "partlyPaid", "canceled", "partialCancellation", "badDebt", "debited", "unknown" ], "example": "pending" }, "gln": { "x-description-missing": true, "type": "string", "nullable": true, "example": "12345" }, "taxation": { "x-description-missing": true, "type": "number", "example": 0 }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "number" }, "position": { "type": "number" }, "salesOrderPosition": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "createdAt": { "type": "string", "format": "date-time" }, "productId": { "type": "number" }, "productNumber": { "type": "string" }, "description": { "type": "string" }, "quantity": { "type": "number" }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "vatCategory": { "type": "string" }, "taxRate": { "type": "number", "format": "float" }, "discount": { "type": "number", "format": "float", "nullable": true } } } } }, "example": { "id": "125", "number": "9000110", "date": "2022-02-03", "createdAt": "2022-02-03T10:18:40+01:00", "createdBy": { "name": "John Doe" }, "sentAt": "2022-02-03T10:19:31+01:00", "sentBy": { "name": "John Doe" }, "updatedAt": "2022-02-03T10:19:34+01:00", "grossValue": { "amount": "50.00", "currency": "EUR" }, "netValue": { "amount": "42.02", "currency": "EUR" }, "costCenter": "", "status": "sent", "tags": [], "project": { "id": "6", "name": "Shopware" }, "customer": { "id": "3632", "name": "John Doe" }, "externalOrderReference": "62720", "devCustomer": "", "billingAddress": { "id": "1", "name": "John Doe", "contactPerson": "", "department": "", "subdivision": "", "street": "Street 10", "additionalDetails": "", "city": "Berlin", "zipCode": "10101", "country": "DE" }, "paymentMethodName": "invoice", "paymentStatus": "pending", "gln": "12345", "taxation": 0, "positions": [ { "id": 418, "position": 1, "salesOrderPosition": { "id": "16216" }, "createdAt": "2022-02-03T10:18:40+01:00", "productId": 1689, "productNumber": "FR5248977", "description": "Article 1", "quantity": 1, "price": { "amount": "47.05", "currency": "EUR" }, "vatCategory": "normal", "taxRate": 0, "discount": 0 } ] } } } } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Credit Note" ], "operationId": "creditNote.delete", "summary": "Delete single credit note", "description": "Deletes a single credit note resource identified by its URI", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Credit Note" ], "operationId": "creditNote.update", "summary": "Update single credit note", "description": "Update single credit note", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Update single credit note", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "date", "costCenter", "project", "customer", "tags", "externalOrderReference", "devCustomer", "billingAddress", "paymentMethodName", "gln", "taxation" ], "properties": { "date": { "type": "string", "format": "date" }, "costCenter": { "type": "string" }, "project": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customer": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "tags": { "type": "array", "items": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } }, "externalOrderReference": { "type": "string", "nullable": true }, "devCustomer": { "type": "string", "nullable": true }, "billingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "contactPerson", "department", "subdivision", "street", "additionalDetails", "city", "zipCode", "country" ], "nullable": true, "properties": { "name": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string", "nullable": true }, "subdivision": { "type": "string", "nullable": true }, "street": { "type": "string" }, "additionalDetails": { "type": "string", "nullable": true }, "city": { "type": "string" }, "zipCode": { "type": "string" }, "country": { "type": "string", "pattern": "[A-Z]{2}" } } }, "paymentMethodName": { "type": "string" }, "gln": { "type": "string", "nullable": true }, "taxation": { "type": "string", "pattern": "\\d+" } } }, "examples": { "update CreditNote": { "value": { "date": "2023-01-01", "costCenter": "center", "project": { "id": "32" }, "customer": { "id": "64" }, "tags": [ { "id": "128" } ], "externalOrderReference": "ref", "devCustomer": "dev", "billingAddress": null, "paymentMethodName": "method", "gln": null, "taxation": "7" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/creditNotes/{id}/balance": { "get": { "tags": [ "Credit Note" ], "operationId": "creditNote.balance", "summary": "View Credit Note Balance", "description": "Returns balance information (documents, payments) for a single credit note", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "documents": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "invoices": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "date": { "type": "string", "format": "date-time" } } } }, "creditNotes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "date": { "type": "string", "format": "date-time" } } } } }, "example": { "invoices": [ { "id": "1", "amount": { "amount": "13.37", "currency": "EUR" }, "date": "2023-08-13T14:45:36+02:00" } ], "creditNotes": [ { "id": "1", "amount": { "amount": "13.37", "currency": "EUR" }, "date": "2023-08-13T14:45:36+02:00" } ] } }, "payments": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "reference": { "type": "object", "additionalProperties": false, "description": "Only one of the actually referenced object.", "properties": { "invoice": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "creditNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "payment": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "type": "string", "enum": [ "incoming", "outgoing" ], "nullable": false }, "statementId": { "type": "string" }, "accountName": { "type": "string" }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "date": { "type": "string", "format": "date-time" } } } } } } }, "example": { "documents": { "invoices": [ { "id": "87", "amount": { "amount": "1483.63", "currency": "EUR" }, "date": "2024-03-08T00:00:00+01:00" } ], "creditNotes": [ { "id": "2", "amount": { "amount": "24.99", "currency": "EUR" }, "date": "2024-06-17T00:00:00+02:00" } ] }, "payments": [] } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/creditNotes/{id}/documents": { "get": { "tags": [ "Credit Note" ], "operationId": "creditNote.documents.view", "summary": "View related documents for credit note", "description": "Returns details for related documents of a single credit note.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "salesOrder": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "status": { "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "unknown" ] }, "number": { "type": "string" }, "url": { "type": "string" }, "date": { "type": "string", "format": "date" } } } }, "deliveryNotes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "status": { "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "unknown" ] }, "number": { "type": "string" }, "url": { "type": "string" }, "date": { "type": "string", "format": "date" } } } }, "invoices": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "status": { "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "unknown" ] }, "number": { "type": "string" }, "url": { "type": "string" }, "date": { "type": "string", "format": "date" } } } }, "pdfArchives": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "url": { "type": "string" }, "date": { "type": "string", "format": "datetime" }, "name": { "type": "string" }, "createdBy": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" } } } } } } }, "example": { "salesOrder": [ { "id": "1011", "status": "completed", "number": "200735", "url": "https://example.xentral.biz?module=auftrag&action=pdf&id=1011", "date": "2022-01-23" } ], "deliveryNotes": [ { "id": "729", "status": "sent", "number": "300704", "url": "https://example.xentral.biz?module=lieferschein&action=pdf&id=729", "date": "2022-01-24" } ], "invoices": [ { "id": "125", "status": "canceled", "number": "1200712", "url": "https://example.xentral.biz?module=rechnung&action=pdf&id=125", "date": "2022-01-24" } ], "pdfArchives": [ { "id": "8571", "name": "125_20220203_GS9000110.pdf", "createdBy": { "name": "John Doe" }, "url": "https://example.xentral.biz?module=gutschrift&action=pdffromarchive&id=8571", "date": "2022-02-03 10:19:27" } ] } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/creditNotesTags": { "get": { "tags": [ "Credit Note Tag" ], "operationId": "creditNoteTag.list", "summary": "List Credit Notes tags", "description": "Returns a collection with all credit notes tags.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/customers/{id}": { "delete": { "tags": [ "Customer" ], "operationId": "customer.delete", "summary": "Delete customer", "description": "Delete existing customer", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/customers/{customerId}/contactPerson": { "get": { "tags": [ "Customer - Contact Person" ], "operationId": "customer.contactPerson.getList", "summary": "List contact persons", "description": "Provides a list of contact persons belongs to a customer related to given filters", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "The customer's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "filter", "in": "query", "schema": { "anyOf": [ { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "type", "name", "title", "birthday", "birthdayShowInCalendar", "sendBirthdayCard", "marketingBan", "department", "subDepartment", "position", "street", "additionalStreet", "zip", "city", "state", "country", "phone", "fax", "mobile", "salutation", "email", "group" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "contains", "notContains", "startsWith", "endsWith", "lessThan", "greaterThan", "in", "notIn" ] }, "value": { "oneOf": [ { "type": "string" } ] } } } } ] } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "customerId", "type", "title", "birthday", "birthdayShowInCalendar", "sendBirthdayCard", "marketingBan", "department", "subDepartment", "position", "street", "additionalStreet", "zip", "city", "state", "country", "phone", "fax", "mobile", "salutation", "email", "others", "comment" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "List of contact persons", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type" ], "description": "Contact person object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "customer": { "type": "object", "additionalProperties": false, "required": [ "id" ], "description": "The customer this contact person belongs to", "example": { "id": "1234" }, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "type": { "type": "string", "enum": [ "company", "mr", "mrs", "other" ], "nullable": true, "example": "mr", "description": "Type of contact used later for salutations" }, "name": { "type": "string", "nullable": false, "example": "Firstname Surname", "description": "Full name of the contact person" }, "title": { "type": "string", "nullable": true, "example": "Prof. Dr.", "description": "Additional information used for salutations" }, "birthday": { "description": "Birthday of contact person in default format like 'YYYY-MM-DD", "type": "string", "format": "date", "nullable": true, "example": "2001-01-14" }, "birthdayShowInCalendar": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to show in birthday calendar" }, "sendBirthdayCard": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to send birthday card via serial letter module" }, "marketingBan": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to send serial letters to this contact" }, "department": { "type": "string", "nullable": true, "example": "HR department", "description": "Department of contact if necessary and available" }, "subDepartment": { "type": "string", "nullable": true, "example": "Sub department", "description": "Sub-Department of contact if necessary and available" }, "position": { "type": "string", "nullable": true, "example": "head of purchasing", "description": "Position or responsibility" }, "address": { "type": "object", "additionalProperties": false, "description": "Address information of the contact person", "example": { "street": "Example st. 13", "additionalStreet": "6th floor", "zip": "12345", "city": "city", "state": "Bayern", "country": "Deutschland" }, "properties": { "street": { "type": "string", "nullable": true, "example": "2176 example street", "description": "Street + number of contact address" }, "additionalStreet": { "type": "string", "nullable": true, "example": "6th floor", "description": "Address suffix" }, "zip": { "type": "string", "nullable": true, "example": "12345", "description": "ZIP code of contact address" }, "city": { "type": "string", "nullable": true, "example": "city", "description": "City of contact address" }, "state": { "type": "string", "nullable": true, "example": "Ohio", "description": "Federal state / district of contact address" }, "country": { "type": "string", "nullable": true, "example": "DE", "description": "ISO 3166-1 (Alpha 2) Code of contact address country" } } }, "contact": { "type": "object", "additionalProperties": false, "description": "Contact information of the contact person", "example": { "phone": "+49 555 12345667", "fax": "+49 555 7654321", "mobile": "+49 555 7654321", "salutation": "Dear Dr. Smith, Friend and Supporter", "email": "email@test.com" }, "properties": { "phone": { "type": "string", "nullable": true, "example": "+49 330 12345667", "description": "Phone number of contact address" }, "fax": { "type": "string", "nullable": true, "example": "+49 330 7654321", "description": "Fax number of contact address" }, "mobile": { "type": "string", "nullable": true, "example": "+49 172 7654321", "description": "Mobile number of contact address" }, "salutation": { "type": "string", "nullable": true, "example": "Dear Dr. Smith, Friend and Supporter", "description": "Specifies dedicated salutation" }, "email": { "type": "string", "format": "email", "nullable": true, "example": "contact-person@address-location.tld", "description": "E-mail address" } } }, "groups": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "List of groups this contact person is belong to", "example": [ "17", "22" ] }, "comment": { "type": "string", "nullable": true, "example": "This is a internal comment", "description": "Internal comment for this contact" }, "others": { "type": "string", "nullable": true, "example": "", "description": "Every other information you deem relevant" } }, "example": { "id": "12345", "type": "mrs", "name": "Kathleen Minority", "title": "Prof. Dr. Dr.", "birthday": "2001-02-02", "birthdayShowInCalendar": false, "sendBirthdayCard": true, "marketingBan": false, "department": "Finance", "subDepartment": "Controlling", "position": "Head of Controlling", "address": { "street": "11W 53rd St", "additionalStreet": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US" }, "contact": { "phone": "+1 917 55512345", "fax": "+1 917 55512345-1", "mobile": "+1 800 55554321", "salutation": "Dear Mrs. Minority, my most value customer", "email": "k.m@ny.tld" }, "groups": [ "1", "23", "34" ], "comment": "This is a internal comment for employees eyes only", "others": "some other things necessary to write down blong to this contact ..." } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } }, "post": { "tags": [ "Customer - Contact Person" ], "operationId": "customer.contactPerson.create", "summary": "Create contact person", "description": "Creates new contact person for given customer.", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "The customer's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Create customer contact person object", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "type": { "type": "string", "enum": [ "company", "mr", "mrs", "other" ], "nullable": true, "example": "mr", "description": "Type of contact used later for salutations" }, "name": { "type": "string", "nullable": false, "example": "Firstname Surname", "description": "Full name of the contact person" }, "title": { "type": "string", "nullable": true, "example": "Prof. Dr.", "description": "Additional information used for salutations" }, "birthday": { "type": "string", "format": "date", "nullable": true, "example": "2001-01-14" }, "birthdayShowInCalendar": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to show in birthday calendar" }, "sendBirthdayCard": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to send birthday card via serial letter module" }, "marketingBan": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to send serial letters to this contact" }, "department": { "type": "string", "nullable": true, "example": "HR department", "description": "Department of contact if necessary and available" }, "subDepartment": { "type": "string", "nullable": true, "example": "Sub department", "description": "Sub-Department of contact if necessary and available" }, "position": { "type": "string", "nullable": true, "example": "", "description": "Position or responsibility" }, "address": { "type": "object", "additionalProperties": false, "properties": { "street": { "type": "string", "nullable": true, "example": "2176 example street", "description": "Street + number of contact address" }, "additionalStreet": { "type": "string", "nullable": true, "example": "6th floor", "description": "Address suffix" }, "zip": { "type": "string", "nullable": true, "example": "12345", "description": "ZIP code of contact address" }, "city": { "type": "string", "nullable": true, "example": "city", "description": "City of contact address" }, "state": { "type": "string", "nullable": true, "example": "Ohio", "description": "Federal state / district of contact address" }, "country": { "type": "string", "nullable": true, "example": "DE", "description": "ISO 3166-1 (Alpha 2) Code of contact address country" } } }, "contact": { "type": "object", "additionalProperties": false, "properties": { "phone": { "type": "string", "nullable": true, "example": "+49 330 12345667", "description": "Phone number of contact address" }, "fax": { "type": "string", "nullable": true, "example": "+49 330 7654321", "description": "Fax number of contact address" }, "mobile": { "type": "string", "nullable": true, "example": "+49 172 7654321", "description": "Mobile number of contact address" }, "salutation": { "type": "string", "nullable": true, "example": "Dear Dr. Smith, Friend and Supporter", "description": "Specifies dedicated salutation" }, "email": { "type": "string", "format": "email", "nullable": true, "example": "contact-person@address-location.tld", "description": "E-mail address" } } }, "groups": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "List of groups this contact person is belong to", "example": [ "17", "22" ] }, "comment": { "type": "string", "nullable": true, "example": "This is a internal comment", "description": "Internal comment for this contact" }, "others": { "type": "string", "nullable": true, "example": "", "description": "Every other information you deem relevant" } } }, "examples": { "minimal": { "value": { "name": "Fullname of contact person" } }, "fullQualified": { "value": { "type": "mrs", "name": "Kathleen Minority", "title": "Prof. Dr. Dr.", "birthday": "2001-02-02", "birthdayShowInCalendar": false, "sendBirthdayCard": true, "marketingBan": false, "department": "Finance", "subDepartment": "Controlling", "position": "Head of Controlling", "address": { "street": "11W 53rd St", "additionalStreet": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US" }, "contact": { "phone": "+1 917 55512345", "fax": "+1 917 55512345-1", "mobile": "+1 800 55554321", "salutation": "Dear Mrs. Minority, my most value customer", "email": "k.m@ny.tld" }, "groups": [ "1", "23", "34" ], "comment": "This is a internal comment for employees eyes only", "others": "some other things necessary to write down blong to this contact ..." } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/customers/{customerId}/contactPerson/{contactPersonId}": { "patch": { "tags": [ "Customer - Contact Person" ], "operationId": "customer.contactPerson.update", "summary": "Update contact person", "description": "Updates new contact person for given customer.", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "The customer's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "contactPersonId", "in": "path", "description": "Contact Person ID", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "Update customer contact person object", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "company", "mr", "mrs", "other" ], "nullable": false, "example": "mr", "description": "Type of contact used later for salutations" }, "name": { "type": "string", "minLength": 1, "nullable": false, "example": "Firstname Surname", "description": "Full name of the contact person" }, "title": { "type": "string", "nullable": true, "example": "Prof. Dr.", "description": "Additional information used for salutations" }, "birthday": { "type": "string", "format": "date", "nullable": true, "example": "2001-01-14" }, "birthdayShowInCalendar": { "type": "boolean", "nullable": false, "example": true, "description": "Decides wether or not to show in birthday calendar" }, "sendBirthdayCard": { "type": "boolean", "nullable": false, "example": true, "description": "Decides wether or not to send birthday card via serial letter module" }, "marketingBan": { "type": "boolean", "nullable": false, "example": true, "description": "Decides wether or not to send serial letters to this contact" }, "department": { "type": "string", "nullable": true, "example": "HR department", "description": "Department of contact if necessary and available" }, "subDepartment": { "type": "string", "nullable": true, "example": "Sub department", "description": "Sub-Department of contact if necessary and available" }, "position": { "type": "string", "nullable": true, "example": "", "description": "Position or responsibility" }, "address": { "type": "object", "additionalProperties": false, "properties": { "street": { "type": "string", "nullable": true, "example": "2176 example street", "description": "Street + number of contact address" }, "additionalStreet": { "type": "string", "nullable": true, "example": "6th floor", "description": "Address suffix" }, "zip": { "type": "string", "nullable": true, "example": "12345", "description": "ZIP code of contact address" }, "city": { "type": "string", "nullable": true, "example": "city", "description": "City of contact address" }, "state": { "type": "string", "nullable": true, "example": "Ohio", "description": "Federal state / district of contact address" }, "country": { "type": "string", "nullable": true, "example": "DE", "description": "ISO 3166-1 (Alpha 2) Code of contact address country" } } }, "contact": { "type": "object", "additionalProperties": false, "properties": { "phone": { "type": "string", "nullable": true, "example": "+49 330 12345667", "description": "Phone number of contact address" }, "fax": { "type": "string", "nullable": true, "example": "+49 330 7654321", "description": "Fax number of contact address" }, "mobile": { "type": "string", "nullable": true, "example": "+49 172 7654321", "description": "Mobile number of contact address" }, "salutation": { "type": "string", "nullable": true, "example": "Dear Dr. Smith, Friend and Supporter", "description": "Specifies dedicated salutation" }, "email": { "type": "string", "format": "email", "nullable": true, "example": "contact-person@address-location.tld", "description": "E-mail address" } } }, "groups": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "List of groups this contact person is belong to", "example": [ "17", "22" ] }, "comment": { "type": "string", "nullable": true, "example": "This is a internal comment", "description": "Internal comment for this contact" }, "others": { "type": "string", "nullable": true, "example": "", "description": "Every other information you deem relevant" } } }, "examples": { "full": { "value": { "type": "mrs", "name": "Kathleen Minority", "title": "Prof. Dr. Dr.", "birthday": "2001-02-02", "birthdayShowInCalendar": false, "sendBirthdayCard": true, "marketingBan": false, "department": "Finance", "subDepartment": "Controlling", "position": "Head of Controlling", "address": { "street": "11W 53rd St", "additionalStreet": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US" }, "contact": { "phone": "+1 917 55512345", "fax": "+1 917 55512345-1", "mobile": "+1 800 55554321", "salutation": "Dear Mrs. Minority, my most value customer", "email": "k.m@ny.tld" }, "groups": [ "1", "23", "34" ], "comment": "This is a internal comment for employees eyes only", "others": "some other things necessary to write down blong to this contact ..." } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } }, "delete": { "tags": [ "Customer - Contact Person" ], "operationId": "customer.contactPerson.delete", "summary": "Delete contact person", "description": "Deletes a contact person for given customer.", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "The unique identifier of the customer", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "contactPersonId", "required": true, "description": "The unique identifier of the contact person", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" } } }, "get": { "tags": [ "Customer - Contact Person" ], "operationId": "customer.contactPerson.get", "summary": "View contact person", "description": "Gets a single contact person of given customer by ID.", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "The customer's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "contactPersonId", "required": true, "description": "The contact person's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Contact person object", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "name", "type" ], "description": "Contact person object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "customer": { "type": "object", "additionalProperties": false, "required": [ "id" ], "description": "The customer this contact person belongs to", "example": { "id": "1234" }, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "type": { "type": "string", "enum": [ "company", "mr", "mrs", "other" ], "nullable": true, "example": "mr", "description": "Type of contact used later for salutations" }, "name": { "type": "string", "nullable": false, "example": "Firstname Surname", "description": "Full name of the contact person" }, "title": { "type": "string", "nullable": true, "example": "Prof. Dr.", "description": "Additional information used for salutations" }, "birthday": { "description": "Birthday of contact person in default format like 'YYYY-MM-DD", "type": "string", "format": "date", "nullable": true, "example": "2001-01-14" }, "birthdayShowInCalendar": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to show in birthday calendar" }, "sendBirthdayCard": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to send birthday card via serial letter module" }, "marketingBan": { "type": "boolean", "nullable": true, "example": true, "description": "Decides wether or not to send serial letters to this contact" }, "department": { "type": "string", "nullable": true, "example": "HR department", "description": "Department of contact if necessary and available" }, "subDepartment": { "type": "string", "nullable": true, "example": "Sub department", "description": "Sub-Department of contact if necessary and available" }, "position": { "type": "string", "nullable": true, "example": "head of purchasing", "description": "Position or responsibility" }, "address": { "type": "object", "additionalProperties": false, "description": "Address information of the contact person", "example": { "street": "Example st. 13", "additionalStreet": "6th floor", "zip": "12345", "city": "city", "state": "Bayern", "country": "Deutschland" }, "properties": { "street": { "type": "string", "nullable": true, "example": "2176 example street", "description": "Street + number of contact address" }, "additionalStreet": { "type": "string", "nullable": true, "example": "6th floor", "description": "Address suffix" }, "zip": { "type": "string", "nullable": true, "example": "12345", "description": "ZIP code of contact address" }, "city": { "type": "string", "nullable": true, "example": "city", "description": "City of contact address" }, "state": { "type": "string", "nullable": true, "example": "Ohio", "description": "Federal state / district of contact address" }, "country": { "type": "string", "nullable": true, "example": "DE", "description": "ISO 3166-1 (Alpha 2) Code of contact address country" } } }, "contact": { "type": "object", "additionalProperties": false, "description": "Contact information of the contact person", "example": { "phone": "+49 555 12345667", "fax": "+49 555 7654321", "mobile": "+49 555 7654321", "salutation": "Dear Dr. Smith, Friend and Supporter", "email": "email@test.com" }, "properties": { "phone": { "type": "string", "nullable": true, "example": "+49 330 12345667", "description": "Phone number of contact address" }, "fax": { "type": "string", "nullable": true, "example": "+49 330 7654321", "description": "Fax number of contact address" }, "mobile": { "type": "string", "nullable": true, "example": "+49 172 7654321", "description": "Mobile number of contact address" }, "salutation": { "type": "string", "nullable": true, "example": "Dear Dr. Smith, Friend and Supporter", "description": "Specifies dedicated salutation" }, "email": { "type": "string", "format": "email", "nullable": true, "example": "contact-person@address-location.tld", "description": "E-mail address" } } }, "groups": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "List of groups this contact person is belong to", "example": [ "17", "22" ] }, "comment": { "type": "string", "nullable": true, "example": "This is a internal comment", "description": "Internal comment for this contact" }, "others": { "type": "string", "nullable": true, "example": "", "description": "Every other information you deem relevant" } }, "example": { "id": "12345", "type": "mrs", "name": "Kathleen Minority", "title": "Prof. Dr. Dr.", "birthday": "2001-02-02", "birthdayShowInCalendar": false, "sendBirthdayCard": true, "marketingBan": false, "department": "Finance", "subDepartment": "Controlling", "position": "Head of Controlling", "address": { "street": "11W 53rd St", "additionalStreet": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US" }, "contact": { "phone": "+1 917 55512345", "fax": "+1 917 55512345-1", "mobile": "+1 800 55554321", "salutation": "Dear Mrs. Minority, my most value customer", "email": "k.m@ny.tld" }, "groups": [ "1", "23", "34" ], "comment": "This is a internal comment for employees eyes only", "others": "some other things necessary to write down blong to this contact ..." } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v2/customers": { "get": { "tags": [ "Customer" ], "operationId": "customer.list.v2", "summary": "List customers", "description": "Fetches a list of customers based on provided filters and pagination parameters. This endpoint supports filtering by various customer attributes, as well as cursor and page-based pagination for efficient data retrieval.", "parameters": [ { "name": "filter", "in": "query", "schema": { "anyOf": [ { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "uuid", "number", "customerType", "name", "deviatingCustomerNumber", "firstname", "lastname", "title", "salutation", "birthdate", "department", "subDepartment", "projectId", "phone", "fax", "email", "website", "salesManager", "accountManager", "isLead", "contactPerson" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "lessThan", "greaterThan", "in", "notIn" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } } } ] } }, { "name": "page", "in": "query", "description": "Page-based pagination (Default). Use this or `cursor`, but not both. If both are provided, an exception will be thrown.", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "cursor", "in": "query", "description": "Cursor-based pagination. Use this or `page`, but not both. If both are provided, an exception will be thrown.", "schema": { "type": "object", "additionalProperties": false, "properties": { "nextCursor": { "type": "string", "description": "nextCursor should be base64 encoded string returned from api" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "List of contact persons", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "number", "deviatingCustomerNumber", "customerType", "name", "firstname", "lastname", "salutation", "department", "subDepartment", "projects", "accountManager", "salesManager", "contactDetails", "isLead", "contactPerson" ], "description": "Customer object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "Nullable UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1", "nullable": true }, "number": { "type": "string", "description": "Customer number. if this is not provided default number ranges will be applied automatically", "example": "C700001" }, "deviatingCustomerNumber": { "type": "string", "description": "Deviating Customer number.", "example": "C711223" }, "customerType": { "type": "string", "enum": [ "company", "person" ], "nullable": true, "example": "company", "description": "Type of customer" }, "name": { "type": "string", "nullable": false, "example": "Firstname Surname", "description": "Full name of the customer" }, "firstname": { "type": "string", "nullable": true, "example": "Firstname", "description": "First name of the customer" }, "lastname": { "type": "string", "nullable": true, "example": "Surname", "description": "Last name of the customer" }, "title": { "type": "string", "nullable": true, "example": "Prof. Dr.", "description": "Additional information used for salutations" }, "salutation": { "type": "string", "enum": [ "company", "mr", "mrs", "other" ], "nullable": true, "example": "mr", "description": "Salutation of the customer" }, "birthdate": { "type": "string", "format": "date", "nullable": true, "description": "Birhtdate of customer", "example": "2024-03-01" }, "department": { "type": "string", "nullable": true, "example": "HR department", "description": "Department of customer if necessary and available" }, "subDepartment": { "type": "string", "nullable": true, "example": "Sub department", "description": "Sub-Department of customer if necessary and available" }, "projects": { "type": "array", "description": "List of projects the customer should belong to", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "contactDetails": { "type": "object", "additionalProperties": false, "description": "Contact information of a customer", "properties": { "phone": { "type": "string", "nullable": true, "description": "Phone number of a customer", "example": "+49(30)12093756" }, "fax": { "type": "string", "nullable": true, "description": "Fax number of a customer", "example": "+49(30)12093756-1" }, "email": { "type": "string", "nullable": true, "description": "Email address of a customer", "example": "customer@domain.tpl" }, "website": { "type": "string", "nullable": true, "description": "URL of customers website", "example": "http://company.tpl/members/max.mustermann" }, "additionalData": { "type": "array", "description": "List of additional not default contact data", "items": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "description": "Specific key for customer contact data", "example": "mobile2" }, "value": { "type": "string", "nullable": true, "description": "Value for specified customers contact data key", "example": "+1(800)555 12235" } } } } }, "example": { "phone": "+49 123 4567890", "fax": "+49 123 4567890-1", "email": "name@provider.com", "website": "http://my.website.tld", "additionalData": [ { "label": "Skype", "value": "max.mustermann" } ] } }, "accountManager": { "nullable": true, "type": "object", "additionalProperties": false, "required": [ "id" ], "description": "Account manager of this customer", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "12345" } }, "salesManager": { "nullable": true, "type": "object", "additionalProperties": false, "required": [ "id" ], "description": "Sales manager of this customer", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "12345" } }, "isLead": { "type": "boolean", "description": "Tells if customer is a lead", "example": true }, "contactPerson": { "type": "string", "nullable": true, "example": "Milo Thatch", "description": "Name of contact person" } }, "example": { "id": "17", "uuid": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1", "number": "700001", "deviatingCustomerNumber": "711223", "customerType": "person", "name": "Sample Company ltd.", "firstname": "Max", "lastname": "Mustermann", "title": "Prof. Dr.", "salutation": "mr", "birthdate": "1970-01-01", "department": "Sales", "subDepartment": "Online Sales", "projects": [ { "id": "1337" }, { "id": "1336" } ], "contactDetails": { "phone": "+49 123 4567890", "fax": "+49 123 4567890-1", "email": "name@provider.com", "website": "http://my.website.tld", "additionalData": [ { "label": "Skype", "value": "max.mustermann" } ] }, "accountManager": { "id": "321" }, "salesManager": { "id": "245" }, "isLead": true, "contactPerson": "Milo Thatch" } } }, "extra": { "oneOf": [ { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } }, { "type": "object", "required": [ "totalCount", "cursor" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "cursor": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "nextCursor", "size" ], "additionalProperties": false, "properties": { "nextCursor": { "description": "Cursoer to use for next page request", "type": "string", "example": "NDI=" }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "nextCursor": "MTA=", "size": 10 } } }, "example": { "totalCount": 100, "cursor": { "nextCursor": "MTA=", "size": 10 } } } ] } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } }, "post": { "tags": [ "Customer" ], "operationId": "customer.create.v2", "summary": "Create customer", "description": "Creates a new customer.", "requestBody": { "description": "Request structure to create a customer", "content": { "application/json": { "schema": { "type": "object", "properties": { "customerType": { "type": "string", "nullable": true, "description": "Discriminator to create a company. If 'company' is used then 'name' is required. If 'person' is used then 'firstname' and 'lastname' are required.", "enum": [ "person", "company" ] }, "firstname": { "type": "string", "nullable": true, "description": "Firstname of customer", "example": "Max" }, "lastname": { "type": "string", "nullable": true, "description": "Lastname of customer", "example": "Mustmermann" }, "name": { "type": "string", "nullable": true, "description": "Name of the company", "example": "General Cosmic Company" }, "title": { "type": "string", "nullable": true, "description": "Title prefix for customer name. It will be used for communication.", "example": "Prof. Dr." }, "birthdate": { "type": "string", "format": "date", "nullable": true, "description": "Birhtdate of customer", "example": "2024-03-01" }, "number": { "type": "string", "nullable": true, "description": "Customer number. if this is not provided default number ranges will be applied automatically", "example": "C700001" }, "deviatingCustomerNumber": { "type": "string", "nullable": true, "description": "Deviating Customer number.", "example": "C711223" }, "salutation": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ], "nullable": true, "description": "Decide kind of person if necessary. This value is e.g. responsible to apply automatic rules for salutation", "example": "mr" }, "salutationPhrase": { "type": "string", "nullable": true, "description": "You can specify a salutation how a customer/company should be addressed and override automatic rules.", "example": "Dear Sir" }, "department": { "type": "string", "nullable": true, "description": "Specify a department for customer", "example": "Sales" }, "subDepartment": { "type": "string", "nullable": true, "description": "Specify a sub-department for customer", "example": "Onlines Sales" }, "project": { "type": "object", "additionalProperties": false, "description": "Specify project customer should belong to", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "contactDetails": { "type": "object", "additionalProperties": false, "description": "Contact information of a customer", "properties": { "phone": { "type": "string", "nullable": true, "description": "Phone number of a customer", "example": "+49(30)12093756" }, "mobile": { "type": "string", "nullable": true, "description": "Mobile number of a customer", "example": "+49(172)56565656" }, "fax": { "type": "string", "nullable": true, "description": "Fax number of a customer", "example": "+49(30)12093756-1" }, "email": { "type": "string", "nullable": true, "description": "Email address of a customer", "example": "customer@domain.tpl" }, "website": { "type": "string", "nullable": true, "description": "URL of customers website" }, "additionalData": { "type": "array", "description": "List of additional not default contact data", "items": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "description": "Specific key for customer contact data", "example": "mobile2" }, "value": { "type": "string", "nullable": true, "description": "Value for specified customers contact data key", "example": "+1(800)555 12235" } } } } } }, "accountManager": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "salesManager": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "isLead": { "type": "boolean", "nullable": false, "description": "Decides if customer is a lead", "example": true }, "groups": { "type": "array", "nullable": true, "items": { "type": "integer" } } } }, "examples": { "Create Person Customer - minimal": { "value": { "customerType": "person", "firstname": "Max", "lastname": "Mustermann" } }, "Create Person Customer - fully qualified": { "value": { "customerType": "person", "firstname": "Max", "lastname": "Mustermann", "title": "Prof. Dr.", "birthdate": "2024-01-02", "number": "C700001", "deviatingCustomerNumber": "C711223", "salutation": "mr", "salutationPhrase": "Dear my friend", "department": "Sales", "subDepartment": "Online Sales", "project": { "id": "4" }, "contactDetails": { "phone": "+49(30)111333555", "mobile": "+49(172)99988877", "fax": "+49(30)111333555-1", "email": "max@company.tpl", "website": "http://company.tpl/members/max.mustermann", "additionalData": [ { "label": "skype", "value": "max12345" } ] }, "accountManager": { "id": "57" }, "salesManager": { "id": "45" }, "isLead": true, "groups": [ 1, 2, 3 ] } }, "Create Company Customer - minimal": { "value": { "customerType": "company", "name": "General Cosmic Company" } }, "Create Company Customer - fully qualified": { "value": { "customerType": "company", "name": "General Cosmic Company", "salutationPhrase": "Dear owners", "department": "Sales", "subDepartment": "Online Sales", "project": { "id": "4" }, "contactDetails": { "phone": "+49(30)111333555", "mobile": "+49(172)99988877", "fax": "+49(30)111333555-1", "email": "owners@company.tpl", "website": "http://company.tpl", "additionalData": [ { "label": "skype", "value": "companyOwner" } ] }, "accountManager": { "id": "57" }, "salesManager": { "id": "45" }, "isLead": false, "groups": [ 1, 2, 3 ] } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v2/customers/{customerId}/addresses": { "post": { "tags": [ "Customer Address" ], "operationId": "customer.address.create.v2", "summary": "Create address", "description": "Create new customer address", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "Customer's identifier", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Create customer address", "content": { "application/json": { "schema": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "nullable": false, "enum": [ "masterdata" ], "example": "masterdata", "description": "Type of customer address, must be 'masterdata'" }, "street": { "type": "string", "nullable": false, "example": "1234 main street", "description": "Street name + Housenumber of the address" }, "addressSupplement": { "type": "string", "nullable": true, "example": "6th floor", "description": "Additional supplement for address" }, "zip": { "type": "string", "nullable": false, "example": "12345", "description": "ZIP code of address" }, "city": { "type": "string", "nullable": false, "example": "sample town", "description": "Name of city" }, "country": { "type": "string", "nullable": false, "example": "DE", "description": "ISO code (ISO 3166-1 alpha-2) of country" }, "state": { "type": "string", "nullable": true, "example": "BY", "description": "ISO code (ISO 3166-2 without country part) of state/province" } } }, { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "nullable": false, "enum": [ "billingaddress" ], "example": "billingaddress", "description": "Type of customer address, must be 'billingaddress'" }, "name": { "type": "string", "nullable": false, "example": "Max Mustermann", "description": "Full name for billing address" }, "salutation": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ], "nullable": true, "example": "mr", "description": "Abbreviation for salutation" }, "street": { "type": "string", "nullable": false, "example": "1234 main street", "description": "Street name + House number of the address" }, "addressSupplement": { "type": "string", "nullable": true, "example": "6th floor", "description": "Additional supplement for address" }, "zip": { "type": "string", "nullable": false, "example": "12345", "description": "ZIP code of address" }, "city": { "type": "string", "nullable": false, "example": "sample town", "description": "Name of city" }, "country": { "type": "string", "nullable": false, "example": "DE", "description": "ISO code (ISO 3166-1 alpha-2) of country" }, "state": { "type": "string", "nullable": true, "example": "BY", "description": "ISO code (ISO 3166-2 without country part) of state/province" }, "department": { "type": "string", "nullable": true, "example": "Sales", "description": "Name of deptartment" }, "subDepartment": { "type": "string", "nullable": true, "example": "Online Sales", "description": "Name of sub-department" }, "contactDetails": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "phone": { "type": "string", "nullable": true, "example": "0800 546372", "description": "Phone number" }, "email": { "type": "string", "nullable": true, "example": "m.m@somedomain.tpl", "description": "Email address" }, "gln": { "type": "string", "format": "number", "nullable": true, "minLength": 13, "maxLength": 13, "example": "1234567890123", "description": "Global Location Number - key to identify physical/digital location globally" } } } } }, { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "nullable": false, "enum": [ "deliveryaddress" ], "example": "deliveryaddress", "description": "Type of customer address, must be 'deliveryaddress'" }, "name": { "type": "string", "nullable": false, "example": "Max Mustermann", "description": "Full name for billing address" }, "salutation": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ], "nullable": true, "example": "mr", "description": "Abbreviation for salutation" }, "street": { "type": "string", "nullable": false, "example": "1234 main street", "description": "Street name + House number of the address" }, "addressSupplement": { "type": "string", "nullable": true, "example": "6th floor", "description": "Additional supplement for address" }, "zip": { "type": "string", "nullable": false, "example": "12345", "description": "ZIP code of address" }, "city": { "type": "string", "nullable": false, "example": "sample town", "description": "Name of city" }, "country": { "type": "string", "nullable": false, "example": "DE", "description": "ISO code (ISO 3166-1 alpha-2) of country" }, "state": { "type": "string", "nullable": true, "example": "BY", "description": "ISO code (ISO 3166-2 without country part) of state/province" }, "department": { "type": "string", "nullable": true, "example": "Sales", "description": "Name of department" }, "subDepartment": { "type": "string", "nullable": true, "example": "Online Sales", "description": "Name of sub-department" }, "contactDetails": { "type": "object", "additionalProperties": false, "properties": { "phone": { "type": "string", "nullable": true, "example": "0800 546372", "description": "Phone number" }, "email": { "type": "string", "nullable": true, "example": "m.m@esomedomain.tpl", "description": "Email address" }, "gln": { "type": "string", "format": "number", "nullable": true, "minLength": 13, "maxLength": 13, "example": "1234567890123", "description": "Global Location Number - key to identify physical/digital location globally" } } }, "deliveryDetails": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "defaultDeliveryAddress": { "type": "boolean", "example": true, "description": "Set TRUE makes this address to default delivery address" }, "termsOfDelivery": { "type": "string", "nullable": true, "description": "Terms of delivery associated with this address", "example": "Some terms here" }, "vatId": { "type": "string", "nullable": true, "example": "DE124345-23445", "description": "VAT Id if different from masterdata" }, "taxType": { "type": "string", "enum": [ "domestic", "eu-delivery", "export", "free" ], "nullable": false, "example": "domestic", "description": "Taxation type" }, "internalComment": { "type": "string", "nullable": true, "example": "some text", "description": "Internal Comments" }, "note": { "type": "string", "nullable": true, "example": "more text", "description": "General Notes" } } } } } ] }, "examples": { "full-masterdata": { "value": { "type": "masterdata", "street": "11W 53rd St", "addressSupplement": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US" } }, "full-billingaddress": { "value": { "type": "billingaddress", "name": "Kathleen Minority", "salutation": "mrs", "street": "11W 53rd St", "addressSupplement": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US", "department": "Finance", "subDepartment": "Controlling", "contactDetails": { "phone": "0800 4526123", "email": "k.m@ny.tld", "gln": "1234567890123" } } }, "full-deliveryaddress": { "value": { "type": "deliveryaddress", "name": "Kathleen Minority", "salutation": "mrs", "street": "11W 53rd St", "addressSupplement": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US", "department": "Finance", "subDepartment": "Controlling", "contactDetails": { "phone": "0800 4526123", "email": "k.m@ny.tld", "gln": "1234567890123" }, "deliveryDetails": { "defaultDeliveryAddress": true, "termsOfDelivery": "142", "vatId": "DE25-123455265", "taxType": "domestic", "internalComment": "internal notes", "note": "some additional notes" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Customer Address" ], "operationId": "customer.address.list.v2", "summary": "List addresses", "description": "Fetches a list of addresses that belong to specified customer. The list includes the main address (type=masterdata), billing address (type=billingaddress) and all delivery addresses (type=deliveryaddress).", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "The customer's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "filter", "in": "query", "schema": { "anyOf": [ { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "type" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn" ] }, "value": { "oneOf": [ { "type": "string", "enum": [ "masterdata", "billingaddress", "deliveryaddress" ] } ] } } } } ] } }, { "name": "pagination", "in": "query", "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } ] }, "description": "Use either page-based or cursor-based pagination, but not both." } ], "responses": { "200": { "description": "List of customer's addresses", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra", "links" ], "properties": { "data": { "type": "array", "minItems": 0, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "^(masterdata|billingaddress|\\d+)$", "example": "masterdata", "description": "Resource identifier. Can be 'masterdata', 'billingaddress', or a numeric id." }, "type": { "type": "string", "enum": [ "masterdata", "billingaddress", "deliveryaddress" ], "example": "masterdata", "description": "The type of the address. Can be 'masterdata', 'billingaddress', or 'deliveryaddress'." }, "name": { "type": "string", "example": "John Doe", "description": "The recipient's name." }, "street": { "type": "string", "example": "1234 street", "description": "Street and house number." }, "addressSupplement": { "type": "string", "nullable": true, "example": "5th floor", "description": "Optional second address line." }, "department": { "type": "string", "nullable": true, "example": "Financial & Accounting", "description": "Department." }, "subDepartment": { "type": "string", "nullable": true, "example": "Purchase accounting", "description": "Sub-department." }, "zip": { "type": "string", "example": "12345", "description": "Postal code." }, "city": { "type": "string", "example": "Sampletown", "description": "City." }, "country": { "type": "string", "example": "DE", "description": "Country code in ISO 3166-1 alpha-2 format." }, "state": { "type": "string", "example": "BY", "description": "State code in ISO 3166-2 format." } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } }, "links": { "type": "object", "additionalProperties": false, "description": "Paths for list traversal and to access related resources.", "properties": { "self": { "type": "string", "nullable": false, "description": "The URI of the current page.", "example": "/api/v2/customers/1234/addresses?page%5Bnumber%5D=2&page%5Bsize%5D=10" }, "next": { "type": "string", "nullable": true, "description": "The path of the next page. If value is null, this is the last page.", "example": "/api/v2/customers/1234/addresses?page%5Bnumber%5D=3&page%5Bsize%5D=10" }, "prev": { "type": "string", "nullable": true, "description": "The path of the previous page. If value is null, this is the first page.", "example": "/api/v2/customers/1234/addresses?page%5Bnumber%5D=1&page%5Bsize%5D=10" }, "customer": { "type": "string", "nullable": false, "description": "The path of the customer resource.", "example": "/api/v2/customers/1234" } }, "example": { "self": "/api/v2/customers/1234/addresses?page%5Bnumber%5D=2&page%5Bsize%5D=10", "next": "/api/v2/customers/1234/addresses?page%5Bnumber%5D=3&page%5Bsize%5D=10", "prev": "/api/v2/customers/1234/addresses?page%5Bnumber%5D=1&page%5Bsize%5D=10", "customer": "/api/v2/customers/1234" } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v2/customers/{customerId}/addresses/{id}": { "get": { "tags": [ "Customer Address" ], "operationId": "customer.address.view.v2", "summary": "View address", "description": "Returns details of a single customer address", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "The customer's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "id", "in": "path", "required": true, "description": "The address identifier. Can be `masterdata`, `billingaddress`, or a numeric ID (which corresponds to a delivery address).", "schema": { "oneOf": [ { "type": "string", "enum": [ "masterdata", "billingaddress" ] }, { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } ] }, "example": "masterdata" } ], "responses": { "200": { "description": "Customer address response object", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "id", "type", "name", "street", "addressSupplement", "zip", "city", "country", "state", "department", "subDepartment", "contactDetails" ], "description": "Customer Address object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "type": "string", "enum": [ "masterdata", "billingaddress", "deliveryaddress" ], "example": "masterdata", "description": "Type of customer address" }, "name": { "type": "string", "nullable": true, "example": "Firstname Surname", "description": "Full name of the customer" }, "street": { "type": "string", "nullable": true, "example": "1234 Main Street", "description": "Street name and house number" }, "addressSupplement": { "type": "string", "nullable": true, "example": "6. floor", "description": "Additional address information, such as floor or unit" }, "zip": { "type": "string", "nullable": true, "example": "12345", "description": "Postal code for the address" }, "city": { "type": "string", "nullable": true, "example": "Sampletown", "description": "City of the address" }, "country": { "type": "string", "nullable": true, "example": "DE", "description": "Country code in ISO 3166-1 alpha-2 format" }, "state": { "type": "string", "nullable": true, "example": "BY", "description": "State or region code in ISO format, if applicable" }, "department": { "type": "string", "nullable": true, "example": "HR department", "description": "Department of customer if necessary and available" }, "subDepartment": { "type": "string", "nullable": true, "example": "Sub department", "description": "Sub-Department of customer if necessary and available" }, "contactDetails": { "type": "object", "additionalProperties": false, "description": "Contact information of a customer", "properties": { "phone": { "type": "string", "nullable": true, "description": "Phone number of a customer", "example": "+49(30)12093756" }, "email": { "type": "string", "nullable": true, "description": "Email address of a customer", "example": "customer@domain.tpl" }, "gln": { "type": "string", "nullable": true, "description": "Global Location Number (GLN) of the company", "example": "1234567890123", "pattern": "^[0-9]{13}$" } }, "example": { "email": "dev@xentral.com", "phone": "+49(0) 174406668", "gln": "1234567890123" } }, "deliveryDetails": { "type": "object", "nullable": true, "additionalProperties": false, "description": "Details about the customer's delivery address", "properties": { "defaultDeliveryAddress": { "type": "boolean", "description": "Indicates whether this is the default delivery address. Only one delivery address can be set as default.", "example": true }, "termsOfDelivery": { "type": "string", "nullable": true, "description": "Terms of delivery associated with this address", "example": "Some terms here" }, "vatId": { "type": "string", "nullable": true, "description": "VAT ID associated with the delivery address. Can be empty.", "example": "DE123456789" }, "taxType": { "type": "string", "nullable": true, "enum": [ "domestic", "eu-delivery", "export", "free" ], "description": "Tax type associated with the delivery address. Can be one of: domestic, eu-delivery, export, free.", "example": "domestic" }, "internalComment": { "type": "string", "nullable": true, "description": "Internal comment about the delivery address", "example": "Some internal remarks here" }, "note": { "type": "string", "nullable": true, "description": "Additional note regarding the delivery address", "example": "Some additional notes here" } }, "example": { "defaultDeliveryAddress": true, "termsOfDelivery": "Delivered within 5 business days", "vatId": "DE123456789", "taxType": "domestic", "internalComment": "Handle with care. Preferred delivery time: morning.", "note": "Leave package at the front desk if recipient is unavailable." } } }, "example": { "id": "1", "type": "deliveryaddress", "name": "Test delivery address", "street": "1", "zip": "12345", "city": "Munich", "country": "DE", "state": "BY", "addressSupplement": "1", "department": "Department", "subDepartment": "Subdepartment", "contactDetails": { "email": "dev@xentral.com", "phone": "+49(0) 174406668", "gln": "1234567890123" }, "deliveryDetails": { "taxType": "export", "defaultDeliveryAddress": false, "termsOfDelivery": " Delivery term", "vatId": "123213212", "internalComment": "my awesome delivery internal comment", "note": "my awesome delivery notice" } } }, "links": { "type": "object", "description": "A collection of related links for the customer resource.", "properties": { "self": { "type": "string", "description": "A URL linking directly to this specific customer address resource.", "example": "http://localhost/api/v2/customers/2/addresses/1" }, "customer": { "type": "string", "description": "A URL linking to the customer resource associated with this address.", "example": "http://localhost/api/v2/customers/2" } }, "example": { "links": { "self": "http://localhost/api/v2/customers/2/addresses/1", "customer": "http://localhost/api/v2/customers/2" } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Customer Address" ], "operationId": "customer.address.update.v2", "summary": "Update address", "description": "Updates given fields for a given customer address", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "Customer's identifier", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "id", "description": "customers address identifier", "required": true, "schema": { "oneOf": [ { "type": "string", "enum": [ "masterdata", "billingaddress" ] }, { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } ] } } ], "requestBody": { "description": "Update customer address", "content": { "application/json": { "schema": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "street": { "type": "string", "nullable": false, "example": "1234 main street", "description": "Street name + Housenumber of the address" }, "addressSupplement": { "type": "string", "nullable": true, "example": "6th floor", "description": "Additional supplement for address" }, "zip": { "type": "string", "nullable": false, "example": "12345", "description": "ZIP code of address" }, "city": { "type": "string", "nullable": false, "example": "sample town", "description": "Name of city" }, "country": { "type": "string", "nullable": false, "example": "DE", "description": "ISO code (ISO 3166-1 alpha-2) of country" }, "state": { "type": "string", "nullable": true, "example": "BY", "description": "ISO code (ISO 3166-2 without country part) of state/province" }, "department": { "type": "string", "nullable": true, "example": "Sales", "description": "Name of deptartment" }, "subDepartment": { "type": "string", "nullable": true, "example": "Online Sales", "description": "Name of sub-department" } } }, { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": false, "example": "Max Mustermann", "description": "Full name for billing address" }, "salutation": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ], "nullable": true, "example": "mr", "description": "Abbreviation for salutation" }, "street": { "type": "string", "nullable": false, "example": "1234 main street", "description": "Street name + Housenumber of the address" }, "addressSupplement": { "type": "string", "nullable": true, "example": "6th floor", "description": "Additional supplement for address" }, "zip": { "type": "string", "nullable": false, "example": "12345", "description": "ZIP code of address" }, "city": { "type": "string", "nullable": false, "example": "sample town", "description": "Name of city" }, "country": { "type": "string", "nullable": false, "example": "DE", "description": "ISO code (ISO 3166-1 alpha-2) of country" }, "state": { "type": "string", "nullable": true, "example": "BY", "description": "ISO code (ISO 3166-2 without country part) of state/province" }, "department": { "type": "string", "nullable": true, "example": "Sales", "description": "Name of deptartment" }, "subDepartment": { "type": "string", "nullable": true, "example": "Online Sales", "description": "Name of sub-department" }, "contactDetails": { "type": "object", "additionalProperties": false, "properties": { "phone": { "type": "string", "nullable": true, "example": "0800 546372", "description": "Phone number" }, "email": { "type": "string", "nullable": true, "example": "m.m@ somedomain.tpl", "description": "Email address" }, "gln": { "type": "string", "format": "number", "nullable": true, "minLength": 13, "maxLength": 13, "example": "1234567890123", "description": "Global Location Number - key to identify physical/digital location globally" } } } } }, { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "example": "Max Mustermann", "description": "Full name for billing address" }, "salutation": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ], "nullable": true, "example": "mr", "description": "Abbreviation for salutation" }, "street": { "type": "string", "nullable": false, "example": "1234 main street", "description": "Street name + Housenumber of the address" }, "addressSupplement": { "type": "string", "nullable": true, "example": "6th floor", "description": "Additional supplement for address" }, "zip": { "type": "string", "nullable": false, "example": "12345", "description": "ZIP code of address" }, "city": { "type": "string", "nullable": false, "example": "sample town", "description": "Name of city" }, "country": { "type": "string", "nullable": false, "example": "DE", "description": "ISO code (ISO 3166-1 alpha-2) of country" }, "state": { "type": "string", "nullable": true, "example": "BY", "description": "ISO code (ISO 3166-2 without country part) of state/province" }, "department": { "type": "string", "nullable": true, "example": "Sales", "description": "Name of deptartment" }, "subDepartment": { "type": "string", "nullable": true, "example": "Online Sales", "description": "Name of sub-department" }, "contactDetails": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "phone": { "type": "string", "nullable": true, "example": "0800 546372", "description": "Phone number" }, "email": { "type": "string", "nullable": true, "example": "m.m@ somedomain.tpl", "description": "Email address" }, "gln": { "type": "string", "format": "number", "nullable": true, "minLength": 13, "maxLength": 13, "example": "1234567890123", "description": "Global Location Number - key to identify physical/digital location globally" } } }, "deliveryDetails": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "defaultDeliveryAddress": { "type": "boolean", "example": true, "description": "Set TRUE makes this address to default delivery address" }, "termsOfDelivery": { "type": "string", "nullable": true, "example": "free shipment", "description": "Terms of delivery" }, "vatId": { "type": "string", "nullable": true, "example": "DE124345-23445", "description": "VAT Id if different from masterdata" }, "taxType": { "type": "string", "enum": [ "domestic", "eu-delivery", "export", "free" ], "nullable": false, "example": "domestic", "description": "Taxation type" }, "internalComment": { "type": "string", "nullable": true, "example": "some text", "description": "Internal Comments" }, "note": { "type": "string", "nullable": true, "example": "more text", "description": "General Notes" } } } } } ] }, "examples": { "full-masterdata": { "value": { "street": "11W 53rd St", "addressSupplement": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US", "department": "Finance", "subDepartment": "Controlling" } }, "full-billingaddress": { "value": { "name": "Kathleen Minority", "salutation": "mrs", "street": "11W 53rd St", "addressSupplement": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US", "department": "Finance", "subDepartment": "Controlling", "contactDetails": { "phone": "0800 4526123", "email": "k.m@ny.tld", "gln": "1234567890123" } } }, "full-deliveryaddress": { "value": { "name": "Kathleen Minority", "salutation": "mrs", "street": "11W 53rd St", "addressSupplement": "6. Floor", "zip": "10019", "city": "New York", "state": "NY", "country": "US", "department": "Finance", "subDepartment": "Controlling", "contactDetails": { "phone": "0800 4526123", "email": "k.m@ny.tld", "gln": "1234567890123" }, "deliveryDetails": { "defaultDeliveryAddress": true, "termsOfDelivery": "some terms here", "vatId": "DE25-123455265", "taxType": "domestic", "internalComment": "internal notes", "note": "some additional notes" } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } }, "delete": { "tags": [ "Customer Address" ], "operationId": "customer.address.delete.v2", "summary": "Delete address", "description": "Delete customer address which could be inside of master data, billing address or a delivery address of a customer", "parameters": [ { "in": "path", "name": "customerId", "required": true, "description": "Customer's identifier", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "id", "description": "customers address identifier", "required": true, "schema": { "oneOf": [ { "type": "integer", "format": "int64", "example": 4 }, { "type": "string", "example": "masterdata", "enum": [ "masterdata", "billingaddress" ] } ] } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" } } } }, "/api/v2/customers/{id}": { "get": { "tags": [ "Customer" ], "operationId": "customer.view.v2", "summary": "View customer", "description": "Returns details of a single customer", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Customer response object", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "id", "number", "deviatingCustomerNumber", "customerType", "name", "firstname", "lastname", "salutation", "salutationPhrase", "department", "subDepartment", "projects", "groups", "accountManager", "salesManager", "contactDetails", "isLead", "contactPerson" ], "description": "Customer object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "Nullable UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1", "nullable": true }, "number": { "type": "string", "description": "Customer number. if this is not provided default number ranges will be applied automatically", "example": "C700001" }, "deviatingCustomerNumber": { "type": "string", "description": "Deviating Customer number.", "example": "C711223" }, "customerType": { "type": "string", "enum": [ "company", "person" ], "nullable": true, "example": "company", "description": "Type of customer" }, "name": { "type": "string", "nullable": false, "example": "Firstname Surname", "description": "Full name of the customer" }, "firstname": { "type": "string", "nullable": true, "example": "Firstname", "description": "First name of the customer" }, "lastname": { "type": "string", "nullable": true, "example": "Surname", "description": "Last name of the customer" }, "title": { "type": "string", "nullable": true, "example": "Prof. Dr.", "description": "Additional information used for salutations" }, "salutation": { "type": "string", "enum": [ "company", "mr", "mrs", "other" ], "nullable": true, "example": "mr", "description": "Salutation of the customer" }, "salutationPhrase": { "type": "string", "nullable": true, "description": "You can specify a salutation how a customer/company should be addressed and override automatic rules.", "example": "Dear Sir" }, "birthdate": { "type": "string", "format": "date", "nullable": true, "description": "Birhtdate of customer", "example": "2024-03-01" }, "department": { "type": "string", "nullable": true, "example": "HR department", "description": "Department of customer if necessary and available" }, "subDepartment": { "type": "string", "nullable": true, "example": "Sub department", "description": "Sub-Department of customer if necessary and available" }, "projects": { "type": "array", "description": "List of customer projects", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "groups": { "type": "array", "description": "List of groups the customer belongs to", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "contactDetails": { "type": "object", "additionalProperties": false, "description": "Contact information of a customer", "properties": { "phone": { "type": "string", "nullable": true, "description": "Phone number of a customer", "example": "+49(30)12093756" }, "mobile": { "type": "string", "nullable": true, "description": "Mobile number of a customer", "example": "+49(172)56565656" }, "fax": { "type": "string", "nullable": true, "description": "Fax number of a customer", "example": "+49(30)12093756-1" }, "email": { "type": "string", "nullable": true, "description": "Email address of a customer", "example": "customer@domain.tpl" }, "website": { "type": "string", "nullable": true, "description": "URL of customers website", "example": "http://company.tpl/members/max.mustermann" }, "additionalData": { "type": "array", "description": "List of additional not default contact data", "items": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "description": "Specific key for customer contact data", "example": "mobile2" }, "value": { "type": "string", "nullable": true, "description": "Value for specified customers contact data key", "example": "+1(800)555 12235" } } } } }, "example": { "phone": "+49 123 4567890", "fax": "+49 123 4567890-1", "email": "name@provider.com", "website": "http://my.website.tld", "additionalData": [ { "label": "Skype", "value": "max.mustermann" } ] } }, "accountManager": { "nullable": true, "type": "object", "additionalProperties": false, "required": [ "id" ], "description": "Account manager of this customer", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "12345" } }, "salesManager": { "nullable": true, "type": "object", "additionalProperties": false, "required": [ "id" ], "description": "Sales manager of this customer", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "12345" } }, "isLead": { "type": "boolean", "description": "Tells if customer is a lead", "example": true }, "contactPerson": { "type": "string", "nullable": true, "example": "Milo Thatch", "description": "Name of contact person" } }, "example": { "id": "17", "uuid": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1", "number": "700001", "deviatingCustomerNumber": "711223", "customerType": "person", "name": "Sample Company ltd.", "firstname": "Max", "lastname": "Mustermann", "title": "Prof. Dr.", "salutation": "mr", "salutationPhrase": "Dear my friend", "birthdate": "1970-01-01", "department": "Sales", "subDepartment": "Online Sales", "projects": [ { "id": "1" }, { "id": "2" } ], "groups": [ { "id": "99" } ], "contactDetails": { "phone": "+49 123 4567890", "fax": "+49 123 4567890-1", "email": "name@provider.com", "website": "http://my.website.tld", "additionalData": [ { "label": "Skype", "value": "max.mustermann" } ] }, "accountManager": { "id": "321" }, "salesManager": { "id": "245" }, "isLead": true, "contactPerson": "Milo Thatch" } }, "links": { "type": "object", "description": "A collection of related links for the customer resource.", "properties": { "self": { "type": "string", "description": "Self-reference link to the customer resource", "example": "http://localhost/api/v2/customers/2" }, "contactPersons": { "type": "string", "description": "Link to the contact person of the customer", "example": "http://localhost/api/customers/2/contactPerson" } }, "example": { "links": { "self": "http://localhost/api/v2/customers/2", "contactPersons": "http://localhost/api/customers/2/contactPerson" } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Customer" ], "operationId": "customer.update.v2", "summary": "Update customer", "description": "Update an existing customer.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The customer's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Request structure to update a customer", "content": { "application/json": { "schema": { "type": "object", "properties": { "customerType": { "type": "string", "nullable": true, "description": "Discriminator to create a company. If 'company' is used then 'name' is required. If 'person' is used then 'firstname' and 'lastname' are required.", "enum": [ "person", "company" ] }, "firstname": { "type": "string", "nullable": true, "description": "Firstname of customer", "example": "Max" }, "lastname": { "type": "string", "nullable": true, "description": "Lastname of customer", "example": "Mustmermann" }, "name": { "type": "string", "nullable": true, "description": "Name of the company", "example": "General Cosmic Company" }, "title": { "type": "string", "nullable": true, "description": "Title prefix for customer name. It will be used for communication.", "example": "Prof. Dr." }, "birthdate": { "type": "string", "format": "date", "nullable": true, "description": "Birhtdate of customer", "example": "2024-03-01" }, "number": { "type": "string", "nullable": true, "description": "Customer number. if this is not provided default number ranges will be applied automatically", "example": "C700001" }, "deviatingCustomerNumber": { "type": "string", "nullable": true, "description": "Deviating Customer number.", "example": "C711223" }, "salutation": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ], "nullable": true, "description": "Decide kind of person if necessary. This value is e.g. responsible to apply automatic rules for salutation", "example": "mr" }, "salutationPhrase": { "type": "string", "nullable": true, "description": "You can specify a salutation how a customer/company should be addressed and override automatic rules.", "example": "Dear Sir" }, "department": { "type": "string", "nullable": true, "description": "Specify a department for customer", "example": "Sales" }, "subDepartment": { "type": "string", "nullable": true, "description": "Specify a sub-department for customer", "example": "Onlines Sales" }, "contactDetails": { "type": "object", "additionalProperties": false, "description": "Contact information of a customer", "properties": { "phone": { "type": "string", "nullable": true, "description": "Phone number of a customer", "example": "+49(30)12093756" }, "mobile": { "type": "string", "nullable": true, "description": "Mobile number of a customer", "example": "+49(172)56565656" }, "fax": { "type": "string", "nullable": true, "description": "Fax number of a customer", "example": "+49(30)12093756-1" }, "email": { "type": "string", "nullable": true, "description": "Email address of a customer", "example": "customer@domain.tpl" }, "website": { "type": "string", "nullable": true, "description": "URL of customers website" }, "additionalData": { "type": "array", "description": "List of additional not default contact data", "items": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "description": "Specific key for customer contact data", "example": "mobile2" }, "value": { "type": "string", "nullable": true, "description": "Value for specified customers contact data key", "example": "+1(800)555 12235" } } } } } }, "accountManager": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "salesManager": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "isLead": { "type": "boolean", "nullable": false, "description": "Decides if customer is a lead", "example": true }, "contactPerson": { "type": "string", "nullable": true, "description": "Name of contact person", "example": "Milo Thatch" } } }, "examples": { "Update Customer": { "value": { "number": "70001", "deviatingCustomerNumber": "711223", "customerType": "person", "name": "General Cosmic Company", "firstname": "Max", "lastname": "Mustermann", "title": "Prof. Dr.", "salutation": "mr", "salutationPhrase": "Dear owners", "birthdate": "1970-01-01", "department": "Sales", "subDepartment": "Online Sales", "contactDetails": { "phone": "+49(30)111333555", "mobile": "+49(172)99988877", "fax": "+49(30)111333555-1", "email": "owners@company.tpl", "website": "http://company.tpl", "additionalData": [ { "label": "skype", "value": "companyOwner" } ] }, "accountManager": { "id": "57" }, "salesManager": { "id": "45" }, "isLead": false } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/deliveries": { "get": { "tags": [ "Delivery" ], "operationId": "deliveries.list", "summary": "List deliveries", "description": "Lists existing deliveries", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "salesOrderId" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "salesOrderId" ] }, "op": { "type": "string", "enum": [ "equals", "in" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "description": "Used for the operations 'in'.", "title": "Array", "items": { "type": "string" } } ] } } } } } ], "responses": { "200": { "description": "Delivery list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "deliveryNote", "tracking", "salesOrder", "shippingMethod" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "tracking": { "type": "object", "required": [ "number" ], "additionalProperties": false, "properties": { "number": { "type": "string", "description": "The tracking number provided by the carrier." }, "link": { "type": "string", "description": "Carrier tracking link" }, "carrier": { "type": "string", "description": "Carrier that shipping the delivery" } }, "description": "Tracking information for the delivery", "example": { "number": "101010101010101" } }, "deliveryNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "shippingMethod": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "sentAt": { "type": "string", "format": "date", "nullable": true, "description": "Date when the delivery was sent", "example": "2022-01-07" }, "sentAtTimestamp": { "type": "string", "format": "datetime", "nullable": true, "description": "Timestamp when the delivery was sent", "example": "2022-01-07 00:00:00" }, "label": { "type": "object", "nullable": true, "required": [ "fileType", "fileContent" ], "additionalProperties": false, "properties": { "fileType": { "type": "string", "description": "Label's file type", "example": "image/gif" }, "fileContent": { "type": "string", "description": "Base 64 encoded label", "example": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Shipping label for the delivery", "example": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } } }, "example": { "id": "DEL-12345", "tracking": { "number": "101010101010101", "link": "https://carrier.example.com/track/101010101010101", "carrier": "DHL" }, "deliveryNote": { "id": "DN-54321" }, "salesOrder": { "id": "SO-98765" }, "shippingMethod": { "id": "SM-12345" }, "sentAt": "2022-01-07", "sentAtTimestamp": "2022-01-07 00:00:00", "label": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Data representation of a single delivery aka shipment" } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/deliveries/{id}": { "get": { "tags": [ "Delivery" ], "operationId": "delivery.view", "summary": "View delivery aka shipment", "description": "Returns details of a delivery aka shipment", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "id", "deliveryNote", "tracking", "salesOrder", "shippingMethod" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "tracking": { "type": "object", "required": [ "number" ], "additionalProperties": false, "properties": { "number": { "type": "string", "description": "The tracking number provided by the carrier." }, "link": { "type": "string", "description": "Carrier tracking link" }, "carrier": { "type": "string", "description": "Carrier that shipping the delivery" } }, "description": "Tracking information for the delivery", "example": { "number": "101010101010101" } }, "deliveryNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "shippingMethod": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "sentAt": { "type": "string", "format": "date", "nullable": true, "description": "Date when the delivery was sent", "example": "2022-01-07" }, "sentAtTimestamp": { "type": "string", "format": "datetime", "nullable": true, "description": "Timestamp when the delivery was sent", "example": "2022-01-07 00:00:00" }, "label": { "type": "object", "nullable": true, "required": [ "fileType", "fileContent" ], "additionalProperties": false, "properties": { "fileType": { "type": "string", "description": "Label's file type", "example": "image/gif" }, "fileContent": { "type": "string", "description": "Base 64 encoded label", "example": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Shipping label for the delivery", "example": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } } }, "example": { "id": "DEL-12345", "tracking": { "number": "101010101010101", "link": "https://carrier.example.com/track/101010101010101", "carrier": "DHL" }, "deliveryNote": { "id": "DN-54321" }, "salesOrder": { "id": "SO-98765" }, "shippingMethod": { "id": "SM-12345" }, "sentAt": "2022-01-07", "sentAtTimestamp": "2022-01-07 00:00:00", "label": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Data representation of a single delivery aka shipment" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v1/shipments/{id}": { "get": { "tags": [ "Delivery" ], "operationId": "shipment.view", "summary": "View shipment aka delivery", "description": "Returns details of a shipment aka delivery", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "id", "deliveryNote", "tracking", "salesOrder", "shippingMethod" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "tracking": { "type": "object", "required": [ "number" ], "additionalProperties": false, "properties": { "number": { "type": "string", "description": "The tracking number provided by the carrier." }, "link": { "type": "string", "description": "Carrier tracking link" }, "carrier": { "type": "string", "description": "Carrier that shipping the delivery" } }, "description": "Tracking information for the delivery", "example": { "number": "101010101010101" } }, "deliveryNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "shippingMethod": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "sentAt": { "type": "string", "format": "date", "nullable": true, "description": "Date when the delivery was sent", "example": "2022-01-07" }, "sentAtTimestamp": { "type": "string", "format": "datetime", "nullable": true, "description": "Timestamp when the delivery was sent", "example": "2022-01-07 00:00:00" }, "label": { "type": "object", "nullable": true, "required": [ "fileType", "fileContent" ], "additionalProperties": false, "properties": { "fileType": { "type": "string", "description": "Label's file type", "example": "image/gif" }, "fileContent": { "type": "string", "description": "Base 64 encoded label", "example": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Shipping label for the delivery", "example": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } } }, "example": { "id": "DEL-12345", "tracking": { "number": "101010101010101", "link": "https://carrier.example.com/track/101010101010101", "carrier": "DHL" }, "deliveryNote": { "id": "DN-54321" }, "salesOrder": { "id": "SO-98765" }, "shippingMethod": { "id": "SM-12345" }, "sentAt": "2022-01-07", "sentAtTimestamp": "2022-01-07 00:00:00", "label": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Data representation of a single delivery aka shipment" } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v1/provisionalReturns": { "get": { "tags": [ "Provisional Return" ], "operationId": "provisionalReturns.list", "summary": "List provisional returns", "description": "Lists existing provisional returns", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "deliveryNoteId" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "salesOrder" ] }, "op": { "type": "string", "enum": [ "equals", "in" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "description": "Used for the operations 'in'.", "title": "Array", "items": { "type": "string" } } ] } } } } } ], "responses": { "200": { "description": "Provisional Return list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "deliveryNote", "tracking", "salesOrder" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "tracking": { "type": "object", "required": [ "number" ], "additionalProperties": false, "properties": { "number": { "type": "string", "description": "The tracking number provided by the carrier." } }, "description": "Tracking information for the provisional return", "example": { "number": "101010101010101" } }, "deliveryNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/deliveryNotes": { "get": { "tags": [ "Delivery Note" ], "operationId": "deliveryNote.list", "summary": "Delivery note list", "description": "This endpoint is only available as beta version and will introduce breaking changes without further notice or versioning. Returns all delivery notes.", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id, deliveryNoteNumber" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "documentDate", "createdAt", "status", "salesOrderId", "updatedAt", "country", "projectId", "customerId", "customerNumber", "shippingAddressName" ] }, "op": { "type": "string", "enum": [ "greaterThan", "lessThan", "equals", "notEquals", "in", "notIn", "contains", "notContains", "startsWith", "endsWith" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "description": "Number of the document", "example": "200001" }, "createdAt": { "type": "string", "format": "datetime", "description": "Creation date of the delivery note", "example": "2024-01-01 00:00:00" }, "updatedAt": { "type": "string", "format": "datetime", "description": "Last update date of the delivery note", "example": "2024-01-01 00:00:00" }, "documentDate": { "type": "string", "format": "date", "description": "Date of the document", "example": "2024-01-01" }, "receiver": { "type": "object", "nullable": true, "required": [ "number", "name" ], "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "number": { "type": "string", "nullable": true } }, "description": "Receiver contact for the delivery", "example": { "name": "Mr. John Doe", "number": "10" } }, "country": { "type": "string", "description": "Country code for the delivery", "example": "DE" }, "project": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "description": "Project to which the delivery note belongs to", "example": { "id": "1" } }, "shippingMethod": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "description": "Shipping method used for the delivery note", "example": { "id": "1" } }, "type": { "type": "string", "description": "Internal type of the delivery note", "example": "type" }, "status": { "type": "string", "enum": [ "created", "released", "canceled", "sent", "unknown" ], "description": "Status of the delivery note", "example": "created" }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/deliveryNotes/{id}": { "get": { "tags": [ "Delivery Note" ], "operationId": "deliveryNote.view", "summary": "View delivery note", "description": "Returns details of a delivery note", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "type": "string", "description": "Internal identification for the delivery note", "example": "200001" }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "transactionNumber": { "type": "string", "description": "Transaction number associated with a delivery note", "example": "transaction1" }, "customerOrderNumber": { "type": "string", "description": "Customer order associated with a delivery note", "example": "customerOrder1", "nullable": true }, "salesChannel": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "bodyIntroduction": { "type": "string", "description": "Initial description message for delivery note", "example": "Initial info" }, "bodyOutroduction": { "type": "string", "description": "Ending description message for delivery note", "example": "Additional info" }, "internalDesignation": { "type": "string", "description": "Internal designation for delivery note", "example": "InternalDN1" }, "date": { "type": "string", "format": "date", "description": "Date of creation of a delivery note", "example": "2025-01-01" }, "status": { "type": "string", "enum": [ "completed", "created", "released", "canceled", "unknown" ], "description": "Status of the delivery note", "example": "completed" }, "customer": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "nullable": true } }, "description": "Customer linked to a Sales Order", "example": { "id": "1" } }, "comment": { "type": "string", "example": "A comment about this delivery note", "description": "Comment included in the delivery note", "nullable": true }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "language": { "type": "object", "additionalProperties": false, "required": [ "iso2" ], "properties": { "iso2": { "type": "string", "description": "ISO 639-1 Code", "nullable": true } }, "description": "Language information for a Sales Order", "example": { "iso2": "DE" } }, "updatedAt": { "type": "string", "format": "datetime", "nullable": true, "description": "Update date", "example": "2024-10-15 15:03:46" }, "log": { "type": "object", "additionalProperties": false, "description": "Log information", "properties": { "createdAt": { "type": "string", "format": "date-time", "nullable": true, "description": "Creation date" }, "createdBy": { "type": "object", "additionalProperties": false, "description": "Author", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "email": { "type": "string", "format": "email" } } } }, "example": { "createdAt": "2023-12-01 00:00:00", "createdBy": { "id": "1", "name": "User 1" } } }, "delivery": { "allOf": [ { "type": "object", "properties": { "autoShipping": { "type": "boolean" }, "fastLane": { "type": "boolean" }, "shippingCosts": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "shippingCostProduct", "quantity" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "shippingCostProduct": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When importing a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When importing a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } } }, "storageCountry": { "type": "string", "nullable": true, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use storageCountry for external fulfillment without delivery notes to set the country of fulfillment. If using delivery notes, do not use storageCountry." }, "preferredWarehouse": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "nullable": false } }, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use preferredWarehouse for fulfillment with delivery notes to define which warehouse should be used." }, "shippingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "city", "country", "zipCode", "street" ], "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "department": { "type": "string" }, "contactPerson": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "email": { "type": "string", "format": "email" } } } } }, { "type": "object", "required": [ "shippingMethod" ], "properties": { "shippingMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "deliveryTerms": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "email": { "type": "string", "format": "email" }, "conditions": { "type": "string" } } } ], "description": "Delivery information for the delivery note", "example": { "autoShipping": true, "fastLane": true, "shippingMethod": { "id": "1" }, "shippingCosts": [ { "id": "1", "quantity": 3, "shippingCostProduct": { "id": "1" } } ], "email": "user.email@email.org", "conditions": "none" } }, "tags": { "type": "array", "items": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "type": "string", "nullable": true }, "title": { "type": "string", "nullable": true } } }, "description": "Tags associated with the delivery note", "example": [ { "id": "1" } ] }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "product", "quantity" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "product": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When editing/creating a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When editing/creating a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" }, "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true }, "desiredDeliveryDateAsCalendarWeek": { "type": "boolean", "description": "Flag indicating whether a calendar week should be printed on documents" } } }, "description": "Items included within the delivery note", "example": [ { "product": { "id": "1" }, "quantity": 5 } ] } }, "description": "Data representation of a single delivery note", "example": { "id": "1", "documentNumber": "200001", "salesOrder": { "id": "1" }, "transactionNumber": "transaction1", "customerOrderNumber": "customerOrder1", "salesChannel": { "id": "1" }, "bodyIntroduction": "Initial info", "bodyOutroduction": "Additional info", "internalDesignation": "internalDN1", "date": "2025-01-01", "status": "completed", "customer": { "id": "1" }, "comment": "A comment about this delivery note", "project": { "id": "1" }, "language": { "iso2": "DE" }, "log": { "createdAt": "2023-12-01 00:00:00", "createdBy": { "id": "1", "name": "User 1" } }, "delivery": { "autoShipping": true, "fastLane": true, "shippingMethod": { "id": "1" }, "shippingCosts": [ { "id": "1", "quantity": 3, "shippingCostProduct": { "id": "1" } } ], "email": "user.email@email.org", "conditions": "none" }, "tags": [ { "id": "1" } ], "positions": [ { "product": { "id": "1" }, "quantity": 5 } ] } } } } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" } } } }, "/api/v1/deliveryNotesTags": { "get": { "tags": [ "Delivery Note Tag" ], "operationId": "deliveryNoteTag.list", "summary": "List delivery notes tags", "description": "Returns a collection with all delivery notes tags.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "name", "id" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all delivery notes tags": { "value": { "data": [ { "id": "1", "name": "Done", "color": "339966" }, { "id": "5", "name": "Prio", "color": "ff00ff" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/deliveryNotes/{id}/deliveries": { "get": { "tags": [ "Delivery Note" ], "operationId": "deliveryNote.deliveries.list", "description": "Details of delivery note", "summary": "View delivery note deliveries aka shipments", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Delivery list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "deliveryNote", "tracking", "salesOrder", "shippingMethod" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "tracking": { "type": "object", "required": [ "number" ], "additionalProperties": false, "properties": { "number": { "type": "string", "description": "The tracking number provided by the carrier." }, "link": { "type": "string", "description": "Carrier tracking link" }, "carrier": { "type": "string", "description": "Carrier that shipping the delivery" } }, "description": "Tracking information for the delivery", "example": { "number": "101010101010101" } }, "deliveryNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "shippingMethod": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "sentAt": { "type": "string", "format": "date", "nullable": true, "description": "Date when the delivery was sent", "example": "2022-01-07" }, "sentAtTimestamp": { "type": "string", "format": "datetime", "nullable": true, "description": "Timestamp when the delivery was sent", "example": "2022-01-07 00:00:00" }, "label": { "type": "object", "nullable": true, "required": [ "fileType", "fileContent" ], "additionalProperties": false, "properties": { "fileType": { "type": "string", "description": "Label's file type", "example": "image/gif" }, "fileContent": { "type": "string", "description": "Base 64 encoded label", "example": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Shipping label for the delivery", "example": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } } }, "example": { "id": "DEL-12345", "tracking": { "number": "101010101010101", "link": "https://carrier.example.com/track/101010101010101", "carrier": "DHL" }, "deliveryNote": { "id": "DN-54321" }, "salesOrder": { "id": "SO-98765" }, "shippingMethod": { "id": "SM-12345" }, "sentAt": "2022-01-07", "sentAtTimestamp": "2022-01-07 00:00:00", "label": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Data representation of a single delivery aka shipment" } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/deliveryNotes/{id}/shipments": { "get": { "tags": [ "Delivery Note" ], "operationId": "deliveryNote.shipments.list", "description": "Details of delivery note shipments", "summary": "View delivery note shipments aka deliveries", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Delivery list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "deliveryNote", "tracking", "salesOrder", "shippingMethod" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "tracking": { "type": "object", "required": [ "number" ], "additionalProperties": false, "properties": { "number": { "type": "string", "description": "The tracking number provided by the carrier." }, "link": { "type": "string", "description": "Carrier tracking link" }, "carrier": { "type": "string", "description": "Carrier that shipping the delivery" } }, "description": "Tracking information for the delivery", "example": { "number": "101010101010101" } }, "deliveryNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "shippingMethod": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "sentAt": { "type": "string", "format": "date", "nullable": true, "description": "Date when the delivery was sent", "example": "2022-01-07" }, "sentAtTimestamp": { "type": "string", "format": "datetime", "nullable": true, "description": "Timestamp when the delivery was sent", "example": "2022-01-07 00:00:00" }, "label": { "type": "object", "nullable": true, "required": [ "fileType", "fileContent" ], "additionalProperties": false, "properties": { "fileType": { "type": "string", "description": "Label's file type", "example": "image/gif" }, "fileContent": { "type": "string", "description": "Base 64 encoded label", "example": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Shipping label for the delivery", "example": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } } }, "example": { "id": "DEL-12345", "tracking": { "number": "101010101010101", "link": "https://carrier.example.com/track/101010101010101", "carrier": "DHL" }, "deliveryNote": { "id": "DN-54321" }, "salesOrder": { "id": "SO-98765" }, "shippingMethod": { "id": "SM-12345" }, "sentAt": "2022-01-07", "sentAtTimestamp": "2022-01-07 00:00:00", "label": { "fileType": "image/gif", "fileContent": "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" } }, "description": "Data representation of a single delivery aka shipment" } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/deliveryTerms": { "get": { "tags": [ "Delivery Terms" ], "operationId": "DeliveryTerms.list", "summary": "List Delivery Terms", "description": "Lists existing Delivery Terms", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "designation" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Delivery Terms list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "designation" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "designation": { "type": "string", "description": "Designation of delivery term", "example": "Term" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/employees": { "get": { "tags": [ "Employee" ], "operationId": "employee.list", "summary": "List employees", "description": "Lists existing employees", "parameters": [ { "name": "searchTerm", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Employee minimal list.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "description": "Employee Number", "type": "string", "example": "342442" }, "name": { "description": "Employee Name", "type": "string", "example": "John" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v1/products/{id}/externalReferences": { "get": { "tags": [ "External Reference" ], "operationId": "externalReference.list", "summary": "List external references for given Product", "description": "Returns list of external references for given Product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "x-description-missing": true, "type": "string", "minLength": 1, "example": "Shopify" }, "number": { "x-description-missing": true, "type": "string", "minLength": 1, "example": "1234567" }, "isActive": { "x-description-missing": true, "type": "boolean", "example": true }, "isScannable": { "x-description-missing": true, "type": "boolean", "example": true }, "target": { "x-description-missing": true, "type": "object", "example": { "id": "3543", "name": "Shopware", "isActive": true }, "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "minLength": 1 }, "isActive": { "type": "boolean" } } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all external references of a single product": { "value": { "data": [ { "id": "1", "name": "SKU", "number": "11111", "isActive": true, "isScannable": false, "target": { "id": "1", "name": "Shopware" } }, { "id": "3", "name": "SKU Shop", "number": "22222", "isActive": true, "isScannable": false, "target": { "id": "1", "name": "Shopware" } } ] } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "External Reference" ], "operationId": "externalReference.create", "summary": "Create new external references for a given Product", "description": "Creates new external references for a given Product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "ExternalReference create request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "number": { "type": "string" }, "isActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isScannable": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "target": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "examples": { "Create external reference": { "value": { "name": "Example external reference", "number": "1234567", "isActive": true, "isScannable": true, "target": { "id": "3543" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "External Reference" ], "operationId": "externalReference.updateMultiple", "summary": "Update external references for a given Product", "description": "Updates external references for a given Product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "ExternalReference update multiple request payload", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "x-description-missing": true, "type": "string", "example": "Shopify" }, "number": { "x-description-missing": true, "type": "string", "example": "1234567" }, "isActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isScannable": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "target": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } } }, "examples": { "Update external references": { "value": [ { "id": "123", "isActive": false }, { "id": "456", "isActive": false } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "External Reference" ], "operationId": "externalReference.deleteMultiple", "summary": "Delete external references of a given Product", "description": "Deletes external references of a given Product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "ExternalReference delete multiple request payload", "content": { "application/json": { "schema": { "type": "array", "items": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/externalReferenceTargets": { "get": { "tags": [ "External Reference Target" ], "operationId": "externalReferenceTarget.list", "summary": "List External Reference Targets", "description": "Returns a collection with all External Reference Targets.", "responses": { "200": { "description": "ExternalReferenceTarget list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "description": "The name of the external reference target", "type": "string", "minLength": 1, "example": "Shopware" }, "isActive": { "description": "A flag to determine whether an external reference target is active", "type": "boolean", "example": true } } } } } }, "examples": { "Lists all external reference targets": { "value": { "data": [ { "id": "1", "name": "Shopware", "isActive": true } ] } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v1/stockMovementTypes": { "post": { "tags": [ "Stock Movement Types" ], "operationId": "stockMovementType.create", "summary": "Create a stockMovementType", "description": "Creates a new stock movement type.", "requestBody": { "description": "Stock movement type creation request.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "name", "direction", "active" ], "properties": { "name": { "type": "string", "nullable": false, "example": "TestName", "description": "Name of stock movement type" }, "direction": { "type": "string", "nullable": false, "example": "relocation", "description": "Direction of stock movement type" }, "active": { "type": "boolean", "nullable": false, "example": true, "description": "Only active stock movement types can be used" }, "doctypeReference": { "type": "string", "nullable": true, "example": "salesOrder", "description": "Related document type" } } }, "examples": { "Create an stock movement type": { "value": { "name": "Test stock movement type", "direction": "inbound", "active": true, "doctypeReference": "salesOrder" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices": { "post": { "tags": [ "Invoice" ], "operationId": "invoice.create", "summary": "Create invoice", "description": "Creates a invoice", "requestBody": { "description": "Create an invoice object from a sales order or an empty invoice", "content": { "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "salesOrder": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "documentNumber": { "description": "The `Invoice Number` that will be assigned to the invoice. It can be used when creating an invoice from sales order", "type": "string", "minLength": 1, "maxLength": 35 } } }, "examples": { "Create invoice from sales order": { "value": { "salesOrder": { "id": "12" } } }, "Create invoice from sales order and assign a document number": { "value": { "salesOrder": { "id": "12" }, "documentNumber": "415263" } }, "Create `empty` invoice": { "value": {} } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Invoice" ], "operationId": "invoice.list", "summary": "List invoices", "description": "Returns a collection with all invoices.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "description": "The following filter key values are available:\n\n**id** (string): Invoice ID\n\n**invoice** (string): Invoice Number\n\n**date** (date): accepted format: Y-m-d, example `2024-10-15`\n\n**status** (string): `created` `released` `sent` `canceled` `completed` `partialCancellation`\n\n**customerName** (string): first and last name of the Customer\n\n**customerNumber** (string): Customer Number\n\n**country** (string): Country Codes Alpha-2\n\n**projectId** (string): Project ID\n\n**projectName** (string): Project Name\n\n**projectAbbr** (string): Project Abbreviation\n\n**paymentMethod** (string): Payment Method\n\n**paymentStatus** (string): `pending` `paid` `partlyPaid` `canceled` `partialCancellation` `badDebt` `debited`\n\n**debit** (numeric): Debit, example: `10.50`\n\n**balance** (numeric): Balance, example: `10.50`\n\n**currency** (string): Currency ISO 4217 format, example `EUR`\n\n**shippingMethod** (string): Shipping Method\n\n**amountNet** (numeric): net amount of the Invoice, example: `10.50`\n\n**salesOrder** (string): Sales Order ID\n\n**updatedAt** (string): format: date-time : Sales updatedat, example: `2022-09-13T12:41:18+02:00`", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "search", "id", "invoice", "date", "status", "customerName", "customerNumber", "country", "projectId", "projectName", "projectAbbr", "paymentMethod", "paymentStatus", "debit", "balance", "currency", "shippingMethod", "amountNet", "salesOrder", "dunningLevel", "updatedAt" ], "example": "date" }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "invoice", "date", "customerName", "customerNumber", "country", "project", "paymentMethod", "debit", "currency", "paymentStatus", "balance", "status", "shippingMethod", "amountNet", "dunningDate" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "x-description-missing": true, "type": "string", "nullable": true, "example": "2022-400000" }, "date": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2023-06-27T00:00:00+02:00" }, "status": { "x-description-missing": true, "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "partialCancellation", "unknown" ], "example": "sent" }, "address": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "name", "country", "customerNumber" ], "properties": { "name": { "type": "string" }, "country": { "type": "string" }, "customerNumber": { "type": "string" } }, "example": { "name": "Maximilian S.", "customerNumber": "10002", "country": "DE" } }, "project": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "name", "abbreviation" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "abbreviation": { "type": "string" } }, "example": { "id": "4", "name": "Amazon FBA", "abbreviation": "FBA" } }, "payment": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "method", "status", "debit", "balance" ], "properties": { "method": { "type": "string" }, "status": { "type": "string", "enum": [ "pending", "paid", "partlyPaid", "canceled", "partialCancellation", "badDebt", "debited", "unknown" ] }, "debit": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "balance": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "method": "Amazon pay", "status": "paid", "debit": { "amount": "24.99", "currency": "EUR" }, "balance": { "amount": "0.00", "currency": "EUR" } } }, "additionalFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "amountNet", "shippingMethod", "orderNumber", "internet", "contactPerson", "distribution", "email" ] }, "value": { "type": "string" } } }, "example": [ { "key": "orderNumber", "value": "2231654" } ] }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "dunningSettings": { "description": "Dunning setting for document", "type": "object", "additionalProperties": false, "required": [ "level", "date", "comment", "sent" ], "nullable": false, "properties": { "level": { "type": "string", "enum": [ "noReminder", "paymentReminder", "reminder1", "reminder2", "reminder3", "debtCollection", "lossOfReceivables" ], "example": "paymentReminder" }, "date": { "format": "date", "example": "2022-08-10" }, "comment": { "format": "string", "example": "This is a comment" }, "sent": { "type": "boolean", "format": "boolean", "example": true } }, "example": { "level": "paymentReminder", "date": "2022-08-10", "comment": "This is a comment", "sent": true } }, "updatedBy": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2022-09-13T12:41:18+02:00" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } }, "text/csv": { "schema": { "type": "string" } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices/{id}": { "get": { "tags": [ "Invoice" ], "operationId": "invoice.view", "summary": "View invoice", "description": "Returns details of a single invoice.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "x-description-missing": true, "type": "string", "nullable": true, "example": "1200132" }, "documentDate": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2022-01-07T00:00:00+01:00" }, "log": { "x-description-missing": true, "type": "object", "nullable": true, "additionalProperties": false, "required": [ "createdAt", "createdBy", "sentAt", "sentBy", "updatedAt" ], "properties": { "createdAt": { "type": "string", "format": "date-time", "example": "2022-01-07T13:43:12+01:00" }, "createdBy": { "type": "object", "additionalProperties": false, "required": [ "name" ], "nullable": true, "properties": { "name": { "type": "string" } }, "example": { "name": "John Doe" } }, "sentAt": { "type": "string", "format": "date-time", "nullable": true, "example": "2022-01-07T13:43:12+01:00" }, "sentBy": { "type": "object", "additionalProperties": false, "required": [ "name" ], "nullable": true, "properties": { "name": { "type": "string" } }, "example": { "name": "John Doe" } }, "updatedAt": { "type": "string", "format": "date-time", "example": "2022-03-31T00:16:03+02:00" } }, "example": { "createdAt": "2022-01-07T13:43:12+01:00", "sentAt": null, "createdBy": { "name": "John Doe" }, "sentBy": { "name": "John Doe" }, "updatedAt": "2022-03-31T00:16:03+02:00" } }, "amountGross": { "x-description-missing": true, "type": "number", "format": "float", "example": 49.99 }, "amountNet": { "x-description-missing": true, "type": "number", "format": "float", "example": 42.01 }, "costCenter": { "x-description-missing": true, "type": "string", "example": "3456" }, "status": { "x-description-missing": true, "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "partialCancellation", "unknown" ], "example": "sent" }, "project": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "name", "abbreviation" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "abbreviation": { "type": "string" } }, "example": { "id": "6", "name": "Shopware", "abbreviation": "B2C-SW" } }, "customer": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "externalOrderReference": { "x-description-missing": true, "type": "string", "nullable": true, "example": "62720" }, "devCustomer": { "x-description-missing": true, "type": "string", "nullable": true, "example": "dev" }, "billingAddress": { "type": "object", "description": "Billing address of the customer.", "additionalProperties": false, "required": [ "name", "contactPerson", "department", "subdivision", "street", "additionalDetails", "city", "zipCode", "country" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string", "nullable": true }, "subdivision": { "type": "string", "nullable": true }, "street": { "type": "string" }, "additionalDetails": { "type": "string", "nullable": true }, "city": { "type": "string" }, "zipCode": { "type": "string" }, "country": { "type": "string", "pattern": "[A-Z]{2}" }, "email": { "type": "string", "nullable": true } }, "example": { "id": "1", "name": "John Doe", "contactPerson": "", "department": "", "subdivision": "", "street": "Street 10", "additionalDetails": "", "city": "Berlin", "zipCode": "10101", "country": "DE" } }, "paymentTerms": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "dueDate", "earlyPaymentDate", "earlyPaymentDiscount" ], "nullable": true, "properties": { "dueDate": { "type": "string", "format": "date-time", "nullable": true }, "earlyPaymentDate": { "type": "string", "format": "date-time", "nullable": true }, "earlyPaymentDiscount": { "type": "number", "format": "float" } }, "example": { "earlyPaymentDiscount": 0.5, "earlyPaymentDate": "2022-01-17T00:00:00+01:00", "dueDate": "2022-02-06T00:00:00+01:00" } }, "paymentMethodName": { "x-description-missing": true, "type": "string", "example": "paypal" }, "paymentStatus": { "type": "string", "description": "Status of the payment. Value `unknown` is displayed when a status from database cannot be identified. Value `unknown` cannot be used when creating or updating statuses (POST or PATCH endpoints)", "enum": [ "pending", "paid", "partlyPaid", "canceled", "partialCancellation", "badDebt", "debited", "unknown" ], "example": "pending" }, "dunning": { "description": "Deprecated: use `dunningSettings.level` field instead", "type": "string", "nullable": true, "example": "zahlungserinnerung" }, "dunningDate": { "description": "Deprecated: use `dunningSettings.date` field instead", "type": "string", "format": "date", "nullable": true, "example": "2022-08-10" }, "dunningSettings": { "description": "Dunning setting for document", "type": "object", "additionalProperties": false, "required": [ "level", "date", "comment", "sent" ], "nullable": true, "properties": { "level": { "type": "string", "enum": [ "noReminder", "paymentReminder", "reminder1", "reminder2", "reminder3", "debtCollection", "lossOfReceivables" ], "example": "paymentReminder" }, "date": { "format": "date", "example": "2022-08-10" }, "comment": { "format": "string", "example": "This is a comment" }, "sent": { "type": "boolean", "format": "boolean", "example": true } }, "example": { "level": "paymentReminder", "date": "2022-08-10", "comment": "First reminder sent", "sent": true } }, "dunningManualSettings": { "description": "Expert mode: The payment settings can be set manually with this check mark. Note: This tick overrides the automatic calculation of the incoming payment. This means that the invoice is NOT included in the dunning process. If you use the incoming payment via the account statements, this checkmark should only be used for manual adjustments, because these settings are usually set automatically via the incoming payment.", "type": "object", "additionalProperties": false, "required": [ "paymentStatus", "paidAt", "actualAmount", "discountGiven" ], "nullable": true, "properties": { "paymentStatus": { "type": "string", "description": "Status of the payment. Value `unknown` is displayed when a status from database cannot be identified. Value `unknown` cannot be used when creating or updating statuses (POST or PATCH endpoints)", "enum": [ "pending", "paid", "partlyPaid", "canceled", "partialCancellation", "badDebt", "debited", "unknown" ], "example": "pending" }, "paidAt": { "description": "Date of the payment", "type": "string", "format": "date", "nullable": true, "example": "2022-08-10" }, "actualAmount": { "description": "Amount of the payment", "type": "number", "format": "float", "example": 22.33 }, "discountGiven": { "description": "Discount given for a payment", "type": "number", "format": "float", "example": 22.33 } }, "example": { "paymentStatus": "paid", "paidAt": "2022-08-10", "actualAmount": 22.33, "discountGiven": 2 } }, "gln": { "x-description-missing": true, "type": "string", "nullable": true, "example": "12345" }, "taxation": { "x-description-missing": true, "type": "number", "example": 0 }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "number" }, "position": { "type": "number" }, "saleOrderPositionId": { "type": "number" }, "createdAt": { "type": "string", "format": "date-time" }, "productId": { "type": "number" }, "productNumber": { "type": "string" }, "description": { "type": "string" }, "quantity": { "type": "number" }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "vatCategory": { "type": "string" }, "taxRate": { "type": "number", "format": "float" }, "discount": { "type": "number", "format": "float", "nullable": true } }, "example": { "id": 1, "position": 1, "saleOrderPositionId": 3, "createdAt": "2022-08-10T10:14:26+02:00", "productId": 1, "productNumber": "100001", "description": "Kaffee ganze Bohne 1kg", "quantity": 1, "price": { "amount": "24.99", "currency": "EUR" }, "vatCategory": "normal", "taxRate": 19, "discount": 0 } } } }, "example": { "id": "142", "documentNumber": "1200132", "documentDate": "2022-01-07T00:00:00+01:00", "log": { "createdAt": "2022-01-07T13:43:12+01:00", "sentAt": "2022-01-07T13:43:12+01:00", "createdBy": { "name": "John Doe" }, "sentBy": { "name": "John Doe" }, "updatedAt": "2022-03-31T00:16:03+02:00" }, "amountGross": 49.99, "amountNet": 42.01, "costCenter": "3456", "status": "sent", "project": { "id": "6", "name": "Shopware", "abbreviation": "B2C-SW" }, "customer": { "id": "3099", "name": "John Doe" }, "externalOrderReference": "62720", "devCustomer": "50161", "billingAddress": { "id": "1", "name": "John Doe", "contactPerson": "", "department": "", "subdivision": "", "street": "Street 10", "additionalDetails": "", "city": "Berlin", "zipCode": "10101", "country": "DE", "email": "john.doe@email.de" }, "paymentMethodName": "paypal", "paymentStatus": "pending", "dunning": "zahlungserinnerung", "dunningDate": null, "gln": "12345", "taxation": 0, "tags": [], "positions": [ { "id": 421, "position": 1, "saleOrderPositionId": 13521, "createdAt": "2022-01-07T13:43:12+01:00", "productId": 864, "productNumber": "FR5232501", "description": "Example Product", "quantity": 1, "price": { "amount": "49.99", "currency": "EUR" }, "vatCategory": "normal", "taxRate": 0, "discount": 0 } ], "paymentTerms": { "earlyPaymentDiscount": 0, "earlyPaymentDate": "2022-01-17T00:00:00+01:00", "dueDate": "2022-02-06T00:00:00+01:00" } } } } } }, "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "3" } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Invoice" ], "operationId": "invoice.delete", "summary": "Delete single invoice", "description": "Delete a single invoice", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Invoice" ], "operationId": "invoice.update", "summary": "Update single invoice", "description": "Update a single invoice", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Update single invoice", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "date": { "type": "string", "format": "date" }, "costCenter": { "type": "string" }, "project": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customer": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "tags": { "type": "array", "items": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } }, "devCustomer": { "type": "string", "nullable": true }, "billingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "contactPerson", "department", "subdivision", "street", "additionalDetails", "city", "zipCode", "country" ], "nullable": true, "properties": { "name": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string", "nullable": true }, "subdivision": { "type": "string", "nullable": true }, "street": { "type": "string" }, "additionalDetails": { "type": "string", "nullable": true }, "city": { "type": "string" }, "zipCode": { "type": "string" }, "country": { "type": "string", "pattern": "[A-Z]{2}" } } }, "paymentMethodName": { "type": "string" }, "gln": { "type": "string", "nullable": true }, "taxation": { "type": "string", "pattern": "\\d+" }, "dunningSettings": { "description": "Dunning setting for document", "type": "object", "additionalProperties": false, "required": [ "level", "date", "comment", "sent" ], "nullable": true, "properties": { "level": { "type": "string", "enum": [ "noReminder", "paymentReminder", "reminder1", "reminder2", "reminder3", "debtCollection", "lossOfReceivables" ], "example": "paymentReminder" }, "date": { "format": "date", "example": "2022-08-10" }, "comment": { "format": "string", "example": "This is a comment" }, "sent": { "type": "boolean", "format": "boolean", "example": true } }, "example": { "level": "paymentReminder", "date": "2022-08-10", "comment": "First reminder sent", "sent": true } }, "dunningManualSettings": { "description": "Expert mode: The payment settings can be set manually with this check mark. Note: This tick overrides the automatic calculation of the incoming payment. This means that the invoice is NOT included in the dunning process. If you use the incoming payment via the account statements, this checkmark should only be used for manual adjustments, because these settings are usually set automatically via the incoming payment.", "type": "object", "additionalProperties": false, "required": [ "paymentStatus", "paidAt", "actualAmount", "discountGiven" ], "nullable": true, "properties": { "paymentStatus": { "type": "string", "description": "Status of the payment. Value `unknown` is displayed when a status from database cannot be identified. Value `unknown` cannot be used when creating or updating statuses (POST or PATCH endpoints)", "enum": [ "pending", "paid", "partlyPaid", "canceled", "partialCancellation", "badDebt", "debited", "unknown" ], "example": "pending" }, "paidAt": { "description": "Date of the payment", "type": "string", "format": "date", "nullable": true, "example": "2022-08-10" }, "actualAmount": { "description": "Amount of the payment", "type": "number", "format": "float", "example": 22.33 }, "discountGiven": { "description": "Discount given for a payment", "type": "number", "format": "float", "example": 22.33 } }, "example": { "paymentStatus": "paid", "paidAt": "2022-08-10", "actualAmount": 22.33, "discountGiven": 2 } } } }, "examples": { "Update invoice": { "value": { "date": "2020-01-01", "costCenter": "3456", "project": { "id": "1" }, "customer": { "id": "12" }, "tags": [ { "id": "1" }, { "id": "2" } ], "devCustomer": "dev", "billingAddress": { "name": "John Doe", "contactPerson": "John Doe", "department": "Sales", "subdivision": "Sales", "street": "Main Street 1", "additionalDetails": "1st floor", "city": "New York", "zipCode": "12345", "country": "US" }, "paymentMethodName": "invoice", "gln": null, "taxation": "0", "dunningSettings": { "level": "paymentReminder", "date": "2022-08-10", "comment": "This is a comment", "sent": true }, "dunningManualSettings": { "paymentStatus": "pending", "paidAt": "2022-08-10", "actualAmount": 10.12, "discountGiven": 1.12 } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices/{id}/balance": { "get": { "tags": [ "Invoice" ], "operationId": "invoice.balance", "summary": "View Invoice Balance", "description": "Returns balance information (documents, payments) for a single invoice", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "documents": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "invoices": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "date": { "type": "string", "format": "date-time" } } } }, "creditNotes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "date": { "type": "string", "format": "date-time" } } } } }, "example": { "invoices": [ { "id": "1", "amount": { "amount": "13.37", "currency": "EUR" }, "date": "2023-08-13T14:45:36+02:00" } ], "creditNotes": [ { "id": "1", "amount": { "amount": "13.37", "currency": "EUR" }, "date": "2023-08-13T14:45:36+02:00" } ] } }, "payments": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "reference": { "type": "object", "additionalProperties": false, "description": "Only one of the actually referenced object.", "properties": { "invoice": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "creditNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "payment": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "type": "string", "enum": [ "incoming", "outgoing" ], "nullable": false }, "statementId": { "type": "string" }, "accountName": { "type": "string" }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "date": { "type": "string", "format": "date-time" } } } } } } }, "example": { "documents": { "invoices": [ { "id": "87", "amount": { "amount": "1483.63", "currency": "EUR" }, "date": "2024-03-08T00:00:00+01:00" } ], "creditNotes": [ { "id": "2", "amount": { "amount": "24.99", "currency": "EUR" }, "date": "2024-06-17T00:00:00+02:00" } ] }, "payments": [] } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices/{id}/documents": { "get": { "tags": [ "Invoice" ], "operationId": "invoice.documents.view", "summary": "View related documents for invoice", "description": "Returns details for related documents of a single invoice.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "salesOrder": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "status": { "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "unknown" ] }, "documentNumber": { "type": "string" }, "documentUrl": { "type": "string" }, "documentDate": { "type": "string", "format": "date" } } } }, "deliveryNotes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "status": { "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "unknown" ] }, "documentNumber": { "type": "string" }, "documentUrl": { "type": "string" }, "documentDate": { "type": "string", "format": "date" } } } }, "creditNotes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "status": { "type": "string", "enum": [ "approved", "canceled", "completed", "created", "unknown" ] }, "documentNumber": { "type": "string" }, "documentUrl": { "type": "string" }, "documentDate": { "type": "string", "format": "date" } } } }, "returns": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "status": { "type": "string", "enum": [ "created", "released", "sent", "canceled", "completed", "unknown" ] }, "documentNumber": { "type": "string" }, "documentUrl": { "type": "string" }, "documentDate": { "type": "string", "format": "date" } } } }, "pdfArchives": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentUrl": { "type": "string" }, "documentDate": { "type": "string", "format": "datetime" }, "documentName": { "type": "string" }, "createdBy": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" } } } } } } }, "example": { "salesOrder": [ { "id": "1", "status": "completed", "documentNumber": "2022-200000", "documentUrl": "https://example.xentral.biz?module=auftrag&action=pdf&id=1", "documentDate": "2024-02-22" } ], "deliveryNotes": [ { "id": "3", "status": "sent", "documentNumber": "2022-300002", "documentUrl": "https://example.xentral.biz?module=lieferschein&action=pdf&id=3", "documentDate": "2023-08-06" } ], "creditNotes": [ { "id": "19", "status": "created", "documentNumber": "2022-300002", "documentUrl": "https://example.xentral.biz?module=rechnung&action=pdffromarchive&id=19", "documentDate": "2022-08-10" } ], "returns": [ { "id": "19", "status": "created", "documentNumber": "2022-300002", "documentUrl": "https://example.xentral.biz?module=rechnung&action=pdffromarchive&id=19", "documentDate": "2022-08-10" } ], "pdfArchives": [ { "id": "19", "documentName": "0be068caab8e89774948bbd719453e1b_3_20220810_RE2022-400002.pdf", "createdBy": { "name": "Administrator" }, "documentUrl": "https://example.xentral.biz?module=rechnung&action=pdffromarchive&id=19", "documentDate": "2022-08-10 10:41:17" } ] } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices/{id}/positions": { "post": { "tags": [ "Invoice" ], "operationId": "invoice.createPositions", "summary": "Create Positions for Invoice", "description": "Adds invoice positions", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Invoice positions object\n\n The following payload structure is available:\n\nWhen a position has `salesOrderPosition.id` in the payload then product, quantity, price, vatCategory, taxRate, discounts are optional. The optional values override the values fetched from a sales order position\n\nWhen `salesOrderPosition.id` is not present in the payload or null, then product, quantity, price, vatCategory, taxRate, discounts are required", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "salesOrderPosition": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "quantity": { "description": "The quantity for the position", "type": "string", "format": "float", "example": "2.0" }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "deliveryDate": { "description": "The VAT category that applies to the position", "type": "string", "format": "date", "example": "2024-12-23" }, "discounts": { "description": "Discounts applied to position", "type": "object", "additionalProperties": false, "properties": { "totalPercent": { "description": "The percentage discount applied to position", "type": "string", "format": "float", "nullable": true, "example": "38.45" } }, "example": { "totalPercent": "38.45" } } } } }, "examples": { "Create invoice positions": { "value": [ { "product": { "id": "1" }, "quantity": "1.0", "price": { "amount": "100.00", "currency": "EUR" }, "deliveryDate": "2024-12-23" }, { "salesOrderPosition": { "id": "2" } } ] } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices/{id}/positions/{positionId}": { "delete": { "operationId": "invoice.deletePosition", "summary": "Delete Position from Invoice", "description": "Delete single invoice position", "tags": [ "Invoice" ], "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "positionId", "in": "path", "description": "Invoice position ID", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices/{id}/send": { "patch": { "tags": [ "Invoice" ], "operationId": "invoice.send", "summary": "Send invoice", "description": "Send invoice", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Send invoice", "content": { "application/json": { "schema": { "anyOf": [ { "type": "object", "properties": { "email": { "type": "object", "additionalProperties": false, "required": [ "to", "subject", "body" ], "properties": { "to": { "type": "array", "minItems": 1, "items": { "type": "string", "format": "email" } }, "cc": { "type": "array", "nullable": true, "items": { "type": "string", "format": "email" } }, "bcc": { "type": "array", "nullable": true, "items": { "type": "string", "format": "email" } }, "subject": { "type": "string" }, "body": { "type": "string" } } } } }, { "type": "object", "properties": { "printer": { "type": "object", "additionalProperties": false, "oneOf": [ { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, { "type": "object", "properties": { "name": { "type": "string" } } } ] } } } ] }, "examples": { "Send invoice by email": { "value": { "email": { "to": [ "test@example.com" ], "subject": "Your Invoice", "body": "Please find your invoice attached." } } }, "Send invoice to printer": { "value": { "printer": { "id": "1" } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/invoices/{id}/status": { "patch": { "tags": [ "Invoice" ], "operationId": "invoice.status", "summary": "Update status for single invoice", "description": "Update status for single invoice", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } }, "requestBody": { "description": "Update status for single invoice", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "description": "At least one of the properties must be present.", "properties": { "status": { "type": "string", "enum": [ "released", "sent" ] }, "paymentStatus": { "type": "string", "enum": [ "paid" ] } } }, "examples": { "Mark invoice as released": { "value": { "status": "released" } }, "Mark invoice as sent": { "value": { "status": "sent" } }, "Set invoice payment status": { "value": { "paymentStatus": "paid" } }, "Mark invoice as sent and set payment status": { "value": { "status": "sent", "paymentStatus": "paid" } } } } } } } }, "/api/v1/invoicesTags": { "get": { "tags": [ "Invoice Tag" ], "operationId": "invoiceTag.list", "summary": "List Invoice tags", "description": "Returns a collection with all invoice tags.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/liabilities": { "post": { "tags": [ "Liability" ], "operationId": "liability.create", "summary": "Create liability", "description": "Creates a single new liability.", "requestBody": { "description": "Create a liability object", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "supplier" ], "properties": { "date": { "x-description-missing": true, "type": "string", "format": "date", "nullable": true }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Supplier reference" }, "supplierInvoiceNumber": { "type": "string", "description": "The invoice number issued by the supplier" }, "receiptDate": { "description": "The date when the supplier invoice was received by the recipient", "type": "string", "format": "date-time", "nullable": true }, "serviceDate": { "description": "The date on which the service was provided", "type": "string", "format": "date", "nullable": true }, "status": { "description": "Workflow status of the liability", "type": "string", "nullable": false, "enum": [ "PENDING", "PAID", "PARTIALLY_PAID", "CANCELLED" ] }, "clarificationCase": { "type": "boolean", "description": "A boolean flag to mark the liability as a clarification case, e.g. to check the deferred account assignments or open questions" }, "clarificationReason": { "type": "string", "description": "A string that specifies the reason or justification provided for the clarification case in the liability process." }, "release": { "type": "boolean", "description": "A boolean flag with which the goods delivery is confirmed as complete and the traffic light is switched to green." }, "invoiceRelease": { "type": "boolean", "description": "A boolean flag with which the accounting check of the incoming document is confirmed as complete and correct for tax purposes and the traffic light is switched to green." }, "internalComment": { "type": "string", "description": "A text field for adding internal comments or notes related to the liability, not visible to external parties." }, "financials": { "type": "object", "additionalProperties": false, "description": "financial information", "example": { "amountGross": { "amount": "100.0", "currency": "EUR" }, "amountNet": { "amount": "90.0", "currency": "EUR" }, "freightCharge": 10, "taxation": "VAT", "taxes": { "normalTax": { "rate": 19, "amount": 19 }, "reducedTax": { "rate": 7, "amount": 7 }, "customTax1": { "rate": 8.1, "amount": 50.5 }, "customTax2": { "rate": 10, "amount": 50.5 } }, "paymentTerms": { "dueDate": "2020-01-31", "earlyPaymentDate": "2020-01-15", "earlyPaymentDiscount": 2, "earlyPaymentDiscountAmount": 2 }, "bookingText": "Liability booking text", "payment": { "methodName": "Bank transfer", "paidAmount": 100, "paidOnDate": "2020-01-01", "discountReceived": 2 }, "glAccount": "123456", "costCenter": "123456" }, "properties": { "amountGross": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "amountNet": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "freightCharge": { "type": "number", "format": "float", "description": "Freight costs" }, "taxation": { "x-description-missing": true, "type": "string" }, "taxes": { "type": "object", "additionalProperties": false, "properties": { "normalTax": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } }, "reducedTax": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } }, "customTax1": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } }, "customTax2": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } } } }, "paymentTerms": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "dueDate": { "type": "string", "format": "date", "nullable": true }, "earlyPaymentDate": { "type": "string", "format": "date", "nullable": true }, "earlyPaymentDiscount": { "type": "number", "format": "float" }, "earlyPaymentDiscountAmount": { "type": "number", "format": "float" } } }, "bookingText": { "description": "header booking text", "type": "string" }, "payment": { "type": "object", "additionalProperties": false, "properties": { "methodName": { "x-description-missing": true, "type": "string" }, "paidAmount": { "type": "number", "format": "float" }, "paidOnDate": { "type": "string", "format": "date", "nullable": true }, "discountReceived": { "type": "number", "format": "float" } }, "description": "payment information" }, "glAccount": { "type": "string", "nullable": true, "description": "ledger account" }, "costCenter": { "type": "string", "nullable": true, "description": "cost center" } } }, "assignedPurchaseOrders": { "x-description-missing": true, "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "project" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string" }, "amountGross": { "type": "number", "format": "float" }, "amountNet": { "type": "number", "format": "float" }, "project": { "type": "object", "additionalProperties": false, "description": "related project ID", "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "salesOrder": { "type": "object", "nullable": true, "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "costCenter": { "type": "string" } } } }, "bookingText": { "description": "header booking text", "type": "string" }, "project": { "type": "object", "additionalProperties": false, "description": "related project ID", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "accounting": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "glAccount": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "bookingText": { "type": "string", "description": "1st accounting entry text" }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "tax": { "type": "object", "description": "percentual tax rate", "additionalProperties": false, "properties": { "rate": { "type": "number", "format": "float" } } }, "costCenter": { "type": "string" } } } }, "paymentTerms": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "dueDate": { "type": "string", "format": "date", "nullable": true }, "earlyPaymentDate": { "type": "string", "format": "date", "nullable": true }, "earlyPaymentDiscount": { "type": "number", "format": "float" } } }, "payment": { "type": "object", "additionalProperties": false, "properties": { "methodName": { "x-description-missing": true, "type": "string" }, "paidAmount": { "type": "number", "format": "float" }, "paidOnDate": { "type": "string", "format": "date", "nullable": true }, "discountReceived": { "type": "number", "format": "float" } }, "description": "payment information" }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "product", "price", "tax" ], "properties": { "sort": { "description": "The position of the position in the list", "type": "number", "minimum": 0 }, "number": { "type": "string" }, "purchaseOrder": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "product": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "supplierProductNumber": { "type": "string" } } }, "deliveryDate": { "description": "The date the position was delivered", "type": "string", "format": "date", "nullable": true }, "quantity": { "description": "The quantity of the position", "type": "number", "minimum": 0 }, "unit": { "type": "string" }, "packagingUnit": { "type": "string" }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "costCenter": { "type": "string" }, "tax": { "type": "object", "additionalProperties": false, "required": [ "rate" ], "properties": { "vatCategory": { "description": "The category of the value added tax", "type": "string" }, "rate": { "description": "Tax rate in percent", "type": "number", "format": "float", "minimum": 0, "nullable": false }, "taxText": { "type": "string", "nullable": true } } } } } } } }, "examples": { "create liability": { "value": { "date": "2024-01-01", "supplier": { "id": "123456" }, "supplierInvoiceNumber": "123456", "receiptDate": "2024-01-01T12:00:00Z", "status": "PENDING", "clarificationCase": true, "clarificationReason": "Awaiting customer confirmation on pricing details.", "release": true, "invoiceRelease": false, "internalComment": "Priority customer. Expedite processing once clarification is received.", "financials": { "amountGross": { "amount": "100.0", "currency": "EUR" }, "freightCharge": 10, "taxation": "VAT", "taxes": { "normalTax": { "rate": 19, "amount": 19 }, "reducedTax": { "rate": 7, "amount": 7 }, "customTax1": { "rate": 8.1, "amount": 50.5 }, "customTax2": { "rate": 10, "amount": 50.5 } }, "paymentTerms": { "dueDate": "2020-01-31", "earlyPaymentDate": "2020-01-15", "earlyPaymentDiscount": 2 }, "bookingText": "Liability booking text", "payment": { "methodName": "Bank transfer", "paidAmount": 100, "paidOnDate": "2020-01-01", "discountReceived": 2 }, "glAccount": "123456", "costCenter": "123456" }, "assignedPurchaseOrders": [ { "id": "123456", "number": "123456", "amountGross": 100, "amountNet": 100, "project": { "id": "123456" }, "salesOrder": { "id": "123456" }, "costCenter": "123456" } ], "bookingText": "Liability booking text", "project": { "id": "123456" }, "accounting": [ { "glAccount": "123456", "bookingText": "Liability booking text", "amount": { "amount": "100.0", "currency": "EUR" }, "tax": { "rate": 19 }, "costCenter": "123456" } ], "paymentTerms": { "dueDate": "2020-01-31", "earlyPaymentDate": "2020-01-15" }, "positions": [ { "sort": 1, "number": "123456", "purchaseOrder": { "id": "123456" }, "product": { "id": "123456", "supplierProductNumber": "123456" }, "deliveryDate": "2024-01-01", "quantity": 1, "unit": "pcs", "packagingUnit": "pcs", "price": { "amount": "100.0", "currency": "EUR" }, "costCenter": "123456", "tax": { "vatCategory": "19%", "rate": 19, "taxText": "VAT 19%" } } ] } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Liability" ], "operationId": "liability.list", "summary": "List Liabilities", "description": "Returns a collection with all Liabilities", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "supplier", "status", "project", "createdAt", "dueDate", "fromDate", "missingPaymentApproval", "goodsReceiptInspectionMissing", "incomingInvoiceVerificationMissing", "noAccountAssignment", "missingPayment", "paidLiability", "canceledLiability", "missingDocument", "invoiceDateAndReceiptVariousMonths" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "allIn", "allNotIn", "greaterThan", "lessThan" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } } } ] } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "documentNumber", "status", "project", "createdAt" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "A list of liabilities", "example": [ { "id": "123456", "documentNumber": "LB-100001", "date": "2020-01-15", "createdAt": "2020-01-01 12:00:00+02:00", "createdBy": { "name": "John Doe" }, "updatedAt": "2020-01-01 13:00:00+02:00", "status": "PENDING", "supplier": { "id": "123456", "name": "Test", "number": "123456" }, "supplierInvoiceNumber": "INV-23456", "receiptDate": "2020-01-01", "financials": { "amountGross": { "amount": "100.0", "currency": "EUR" }, "freightCharge": 10, "taxation": "VAT", "taxes": { "normalTax": { "rate": 19, "amount": 19 }, "reducedTax": { "rate": 7, "amount": 7 }, "customTax1": { "rate": 8.1, "amount": 50.5 }, "customTax2": { "rate": 10, "amount": 50.5 } }, "paymentTerms": { "dueDate": "2020-01-31", "earlyPaymentDate": "2020-01-15", "earlyPaymentDiscount": 2 }, "bookingText": "Liability booking text", "payment": { "methodName": "Bank transfer", "paidAmount": 100, "paidOnDate": "2020-01-01", "discountReceived": 2 }, "bank": { "iban": "MK641692T03H5L89810", "bic": "CNSXFR6D" }, "amountNet": { "amount": "14.5300", "currency": "EUR" }, "remainingSum": { "amount": "10.00", "currency": "EUR" }, "totalAmount": { "amount": "20.00", "currency": "EUR" } }, "purchaseOrder": { "id": "123" }, "project": { "id": "1" }, "icons": { "goodsReceiptCheck": "ok", "invoiceCheck": "ok", "accountAssignment": "ok", "paymentStatus": "partially_paid", "accountLink": "missing" }, "tags": [ { "id": "1", "name": "Erledigt", "color": "339966" }, { "id": "2", "name": "Zu klären", "color": "ff0000" } ] } ], "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "description": "Incremental document number. Before the document is approved, there is no document number.", "type": "string", "nullable": true, "example": "LB-100001" }, "date": { "description": "Date of the supplier's invoice", "type": "string", "nullable": false, "format": "date", "example": "2020-01-15" }, "createdAt": { "x-description-missing": true, "type": "string", "nullable": false, "format": "date-time", "example": "2020-01-01 12:00:00+02:00" }, "createdBy": { "description": "The user that created the liability", "example": { "name": "John Doe" }, "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string", "nullable": true } } }, "updatedAt": { "x-description-missing": true, "type": "string", "nullable": false, "format": "date-time", "example": "2020-01-01 13:00:00+02:00" }, "status": { "description": "Workflow status of the liability", "type": "string", "nullable": false, "enum": [ "PENDING", "PAID", "PARTIALLY_PAID", "CANCELLED" ], "example": "PENDING" }, "supplier": { "description": "The supplier that issued the invoice", "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true, "example": "Test" }, "number": { "type": "string", "nullable": true, "example": "123456" } }, "example": { "id": "123456" } }, "supplierInvoiceNumber": { "description": "Document number and receipt Day of the invoice in the supplier's system", "type": "string", "example": "INV-23456" }, "receiptDate": { "description": "Day when the invoice was received", "type": "string", "nullable": true, "format": "date", "example": "2020-01-01" }, "financials": { "description": "Financial information", "example": { "amountGross": { "amount": "100.0", "currency": "EUR" }, "freightCharge": 10, "taxation": "VAT", "taxes": { "normalTax": { "rate": 19, "amount": 19 }, "reducedTax": { "rate": 7, "amount": 7 }, "customTax1": { "rate": 8.1, "amount": 50.5 }, "customTax2": { "rate": 10, "amount": 50.5 } }, "paymentTerms": { "dueDate": "2020-01-31", "earlyPaymentDate": "2020-01-15", "earlyPaymentDiscount": 2 }, "bookingText": "Liability booking text", "payment": { "methodName": "Bank transfer", "paidAmount": 100, "paidOnDate": "2020-01-01", "discountReceived": 2 }, "bank": { "iban": "ABC", "bic": "de4" }, "amountNet": { "amount": "0.0000", "currency": "EUR" }, "remainingSum": { "amount": "0.00", "currency": "EUR" }, "totalAmount": { "amount": "0.00", "currency": "EUR" } }, "type": "object", "additionalProperties": false, "properties": { "amountGross": { "description": "Gross value of the liability", "type": "object", "additionalProperties": false, "required": [ "amount", "currency" ], "properties": { "amount": { "type": "string", "nullable": false, "format": "float", "example": "1234.56", "x-description-missing": true }, "currency": { "type": "string", "nullable": false, "example": "EUR", "x-description-missing": true } } }, "freightCharge": { "x-description-missing": true, "type": "number", "nullable": true, "example": 9.3 }, "taxation": { "description": "The taxation method", "type": "string", "example": "Domestic", "nullable": false }, "taxes": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "normalTax", "reducedTax", "customTax1", "customTax2" ], "properties": { "normalTax": { "description": "The normal tax rate", "type": "object", "nullable": true, "additionalProperties": false, "required": [ "rate", "amount" ], "properties": { "rate": { "description": "The tax rate in percent", "type": "number", "nullable": true, "example": 19 }, "amount": { "description": "The tax amount", "type": "number", "nullable": true, "example": 120.5 } } }, "reducedTax": { "description": "The reduced tax rate", "type": "object", "nullable": true, "additionalProperties": false, "required": [ "rate", "amount" ], "properties": { "rate": { "description": "The tax rate in percent", "type": "number", "nullable": true, "example": 7 }, "amount": { "description": "The tax amount", "type": "number", "nullable": true, "example": 60.5 } } }, "customTax1": { "description": "The first custom tax rate", "type": "object", "nullable": true, "additionalProperties": false, "required": [ "rate", "amount" ], "properties": { "rate": { "description": "The tax rate in percent", "type": "number", "nullable": true, "example": 8.1 }, "amount": { "description": "The tax amount", "type": "number", "nullable": true, "example": 50.5 } } }, "customTax2": { "description": "The second custom tax rate", "type": "object", "nullable": true, "additionalProperties": false, "required": [ "rate", "amount" ], "properties": { "rate": { "description": "The tax rate in percent", "type": "number", "nullable": true, "example": 10 }, "amount": { "description": "The tax amount", "type": "number", "nullable": true, "example": 50.5 } } } } }, "bookingText": { "description": "header booking text", "type": "string" }, "paymentTerms": { "description": "The payment terms", "type": "object", "additionalProperties": false, "required": [ "dueDate", "earlyPaymentDate", "earlyPaymentDiscount" ], "properties": { "dueDate": { "description": "The due date of the payment", "type": "string", "nullable": true, "example": "2020-01-15" }, "earlyPaymentDate": { "description": "The date when the early payment discount is valid", "type": "string", "nullable": true, "example": "2020-01-10" }, "earlyPaymentDiscount": { "description": "The discount for early payment", "type": "number", "nullable": false, "example": 2.5 } } }, "payment": { "description": "Information about the payment", "type": "object", "additionalProperties": false, "required": [ "methodName", "paidAmount", "paidOnDate", "discountReceived" ], "properties": { "methodName": { "description": "Name of the used payment method", "type": "string", "nullable": false, "example": "invoice" }, "paidAmount": { "description": "The amount that was paid already", "type": "number", "nullable": false, "example": 1234.56 }, "paidOnDate": { "description": "The date when the latest payment was made", "type": "string", "nullable": true, "example": "2020-01-12" }, "discountReceived": { "description": "The discount that was received from the supplier", "type": "number", "nullable": false, "example": 12.34 } } }, "bank": { "type": "object", "properties": { "iban": { "type": "string", "example": "MK641692T03H5L89810" }, "bic": { "type": "string", "example": "CNSXFR6D" } } }, "amountNet": { "description": "Net value of the liability", "type": "object", "additionalProperties": false, "required": [ "amount", "currency" ], "properties": { "amount": { "type": "string", "nullable": false, "format": "float", "example": "14.56", "x-description-missing": true }, "currency": { "type": "string", "nullable": false, "example": "EUR", "x-description-missing": true } } }, "remainingSum": { "description": "Remaining sum of the liability", "type": "object", "additionalProperties": false, "required": [ "amount", "currency" ], "properties": { "amount": { "type": "string", "nullable": false, "format": "float", "example": "10.00", "x-description-missing": true }, "currency": { "type": "string", "nullable": false, "example": "EUR", "x-description-missing": true } } }, "totalAmount": { "description": "Total amount of the liability", "type": "object", "additionalProperties": false, "required": [ "amount", "currency" ], "properties": { "amount": { "type": "string", "nullable": false, "format": "float", "example": "20.00", "x-description-missing": true }, "currency": { "type": "string", "nullable": false, "example": "EUR", "x-description-missing": true } } } } }, "purchaseOrder": { "description": "The purchase order associated with the liability", "example": { "id": "123" }, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "project": { "x-description-missing": true, "type": "object", "additionalProperties": false, "example": { "id": "1" }, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "icons": { "x-description-missing": true, "type": "object", "properties": { "goodsReceiptCheck": { "type": "string" }, "invoiceCheck": { "type": "string" }, "accountAssignment": { "type": "string" }, "paymentStatus": { "type": "string" }, "accountLink": { "type": "string" } }, "example": { "goodsReceiptCheck": "ok", "invoiceCheck": "ok", "accountAssignment": "ok", "paymentStatus": "partially_paid", "accountLink": "missing" } }, "tags": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" } } }, "example": [ { "id": "1", "name": "Erledigt", "color": "339966" }, { "id": "2", "name": "Zu klären", "color": "ff0000" } ] } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/liabilities-recurring": { "post": { "tags": [ "Liability" ], "operationId": "liability.create.recurring", "summary": "Create recurring liability", "description": "Creates a single new recurring liability.", "requestBody": { "description": "Create a RecurringLiability object", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "creationType", "type", "active" ], "properties": { "creationType": { "type": "string", "description": "Type of RecurringLiability creation" }, "type": { "type": "string", "description": "RecurringLiability type" }, "active": { "type": "boolean", "description": "Indicates if the RecurringLiability is active" }, "filter": { "type": "string", "description": "value is booking text for creationType=incoming_payment and day for creationType=date" }, "debit": { "type": "string", "description": "value is debit for creationType=incoming_payment and amount for creationType=date" }, "credit": { "type": "string", "description": "Credit amount" }, "fee": { "type": "string", "description": "RecurringLiability fee" }, "currency": { "type": "string", "description": "value is currency for creationType=incoming_payment,date" }, "contraAccount": { "type": "string", "description": "Contra account description" }, "invoiceNumber": { "type": "string", "description": "Invoice number related to the RecurringLiability" }, "purpose": { "type": "string", "description": "Purpose of the RecurringLiability" }, "costCenter": { "type": "string", "description": "Cost center description" }, "paymentMethod": { "type": "string", "description": "Payment method used" }, "approveGoodsReceiptInspection": { "type": "boolean", "description": "Approval for goods receipt inspection" }, "approveIncomingInvoiceInspection": { "type": "boolean", "description": "Approval for incoming invoice inspection" }, "liabilityAmount": { "type": "string", "description": "Liability amount for the RecurringLiability" }, "liabilityCurrency": { "type": "string", "description": "Liability currency for the RecurringLiability" }, "value": { "type": "string", "description": "value is supplier description for type=liability, contraAccount for type=chart_of_accounts, errorReason for type=import_error" } } }, "examples": { "Create Recurring Liability -- creationType - by incoming payment and type - liability": { "value": { "creationType": "incoming_payment", "type": "liability", "active": true, "filter": "filter is bookingText test", "debit": "12", "credit": "11", "fee": "1", "currency": "EUR", "value": "26171 Sandra Krämer (Dresden)", "contraAccount": "account label", "invoiceNumber": "INV-DE-UOSS-123456789-1234-567", "purpose": "purpose test", "costCenter": "5049 CostCenter Description", "paymentMethod": "Amazon", "approveGoodsReceiptInspection": true, "approveIncomingInvoiceInspection": true } }, "Create Recurring Liability -- creationType - by incoming payment and type - chart of accounts": { "value": { "creationType": "incoming_payment", "type": "chart_of_accounts", "active": true, "filter": "filter is bookingText test", "debit": "12", "credit": "11", "fee": "1", "currency": "EUR", "contraAccount": "account label", "value": "account label" } }, "Create Recurring Liability -- creationType - by incoming payment and type - import error": { "value": { "creationType": "incoming_payment", "type": "import_error", "active": true, "filter": "filter is bookingText test", "debit": "12", "credit": "11", "fee": "1", "currency": "EUR", "value": "Some error" } }, "Create Recurring Liability -- creationType - by date and type - liability": { "value": { "creationType": "date", "type": "liability", "active": true, "filter": "1", "value": "26171 Sandra Krämer (Dresden)", "contraAccount": "account label", "invoiceNumber": "INV-DE-UOSS-123456789-1234-567", "purpose": "purpose test", "costCenter": "5049 CostCenter Description", "paymentMethod": "Amazon", "approveGoodsReceiptInspection": true, "approveIncomingInvoiceInspection": true, "debit": "10", "currency": "EUR" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/liabilities/{id}": { "get": { "tags": [ "Liability" ], "operationId": "liability.view", "summary": "View liability", "description": "Returns details of a single liability.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "x-description-missing": true, "type": "string", "nullable": true, "example": "LB-100001" }, "date": { "x-description-missing": true, "type": "string", "format": "date", "example": "2020-01-15" }, "createdAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2020-01-01 12:00:00+02:00" }, "createdBy": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "name" ], "nullable": true, "properties": { "name": { "type": "string" } }, "example": { "name": "John Doe" } }, "updatedAt": { "x-description-missing": true, "type": "string", "nullable": false, "format": "date-time", "example": "2020-01-01 13:00:00+02:00" }, "supplierInvoice": { "type": "string", "description": "The invoice number issued by the supplier", "example": "INV-12345" }, "receiptDate": { "description": "The date when the supplier invoice was received by the recipient", "type": "string", "format": "date-time", "nullable": true, "example": "2020-01-01T12:00:00Z" }, "serviceDate": { "description": "The date on which the service was provided", "type": "string", "format": "date", "nullable": true, "example": "2020-01-01" }, "deliveryDate": { "description": "The date on which the goods where shipped or the services where rendered", "type": "string", "format": "date", "nullable": true, "example": "2020-01-01" }, "status": { "type": "string", "enum": [ "PENDING", "PAID", "PARTIALLY_PAID", "CANCELLED" ], "description": "Status of liability", "example": "PENDING" }, "supplier": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Supplier reference", "example": { "id": "123456" } }, "supplierInvoiceNumber": { "type": "string", "description": "The invoice number issued by the supplier", "example": "INV-12345" }, "financials": { "type": "object", "additionalProperties": false, "description": "financial information", "example": { "amountGross": { "amount": "100.0", "currency": "EUR" }, "amountNet": { "amount": "90.0", "currency": "EUR" }, "freightCharge": 10, "taxation": "VAT", "taxes": { "normalTax": { "rate": 19, "amount": 19 }, "reducedTax": { "rate": 7, "amount": 7 }, "customTax1": { "rate": 8.1, "amount": 50.5 }, "customTax2": { "rate": 10, "amount": 50.5 } }, "paymentTerms": { "dueDate": "2020-01-31", "earlyPaymentDate": "2020-01-15", "earlyPaymentDiscount": 2, "earlyPaymentDiscountAmount": 2 }, "bookingText": "Liability booking text", "payment": { "methodName": "Bank transfer", "paidAmount": 100, "paidOnDate": "2020-01-01", "discountReceived": 2 }, "glAccount": "123456", "costCenter": "123456" }, "properties": { "amountGross": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "amountNet": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "freightCharge": { "type": "number", "format": "float", "description": "Freight costs" }, "taxation": { "x-description-missing": true, "type": "string" }, "taxes": { "type": "object", "additionalProperties": false, "properties": { "normalTax": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } }, "reducedTax": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } }, "customTax1": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } }, "customTax2": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "number", "description": "percentual rate" }, "amount": { "type": "number", "format": "float", "description": "absolut amount" } } } } }, "paymentTerms": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "dueDate": { "type": "string", "format": "date", "nullable": true }, "earlyPaymentDate": { "type": "string", "format": "date", "nullable": true }, "earlyPaymentDiscount": { "type": "number", "format": "float" }, "earlyPaymentDiscountAmount": { "type": "number", "format": "float" } } }, "bookingText": { "description": "header booking text", "type": "string" }, "payment": { "type": "object", "additionalProperties": false, "properties": { "methodName": { "x-description-missing": true, "type": "string" }, "paidAmount": { "type": "number", "format": "float" }, "paidOnDate": { "type": "string", "format": "date", "nullable": true }, "discountReceived": { "type": "number", "format": "float" } }, "description": "payment information" }, "glAccount": { "type": "string", "nullable": true, "description": "ledger account" }, "costCenter": { "type": "string", "nullable": true, "description": "cost center" } } }, "purchaseOrder": { "type": "object", "additionalProperties": false, "nullable": true, "description": "global connected purchase order", "example": { "id": "123456" }, "properties": { "id": { "type": "string", "description": "related purchase order" } } }, "assignedPurchaseOrders": { "x-description-missing": true, "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string" }, "amountGross": { "type": "number", "format": "float" }, "amountNet": { "type": "number", "format": "float" }, "project": { "type": "object", "additionalProperties": false, "description": "related project ID", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "salesOrder": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "costCenter": { "type": "string" }, "comment": { "type": "string" } } } }, "project": { "type": "object", "additionalProperties": false, "description": "related project ID", "example": { "id": "1" }, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "accounting": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "glAccount": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "bookingText": { "type": "string", "description": "1st accounting entry text" }, "amount": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "tax": { "type": "object", "description": "percentual tax rate", "additionalProperties": false, "properties": { "rate": { "type": "number", "format": "float" } } }, "costCenter": { "type": "string" } } } }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "sort": { "description": "The position of the position in the list", "type": "number" }, "number": { "type": "string" }, "purchaseOrder": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "product": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "supplierProductNumber": { "type": "string" } } }, "deliveryDate": { "description": "The date the position was delivered", "type": "string", "format": "date", "nullable": true }, "quantity": { "description": "The quantity of the position", "type": "number" }, "unit": { "type": "string" }, "packagingUnit": { "type": "string" }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "costCenter": { "type": "string" }, "tax": { "type": "object", "additionalProperties": false, "properties": { "vatCategory": { "description": "The category of the value added tax", "type": "string" }, "rate": { "description": "Tax rate in percent", "type": "number", "format": "float", "nullable": true }, "taxText": { "type": "string", "nullable": true } } } } } }, "purpose": { "type": "string", "nullable": true, "description": "The purpose", "example": "Test purpose" } }, "example": { "id": "123456", "documentNumber": "LB-100001", "date": "2020-01-15", "createdAt": "2020-01-01 12:00:00+02:00", "createdBy": { "name": "John Doe" }, "updatedAt": "2020-01-01 13:00:00+02:00", "supplierInvoice": "INV-12345", "receiptDate": "2020-01-01T12:00:00Z", "deliveryDate": "2020-01-01", "status": "PENDING", "supplier": { "id": "123456" }, "supplierInvoiceNumber": "INV-12345", "financials": { "amountGross": { "amount": "100.0", "currency": "EUR" }, "freightCharge": 10, "taxation": "VAT", "taxes": { "normalTax": { "rate": 19, "amount": 19 }, "reducedTax": { "rate": 7, "amount": 7 }, "customTax1": { "rate": 8.1, "amount": 50.5 }, "customTax2": { "rate": 10, "amount": 50.5 } }, "paymentTerms": { "dueDate": "2020-01-31", "earlyPaymentDate": "2020-01-15", "earlyPaymentDiscount": 2 }, "bookingText": "Liability booking text", "payment": { "methodName": "Bank transfer", "paidAmount": 100, "paidOnDate": "2020-01-01", "discountReceived": 2 }, "glAccount": "123456", "costCenter": "123456" }, "purchaseOrder": { "id": "123456" }, "assignedPurchaseOrders": [ { "id": "123456", "number": "123456", "amountGross": 100, "amountNet": 100, "project": { "id": "123456" }, "salesOrder": { "id": "123456" }, "costCenter": "123456" } ], "project": { "id": "1" }, "accounting": [ { "glAccount": "123456", "bookingText": "Liability booking text", "amount": { "amount": "100.0", "currency": "EUR" }, "tax": { "rate": 19 }, "costCenter": "123456" } ], "purpose": "test purpose" } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/liabilities/{id}/documents": { "post": { "tags": [ "Liability" ], "operationId": "liability.document.upload", "summary": "Add a liability document to an existing liability", "description": "Upload a file and adds this file as document to given liability", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Liability document create request payload", "content": { "application/json": { "schema": { "type": "object", "required": [ "fileName", "fileContent", "keyword" ], "properties": { "title": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "keyword": { "type": "string", "enum": [ "other", "receipt", "aknowledgement", "cover", "attachment" ] }, "fileName": { "type": "string" }, "fileContent": { "type": "string", "description": "Base64 encoded content document." } } }, "examples": { "Create Liability Document - minimal payload": { "value": { "keyword": "other", "fileName": "document.pdf", "fileContent": "dGVzdA==" } }, "Create Liability Document - fully qualified payload": { "value": { "title": "Liability document", "description": "This is a liability document", "keyword": "other", "fileName": "document.pdf", "fileContent": "dGVzdA==" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } } } } }, "/api/v1/paymentMethods": { "get": { "tags": [ "Payment Methods" ], "operationId": "paymentMethod.list", "summary": "Payment method list", "description": "Lists all payment methods.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "key", "op", "value" ], "properties": { "key": { "type": "string", "enum": [ "search", "id", "type", "project" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "type", "project" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "x-description-missing": true, "type": "string", "nullable": false, "example": "amazon" }, "designation": { "x-description-missing": true, "type": "string", "nullable": false, "example": "Amazon" }, "project": { "x-description-missing": true, "type": "object", "nullable": true, "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1" } } }, "example": { "id": "6", "type": "amazon", "project": { "id": "1" }, "designation": "Amazon" } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/paymentTransactions/{id}": { "get": { "tags": [ "Payment Transaction" ], "operationId": "paymentTransaction.view", "summary": "View a single payment transaction", "description": "Returns details of a single payment transaction", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "object", "description": "information about a payment transaction", "additionalProperties": false, "properties": { "returns": { "type": "array", "description": "List of return orders", "items": { "type": "object", "properties": { "id": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "creditNote": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "monetary": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "paymentStatus": { "type": "string", "description": "information about the the current status of the transaction", "example": "approved" }, "paymentReason": { "type": "string", "description": "information about the payment reason", "example": "some reason" } }, "example": { "creditNote": { "id": "3" }, "returns": [ { "returnOrder": { "id": "1" }, "salesOrder": { "id": "2" } } ], "monetary": { "amount": "12.34", "currency": "EUR" }, "paymentStatus": "error", "paymentReason": "Some reason" } } } }, "examples": { "Shows a single payment transaction": { "value": { "data": { "creditNote": { "id": "3" }, "returns": [ { "returnOrder": { "id": "1" }, "salesOrder": { "id": "2" } } ], "monetary": { "amount": "12.34", "currency": "EUR" }, "paymentStatus": "error", "paymentReason": "Some reason" } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/paymentTransactions/{id}/status": { "patch": { "tags": [ "Payment Transaction" ], "operationId": "paymentTransaction.status", "summary": "[EARLY ACCESS] Update status for single Payment Transaction", "description": "[EARLY ACCESS] Update status for single Payment Transaction", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } }, "requestBody": { "description": "[EARLY ACCESS] Update status for single Payment Transaction", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "description": "Status is required. statusReason is optional and should be used for errors.", "properties": { "status": { "type": "string", "enum": [ "verbucht", "error" ] }, "statusReason": { "type": "string" } } }, "examples": { "Set payment transaction to success": { "value": { "status": "verbucht" } }, "Set payment transaction to error": { "value": { "status": "error", "statusReason": "card has expired" } } } } } } } }, "/api/v1/paymentTermsGroups": { "get": { "tags": [ "Payment Terms Group" ], "operationId": "paymentTermsGroup.list", "summary": "Get a list of paymentTermsGroups", "description": "This endpoint is only available as early access version and will introduce breaking changes without further notice or versioning.\n\nPaymentTermsGroups can be used to group customers with identical payment terms such as different discounts, payment targets, and free postage options. For more details about the group feature have a look at our handbook article.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "oneOf": [ { "type": "array", "title": "Pass the array of filters.", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "description": "Pass the array as filter[0][key], filter[0][op], filter[0][value]", "enum": [ "id", "name", "key", "isActive", "projectId", "categoryId" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "title": "Array", "items": { "type": "string", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'." } } ] } } } } ] } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "key" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "key": { "x-description-missing": true, "type": "string", "example": "payment_terms_group_1" }, "name": { "x-description-missing": true, "type": "string", "example": "Sample payment terms group" }, "isActive": { "x-description-missing": true, "type": "boolean", "example": true }, "comment": { "x-description-missing": true, "type": "string", "nullable": true, "example": "This is a payment terms group." }, "paymentTerms": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "basicDiscount": { "type": "number", "example": 5, "nullable": true }, "paymentTargetDays": { "type": "integer", "example": 30, "nullable": true }, "earlyPaymentDiscount": { "nullable": true, "type": "object", "additionalProperties": false, "properties": { "value": { "type": "number", "example": 2 }, "paymentTargetDays": { "type": "integer", "example": 7 } } }, "postageFreeFrom": { "nullable": true, "type": "number", "example": 99.99, "description": "null = no free shipping; 0 = free shipping for all orders; > 0 = free shipping for orders with a value of at least this value" } }, "example": { "basicDiscount": 5, "paymentTargetDays": 30, "earlyPaymentDiscount": { "value": 2, "paymentTargetDays": 7 }, "postageFreeFrom": 99.99 } }, "project": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1" } }, "category": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "789" } } }, "example": { "id": "123", "key": "DISCOUNT-10", "name": "Customer Discount 10%", "isActive": true, "comment": "Customers in this group get 10% discount on all orders. And free shipping if the order value is at least 100.00 EUR.", "paymentTerms": { "basicDiscount": 10, "paymentTargetDays": 30, "earlyPaymentDiscount": { "value": 2, "paymentTargetDays": 15 }, "postageFreeFrom": 100 }, "project": { "id": "1" }, "category": { "id": "789" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "example": { "data": [ { "id": "1", "key": "DISCOUNT", "name": "10.5% discount for customers", "isActive": true, "comment": "All customer in this group get a 10.5% discount on their orders.", "paymentTerms": { "basicDiscount": 10.5, "paymentTargetDays": 30, "earlyPaymentDiscount": null, "postageFreeFrom": null }, "project": { "id": "1" }, "category": { "id": "1" } }, { "id": "2", "key": "FREE-SHIPPING", "name": "free shipping on all orders", "isActive": true, "comment": null, "paymentTerms": { "basicDiscount": null, "paymentTargetDays": null, "earlyPaymentDiscount": null, "postageFreeFrom": 0 }, "project": null, "category": null }, { "id": "3", "key": "EARLY_PAYMENT", "name": "early payment discount", "isActive": false, "comment": "Customers in this group tend to delay payments -> we offer higher early payment discount.", "paymentTerms": { "basicDiscount": null, "paymentTargetDays": null, "earlyPaymentDiscount": { "value": 5.5, "paymentTargetDays": 14 }, "postageFreeFrom": null }, "project": null, "category": null } ], "extra": { "totalCount": 3, "page": { "number": 1, "size": 10 } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Payment Terms Group" ], "operationId": "paymentTermsGroup.create", "summary": "Create a new paymentTermsGroup", "description": "This endpoint is only available as early access version and will introduce breaking changes without further notice or versioning.\n\nPaymentTermsGroups can be used to group customers with identical payment terms such as different discounts, payment targets, and free postage options. For more details about the group feature have a look at our handbook article.", "parameters": [], "requestBody": { "description": "Request to create a new paymentTermsGroup.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "key", "name" ], "properties": { "key": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{3,255}$", "minLength": 3, "maxLength": 255, "example": "DISCOUNT_10-5" }, "name": { "type": "string", "minLength": 3, "maxLength": 512, "example": "Customer Discount 10.5%" }, "comment": { "nullable": true, "type": "string", "maxLength": 64000, "example": "Customers in this group get 10.5% discount on all orders. And free shipping if the order value is at least 99.99 EUR." }, "isActive": { "type": "boolean", "default": true }, "paymentTerms": { "nullable": true, "type": "object", "additionalProperties": false, "minProperties": 1, "properties": { "basicDiscount": { "nullable": true, "type": "number", "example": 5.5 }, "paymentTargetDays": { "nullable": true, "type": "integer", "example": 30, "description": "default: 14 days", "default": 14 }, "earlyPaymentDiscount": { "nullable": true, "type": "object", "additionalProperties": false, "properties": { "value": { "type": "number", "example": 2.1 }, "paymentTargetDays": { "type": "integer", "example": 7 } } }, "postageFreeFrom": { "nullable": true, "type": "number", "example": 99.99, "default": null, "description": "null = no free shipping; 0 = free shipping for all orders; > 0 = free shipping for orders with a value of at least this value" } } }, "project": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1" } }, "category": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "789" } } } }, "examples": { "create payment terms": { "value": { "key": "DISCOUNT-10", "name": "Customer Discount 10%", "isActive": true, "comment": "Customers in this group get 10% discount on all orders. And free shipping if the order value is at least 99.99 EUR.", "paymentTerms": { "basicDiscount": 10, "paymentTargetDays": 30, "earlyPaymentDiscount": { "value": 2, "paymentTargetDays": 15 }, "postageFreeFrom": 99.99 }, "project": { "id": "1" }, "category": { "id": "789" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/paymentTermsGroups/{id}": { "get": { "tags": [ "Payment Terms Group" ], "operationId": "paymentTermsGroup.view", "summary": "Get a single paymentTermsGroup", "description": "This endpoint is only available as early access version and will introduce breaking changes without further notice or versioning.\n\nPaymentTermsGroups can be used to group customers with identical payment terms such as different discounts, payment targets, and free postage options. For more details about the group feature have a look at our handbook article.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "key": { "x-description-missing": true, "type": "string", "example": "payment_terms_group_1" }, "name": { "x-description-missing": true, "type": "string", "example": "Sample payment terms group" }, "isActive": { "x-description-missing": true, "type": "boolean", "example": true }, "comment": { "x-description-missing": true, "type": "string", "nullable": true, "example": "This is a payment terms group." }, "paymentTerms": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "basicDiscount": { "type": "number", "example": 5, "nullable": true }, "paymentTargetDays": { "type": "integer", "example": 30, "nullable": true }, "earlyPaymentDiscount": { "nullable": true, "type": "object", "additionalProperties": false, "properties": { "value": { "type": "number", "example": 2 }, "paymentTargetDays": { "type": "integer", "example": 7 } } }, "postageFreeFrom": { "nullable": true, "type": "number", "example": 99.99, "description": "null = no free shipping; 0 = free shipping for all orders; > 0 = free shipping for orders with a value of at least this value" } }, "example": { "basicDiscount": 5, "paymentTargetDays": 30, "earlyPaymentDiscount": { "value": 2, "paymentTargetDays": 7 }, "postageFreeFrom": 99.99 } }, "project": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1" } }, "category": { "x-description-missing": true, "nullable": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "789" } } }, "example": { "id": "123", "key": "DISCOUNT-10", "name": "Customer Discount 10%", "isActive": true, "comment": "Customers in this group get 10% discount on all orders. And free shipping if the order value is at least 100.00 EUR.", "paymentTerms": { "basicDiscount": 10, "paymentTargetDays": 30, "earlyPaymentDiscount": { "value": 2, "paymentTargetDays": 15 }, "postageFreeFrom": 100 }, "project": { "id": "1" }, "category": { "id": "789" } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/cashiers": { "get": { "tags": [ "Point Of Sale" ], "operationId": "cashier.list", "summary": "Cashier list", "description": "Lists all active cashiers.", "parameters": [ { "name": "project_id", "in": "query", "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Kassierer SW" }, "number": { "x-description-missing": true, "type": "string", "nullable": true, "example": "1001" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "permissionLevel": { "x-description-missing": true, "type": "string", "nullable": true, "example": "0" } }, "example": { "id": "1", "name": "Kassierer SW", "number": "1001", "project": { "id": "2" }, "permissionLevel": "0" } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/cashiers/{id}/pinCheck": { "post": { "tags": [ "Point Of Sale" ], "operationId": "cashier.pinCheck", "summary": "Cashier PIN check", "description": "Checks a pin for cashier.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Verify PIN", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "pin", "project" ], "properties": { "pin": { "type": "string", "nullable": false, "pattern": "\\d{4}" }, "project": { "type": "string", "nullable": false, "pattern": "\\d" } } }, "examples": { "Verify PIN": { "value": { "pin": "1234", "project": "5" } } } } } }, "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "x-description-missing": true, "type": "string", "nullable": false, "example": "Kassierer SW" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "permissionLevel": { "x-description-missing": true, "type": "string", "pattern": "\\d", "nullable": false, "example": "0" } }, "example": { "id": "1", "name": "Kassierer SW", "project": { "id": "2" }, "permissionLevel": "0" } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/cashRegisters/{id}/balance": { "get": { "tags": [ "Point Of Sale" ], "operationId": "cashRegister.balance", "summary": "Cash Register balance", "description": "Retrieves the balance of a cash register.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "openingBalance": { "x-description-missing": true, "type": "string", "nullable": false, "example": "1,236.61" }, "targetAmount": { "x-description-missing": true, "type": "string", "nullable": false, "example": "1,236.61" } }, "example": { "openingBalance": "1,236.61", "targetAmount": "1,236.61" } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/posJournals": { "get": { "tags": [ "Point Of Sale" ], "operationId": "journal.list", "summary": "Journals list", "description": "Lists all active journals.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "date", "customerId", "projectId", "salesOrderId", "externalOrderNumber" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } } } ] } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "date", "customerId", "projectId" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "date": { "x-description-missing": true, "type": "string", "format": "date-time", "nullable": true, "example": "2020-09-23T14:20:08+02:00" }, "projectId": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "x-description-missing": true, "type": "string", "example": "RE_Beleg" }, "posFunction": { "x-description-missing": true, "type": "string", "example": "TODO" }, "doctype": { "x-description-missing": true, "type": "string", "example": "rechnung" }, "paymentType": { "x-description-missing": true, "type": "string", "example": "eckarte" }, "doctypeId": { "x-description-missing": true, "type": "number", "example": 10 }, "documentNumber": { "x-description-missing": true, "type": "string", "example": "400009" }, "journalText": { "x-description-missing": true, "type": "string", "example": "RE 400009 (POS)" }, "revenueAccount": { "x-description-missing": true, "type": "string", "example": "4400" }, "currency": { "x-description-missing": true, "type": "string", "example": "EUR" }, "tax": { "x-description-missing": true, "type": "number", "format": "float", "example": 16 }, "amountGross": { "x-description-missing": true, "type": "number", "format": "float", "example": 99 }, "amountNet": { "x-description-missing": true, "type": "number", "format": "float", "example": 85.34 }, "cashRegisterId": { "x-description-missing": true, "type": "number", "example": 5 }, "customerId": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "createdAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2020-09-23T20:22:08+02:00" }, "createdBy": { "x-description-missing": true, "type": "string", "example": "John Doe" }, "businessTransactionType": { "x-description-missing": true, "type": "string", "nullable": true, "example": "TODO" }, "qrString": { "x-description-missing": true, "type": "string", "nullable": true, "example": null }, "fiscalDocumentReference": { "description": "This field represents an object with dynamic structure", "type": "object", "additionalProperties": true, "nullable": true, "example": {} }, "salesOrder": { "x-description-missing": true, "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "number" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "example": "200002" }, "externalOrderNumber": { "type": "string", "example": "152" } }, "example": { "id": "5", "number": "200002", "externalOrderNumber": "152" } } }, "example": { "id": "1", "date": "2020-09-23T14:20:08+02:00", "projectId": "6", "type": "RE_Beleg", "posFunction": "", "doctype": "rechnung", "paymentType": "eckarte", "doctypeId": 1, "documentNumber": "400000", "journalText": "RE 400000 (POS)", "revenueAccount": "4400", "currency": "EUR", "tax": 16, "amountGross": 98.99, "amountNet": 85.34, "cashRegisterId": 5, "customerId": "36", "createdAt": "2020-09-23T14:20:08+02:00", "createdBy": "John Doe", "businessTransactionType": "", "salesOrder": { "id": "4", "number": "200001", "externalOrderNumber": "" }, "qrString": null } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/posJournals/actions/add": { "post": { "tags": [ "Point Of Sale" ], "operationId": "journal.add", "summary": "Add journal entry", "description": "Add a new journal entry.", "parameters": [], "requestBody": { "description": "Add journal entry", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "project", "cashier", "transaction", "entry", "payment" ], "properties": { "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "cashier": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "transaction": { "type": "object", "additionalProperties": false, "required": [ "type", "text" ], "properties": { "type": { "type": "string", "nullable": false }, "text": { "type": "string", "nullable": false } } }, "entry": { "oneOf": [ { "type": "object", "additionalProperties": false, "nullable": false, "required": [ "type", "timestamp", "document" ], "properties": { "type": { "type": "string", "enum": [ "invoice", "credit_note" ], "nullable": false }, "timestamp": { "description": "a atom formatted date time", "type": "string", "format": "date-time", "example": "2023-08-13T14:45:36+02:00" }, "document": { "type": "object", "description": "When `entry.type` is `creditNote`, credit note ID will be provided. When `type` is `invoice`the invoice ID will be provided", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "qrString": { "type": "string", "description": "When `entry.type` is `invoice` or `credit_note` a string representing the QR code will be provided", "additionalProperties": false } } }, { "type": "object", "additionalProperties": false, "nullable": false, "required": [ "type", "timestamp", "amount" ], "properties": { "type": { "type": "string", "enum": [ "cash_in", "cash_out", "cash_difference" ], "nullable": false }, "timestamp": { "type": "string", "format": "date-time", "nullable": false }, "amount": { "type": "object", "description": "Mandatory field when `entry.type` has one of the values: `cash_in`, `cash_out`, `cash_difference`.", "additionalProperties": false, "required": [ "amount", "currency" ], "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "description": "Currency matches one of currency values as specified in ISO-4217." } } } } } ] }, "payment": { "type": "object", "additionalProperties": false, "nullable": false, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "cash", "ec", "credit", "ec_card" ], "nullable": false } } }, "fiscalDocumentReference": { "description": "This field represents an object with dynamic structure", "type": "object", "additionalProperties": true, "nullable": true } } }, "examples": { "Add journal entry": { "value": { "project": { "id": "2" }, "cashier": { "id": "4" }, "transaction": { "type": "invoice", "text": "Invoice 123" }, "entry": { "type": "invoice", "timestamp": "2023-10-01T00:00:00Z", "document": { "id": "1" } }, "payment": { "type": "cash" }, "fiscalDocumentReference": null } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/posCashCount/actions/add": { "post": { "tags": [ "Point Of Sale" ], "operationId": "cashCount.add", "summary": "Add cash count entry", "description": "Add a new cash count entry.", "parameters": [], "requestBody": { "description": "Add cash count body", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "project", "cashier", "comment", "difference", "cashQuantity" ], "properties": { "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "cashier": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "comment": { "type": "string", "nullable": false }, "difference": { "type": "number", "format": "float", "nullable": false }, "cashQuantity": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "eur500", "eur200", "eur100", "eur50", "eur20", "eur10", "eur5", "eur2", "eur1", "eur05", "eur02", "eur01", "eur005", "eur002", "eur001" ], "properties": { "eur500": { "type": "integer", "format": "int64", "nullable": false }, "eur200": { "type": "integer", "format": "int64", "nullable": false }, "eur100": { "type": "integer", "format": "int64", "nullable": false }, "eur50": { "type": "integer", "format": "int64", "nullable": false }, "eur20": { "type": "integer", "format": "int64", "nullable": false }, "eur10": { "type": "integer", "format": "int64", "nullable": false }, "eur5": { "type": "integer", "format": "int64", "nullable": false }, "eur2": { "type": "integer", "format": "int64", "nullable": false }, "eur1": { "type": "integer", "format": "int64", "nullable": false }, "eur05": { "type": "integer", "format": "int64", "nullable": false }, "eur02": { "type": "integer", "format": "int64", "nullable": false }, "eur01": { "type": "integer", "format": "int64", "nullable": false }, "eur005": { "type": "integer", "format": "int64", "nullable": false }, "eur002": { "type": "integer", "format": "int64", "nullable": false }, "eur001": { "type": "integer", "format": "int64", "nullable": false } } } } }, "examples": { "Add cash count": { "value": { "project": { "id": "2" }, "cashier": { "id": "4" }, "comment": "Cash count comment", "difference": 0, "cashQuantity": { "eur500": 0, "eur200": 0, "eur100": 2, "eur50": 3, "eur20": 8, "eur10": 12, "eur5": 8, "eur2": 19, "eur1": 28, "eur05": 20, "eur02": 10, "eur01": 7, "eur005": 29, "eur002": 29, "eur001": 20 } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/posQrCode/actions/add": { "post": { "tags": [ "Point Of Sale" ], "operationId": "qrCode.add", "summary": "Add qr code data to a document", "description": "Add qr code data to a document.", "parameters": [], "requestBody": { "description": "Add qr code data to a document", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "documentNumber", "eventType", "qrCodeData" ], "properties": { "documentNumber": { "type": "string", "nullable": false, "example": "400000" }, "eventType": { "type": "string", "nullable": false, "example": "SALE, REFUND" }, "timeSignature": { "description": "a atom formatted date time", "type": "string", "format": "date-time", "example": "2023-08-13T14:45:36+02:00" }, "cashRegisterSerialNumber": { "type": "string", "nullable": false }, "externalReceiptNumber": { "type": "string", "nullable": false }, "qrCodeData": { "type": "string", "nullable": false } } }, "examples": { "Add qr code data to a document": { "value": { "documentNumber": "RE2025-1234", "eventType": "SALE", "qrCodeData": "V0;ESR d233001e-d3fe-4737-a8b1-2dea39945b4f;Kassenbeleg-V1;Beleg^11.90_0.00_0.00_0.00_0.00^11.90:Bar;1;37;2024-12-10T10:23:10.000Z;2024-12-10T10:23:10.000Z;ecdsa-plain-SHA256;unixTime;ODIQw9I7F4D2yGYbvjBLAqtLxbjExVOfyAcUL7FDZz3CJxxsf+E/Vmrd+LCe2kJyWW34ojZtTQze1cM3pEcEXQ==;BHln9oQpOXGmuYEPUEMzu9EERUDYZUiQioUOyrlOKg7i5bwW39MjMXi+4UgrUt3lY0Audzp2+GbnxOOTwQpfEvI=", "timeSignature": "2024-01-01T16:19:04+01:00", "cashRegisterSerialNumber": "AOuPTr", "externalReceiptNumber": "3" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products": { "post": { "tags": [ "Product" ], "operationId": "product.create", "summary": "Create new product", "description": "Creates a new product.", "parameters": [], "requestBody": { "description": "Product create request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the product." }, "number": { "type": "string", "description": "Number / SKU of the product." }, "description": { "type": "string", "description": "Description of the product." }, "shortDescription": { "type": "string", "description": "Short description of the product." }, "customsTariffNumber": { "type": "string", "description": "Customs tariff number of the product." }, "ean": { "type": "string", "description": "EAN of the product." }, "internalComment": { "type": "string", "description": "Text only for internal information." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "minimumOrderQuantity": { "type": "integer", "description": "Numerical minimum order quantity of the product." }, "minimumStorageQuantity": { "type": "integer", "description": "Numerical minimum storage quantity of the product." }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "manufacturer": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the manufacturer." }, "number": { "type": "string", "description": "Product number at the manufacturer." }, "link": { "type": "string", "description": "URI of the manufacturer." } } }, "measurements": { "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook." }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product." }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL." }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product." }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product." }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook." }, "category": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook." }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook." }, "discount": { "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook." } } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Determines if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Sets the stock taking value for stock taking." } } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "options" ], "properties": { "name": { "type": "string" }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name", "option" ], "properties": { "name": { "type": "string" }, "option": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" } } } } } } } }, "example": [ { "name": "OptionalName(overrides autogenerated)", "options": [ { "name": "Cotton", "option": { "name": "Material" } }, { "name": "M", "option": { "name": "Size" } }, { "name": "NoLogo", "option": { "name": "Logo" } } ] } ] } } }, "examples": { "Create Product": { "value": { "name": "Test Product Beverage", "number": "123456", "description": "This is a very long description for the Test Product Beverage.", "shortDescription": "This is a short description.", "project": { "id": "7" }, "category": { "id": "1001" }, "customsTariffNumber": "12345678", "ean": "1234567890", "internalComment": "Attention: Only available for customers over the age of 18.", "minimumOrderQuantity": 100, "minimumStorageQuantity": 30, "allowPurchaseFromAllSuppliers": false, "hidePriceOnDocuments": false, "hasBatches": true, "serialNumbersMode": "disabled", "hasBestBeforeDate": true, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "isDisabled": false, "countryOfOrigin": "DE", "regionOfOrigin": "01", "salesTax": "standard", "isStockItem": true, "manufacturer": { "name": "Beverage Manufacturer", "number": "BM#1", "link": "https://example.com" }, "ageRating": "18", "freeFields": [ { "id": "8", "value": "FF8" }, { "id": "16", "value": "FF16" }, { "id": "32", "value": "FF32" } ], "variantOf": { "id": "1336" } } } } }, "application/vnd.xentral.upsert+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the product." }, "number": { "type": "string", "description": "Number / SKU of the product." }, "description": { "type": "string", "description": "Description of the product." }, "shortDescription": { "type": "string", "description": "Short description of the product." }, "customsTariffNumber": { "type": "string", "description": "Customs tariff number of the product." }, "ean": { "type": "string", "description": "EAN of the product." }, "internalComment": { "type": "string", "description": "Text only for internal information." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "minimumOrderQuantity": { "type": "integer", "description": "Numerical minimum order quantity of the product." }, "minimumStorageQuantity": { "type": "integer", "description": "Numerical minimum storage quantity of the product." }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "manufacturer": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the manufacturer." }, "number": { "type": "string", "description": "Product number at the manufacturer." }, "link": { "type": "string", "description": "URI of the manufacturer." } } }, "measurements": { "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook." }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product." }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL." }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product." }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product." }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook." }, "category": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook." }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook." }, "discount": { "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook." } } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Determines if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Sets the stock taking value for stock taking." } } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "options" ], "properties": { "name": { "type": "string" }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name", "option" ], "properties": { "name": { "type": "string" }, "option": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" } } } } } } } }, "example": [ { "name": "OptionalName(overrides autogenerated)", "options": [ { "name": "Cotton", "option": { "name": "Material" } }, { "name": "M", "option": { "name": "Size" } }, { "name": "NoLogo", "option": { "name": "Logo" } } ] } ] } } }, "examples": { "Create Product": { "value": { "name": "Test Product", "number": "123456", "project": { "id": "7" } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the product." }, "number": { "type": "string", "description": "Number / SKU of the product." }, "description": { "type": "string", "description": "Description of the product." }, "shortDescription": { "type": "string", "description": "Short description of the product." }, "customsTariffNumber": { "type": "string", "description": "Customs tariff number of the product." }, "ean": { "type": "string", "description": "EAN of the product." }, "internalComment": { "type": "string", "description": "Text only for internal information." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "minimumOrderQuantity": { "type": "integer", "description": "Numerical minimum order quantity of the product." }, "minimumStorageQuantity": { "type": "integer", "description": "Numerical minimum storage quantity of the product." }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "manufacturer": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the manufacturer." }, "number": { "type": "string", "description": "Product number at the manufacturer." }, "link": { "type": "string", "description": "URI of the manufacturer." } } }, "measurements": { "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook." }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product." }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL." }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product." }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product." }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "merchandiseGroup": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook." }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook." }, "discount": { "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook." } } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Determines if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Sets the stock taking value for stock taking." } } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "salesChannel": { "type": "object", "additionalProperties": false, "description": "General sales channel information that is valid for all sales channels, if not overridden by individual sales channel information.", "properties": { "description": { "type": "string", "description": "Description of the product for sales channels.", "example": "A high-quality product." }, "meta": { "type": "object", "additionalProperties": false, "description": "Meta information for sales channels.", "properties": { "title": { "type": "string", "description": "Meta title of the product for sales channels.", "example": "Sample Product Title" }, "description": { "type": "string", "description": "Meta description of the product for sales channels.", "example": "This product is designed for everyday use." }, "keywords": { "type": "string", "description": "Meta keywords of the product for sales channels.", "example": "product, products" } } }, "isStockNumberSyncActive": { "type": "boolean", "description": "Determines if the stock number synchronization to the sales channel is active.", "example": true }, "isSoldOut": { "type": "boolean", "description": "Determines if the product is sold out.", "example": true }, "isRemainingQuantity": { "type": "boolean", "description": "Determines if only the remaining quantity of the product is left.", "example": true }, "isVisible": { "type": "boolean", "description": "This field was formerly called isVisibleInOnlineShops. Determines if a product is visible in all sales channels", "example": true }, "suggestedRetailPrice": { "type": "string", "format": "float", "nullable": true, "description": "This field was formerly called shopPriceDisplay. Sets the suggested retail price for sales channels. Only used by some online shops. For more information have a look into our handbook.", "example": "25.99" }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for all sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Sets the delivery time for all sales channels.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Determines if a new product is generated during the sales order import from all sales channels.", "example": true } } }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "options" ], "properties": { "name": { "type": "string" }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name", "option" ], "properties": { "name": { "type": "string" }, "option": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" } } } } } } } }, "example": [ { "name": "OptionalName(overrides autogenerated)", "options": [ { "name": "Cotton", "option": { "name": "Material" } }, { "name": "M", "option": { "name": "Size" } }, { "name": "NoLogo", "option": { "name": "Logo" } } ] } ] }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "example": [ { "id": "1" }, { "id": "2" } ] } } }, "examples": { "Create Product": { "value": { "name": "Test Product Beverage", "number": "123456", "description": "This is a very long description for the Test Product Beverage.", "shortDescription": "This is a short description.", "project": { "id": "7" }, "merchandiseGroup": { "id": "1001" }, "categories": [ { "id": "10" }, { "id": "11" } ], "customsTariffNumber": "12345678", "ean": "1234567890", "internalComment": "Attention: Only available for customers over the age of 18.", "minimumOrderQuantity": 100, "minimumStorageQuantity": 30, "allowPurchaseFromAllSuppliers": false, "hidePriceOnDocuments": false, "hasBatches": true, "serialNumbersMode": "disabled", "hasBestBeforeDate": true, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "isDisabled": false, "countryOfOrigin": "DE", "regionOfOrigin": "01", "salesTax": "standard", "isStockItem": true, "manufacturer": { "name": "Beverage Manufacturer", "number": "BM#1", "link": "https://example.com" }, "ageRating": "18", "freeFields": [ { "id": "8", "value": "FF8" }, { "id": "16", "value": "FF16" }, { "id": "32", "value": "FF32" } ], "variantOf": { "id": "1336" } } } } }, "application/vnd.xentral.upsert.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the product." }, "number": { "type": "string", "description": "Number / SKU of the product." }, "description": { "type": "string", "description": "Description of the product." }, "shortDescription": { "type": "string", "description": "Short description of the product." }, "customsTariffNumber": { "type": "string", "description": "Customs tariff number of the product." }, "ean": { "type": "string", "description": "EAN of the product." }, "internalComment": { "type": "string", "description": "Text only for internal information." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "minimumOrderQuantity": { "type": "integer", "description": "Numerical minimum order quantity of the product." }, "minimumStorageQuantity": { "type": "integer", "description": "Numerical minimum storage quantity of the product." }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "manufacturer": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the manufacturer." }, "number": { "type": "string", "description": "Product number at the manufacturer." }, "link": { "type": "string", "description": "URI of the manufacturer." } } }, "measurements": { "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook." }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product." }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL." }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product." }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product." }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "merchandiseGroup": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook." }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook." }, "discount": { "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook." } } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Determines if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Sets the stock taking value for stock taking." } } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "salesChannel": { "type": "object", "additionalProperties": false, "description": "General sales channel information that is valid for all sales channels, if not overridden by individual sales channel information.", "properties": { "description": { "type": "string", "description": "Description of the product for sales channels.", "example": "A high-quality product." }, "meta": { "type": "object", "additionalProperties": false, "description": "Meta information for sales channels.", "properties": { "title": { "type": "string", "description": "Meta title of the product for sales channels.", "example": "Sample Product Title" }, "description": { "type": "string", "description": "Meta description of the product for sales channels.", "example": "This product is designed for everyday use." }, "keywords": { "type": "string", "description": "Meta keywords of the product for sales channels.", "example": "product, products" } } }, "isStockNumberSyncActive": { "type": "boolean", "description": "Determines if the stock number synchronization to the sales channel is active.", "example": true }, "isSoldOut": { "type": "boolean", "description": "Determines if the product is sold out.", "example": true }, "isRemainingQuantity": { "type": "boolean", "description": "Determines if only the remaining quantity of the product is left.", "example": true }, "isVisible": { "type": "boolean", "description": "This field was formerly called isVisibleInOnlineShops. Determines if a product is visible in all sales channels", "example": true }, "suggestedRetailPrice": { "type": "string", "format": "float", "nullable": true, "description": "This field was formerly called shopPriceDisplay. Sets the suggested retail price for sales channels. Only used by some online shops. For more information have a look into our handbook.", "example": "25.99" }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for all sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Sets the delivery time for all sales channels.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Determines if a new product is generated during the sales order import from all sales channels.", "example": true } } }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "options" ], "properties": { "name": { "type": "string" }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name", "option" ], "properties": { "name": { "type": "string" }, "option": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" } } } } } } } }, "example": [ { "name": "OptionalName(overrides autogenerated)", "options": [ { "name": "Cotton", "option": { "name": "Material" } }, { "name": "M", "option": { "name": "Size" } }, { "name": "NoLogo", "option": { "name": "Logo" } } ] } ] }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "example": [ { "id": "1" }, { "id": "2" } ] } } }, "examples": { "Create Product": { "value": { "name": "Test Product", "number": "123456", "project": { "id": "7" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Product" ], "operationId": "product.list", "summary": "List products", "description": "Returns a collection with all products.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "search", "id", "uuid", "category", "merchandiseGroup", "standardSupplier", "name", "number", "description", "project", "projectName", "purchasePriceNet", "purchasePriceGross", "salesChannel", "salesPriceNet", "salesPriceGross", "shopPriceDisplay", "purchasedCount", "availableCount", "inProductionCount", "ean", "manufacturerName", "manufacturerNumber", "customsTariffNumber", "freeField1", "freeField2", "freeField3", "freeField4", "freeField5", "freeField6", "freeField7", "freeField8", "freeField9", "freeField10", "freeField11", "freeField12", "freeField13", "freeField14", "freeField15", "freeField16", "freeField17", "freeField18", "freeField19", "freeField20", "freeField21", "freeField22", "freeField23", "freeField24", "freeField25", "freeField26", "freeField27", "freeField28", "freeField29", "freeField30", "freeField31", "freeField32", "freeField33", "freeField34", "freeField35", "freeField36", "freeField37", "freeField38", "freeField39", "freeField40", "onlyStockItems", "noStockItems", "onlyVariants", "noVariants", "onlyPartsList", "noPartsList", "onlyActive", "onlyLocked", "onlyInStock", "updatedAt", "isStockItem", "categoryId", "tagId", "isDiscountProduct", "isShippingCostsProduct", "isVariant", "variantOf", "externalReferenceNumber", "externalReferenceName", "externalReferenceTargetId" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "number", "description", "project", "purchasePriceNet", "purchasePriceGross", "salesPriceNet", "salesPriceGross", "ean", "manufacturerName", "manufacturerNumber", "customsTariffNumber" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "category": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Product one" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU-0099" }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This is a high-quality product designed for everyday use." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "This product is seasonal and only available during the summer." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "This is a high-quality product designed for everyday use." }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://example.com/images/product-thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-12345" }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 10 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 5 }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": true }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": false }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": false }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": true }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": true }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "ageRating": { "type": "string", "nullable": true, "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL.", "example": "12+" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } }, "description": "Shows the name of the product unit.", "example": { "name": "kilogram" } }, "textsAndDescriptions": { "type": "object", "description": "Contains localized text and descriptions for the product.", "properties": { "inCatalog": { "type": "boolean", "description": "Indicates if the product is included in the catalog.", "example": true }, "primaryLanguage": { "type": "object", "description": "Texts and descriptions in the primary language.", "properties": { "name": { "type": "string", "description": "Product name.", "example": "Product One" }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "Compact and lightweight product." }, "description": { "type": "string", "description": "Detailed product description.", "nullable": true, "example": "This is a high-quality product." }, "shopDescription": { "type": "string", "description": "Shop-specific description.", "example": "Perfect for daily use." }, "metaTitle": { "type": "string", "description": "SEO meta title.", "example": "Best Product for Everyday Use" }, "metaDescription": { "type": "string", "description": "SEO meta description.", "example": "Buy the best quality product online." }, "metaKeywords": { "type": "string", "description": "SEO keywords.", "example": "product, best quality, affordable" }, "catalogName": { "type": "string", "description": "Name in the catalog.", "example": "Premium Collection" }, "catalogText": { "type": "string", "description": "Text in the catalog.", "example": "Exclusive product from our latest collection." } } }, "english": { "type": "object", "description": "Texts and descriptions in English.", "properties": { "name": { "type": "string", "description": "Product name in English.", "example": "Product One" }, "shortDescription": { "type": "string", "description": "Short description in English.", "example": "Compact and lightweight product." }, "description": { "type": "string", "description": "Detailed product description.", "example": "High-quality product for all needs." }, "shopDescription": { "type": "string", "description": "Shop-specific description.", "example": "Great for everyday use." }, "metaTitle": { "type": "string", "description": "SEO meta title.", "example": "Top-Rated Product Online" }, "metaDescription": { "type": "string", "description": "SEO meta description.", "example": "Shop the best product at the best price." }, "metaKeywords": { "type": "string", "description": "SEO keywords.", "example": "best product, top quality, shop online" }, "catalogName": { "type": "string", "description": "Catalog name in English.", "example": "Exclusive Range" }, "catalogText": { "type": "string", "description": "Catalog text in English.", "example": "Premium product from our latest lineup." } } } }, "example": { "inCatalog": true, "primaryLanguage": { "name": "Produkt eins", "shortDescription": "Kurze Beschreibung des Produkts.", "description": "Dies ist eine detaillierte Produktbeschreibung.", "shopDescription": "Verkaufsbeschreibung für den Shop.", "metaTitle": "Produkt SEO-Titel", "metaDescription": "Meta-Beschreibung für das Produkt.", "metaKeywords": "Produkt, SEO, Keywords", "catalogName": "Produktkatalogname", "catalogText": "Detaillierter Katalogtext für das Produkt." }, "english": { "name": "Product One", "shortDescription": "Short description of the product.", "description": "This is a detailed product description.", "shopDescription": "Shop description for the product.", "metaTitle": "Product SEO Title", "metaDescription": "Meta description for the product.", "metaKeywords": "product, SEO, keywords", "catalogName": "Product Catalog Name", "catalogText": "Detailed catalog text for the product." } } }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": true }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "description": "Shows if the just in time items of the parts list are visible on documents.", "example": true }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": false }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Out of stock" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product.", "example": "standard" }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook.", "example": "19.99" }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "manufacturerName": { "type": "string", "nullable": true, "description": "Name of the manufacturer.", "example": "Test Corp" }, "manufacturerNumber": { "type": "string", "nullable": true, "description": "Product number at the manufacturer.", "example": "MN-98765" }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "04" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": true }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook.", "example": false }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook.", "example": 15.5 } }, "example": { "isDiscountProduct": false, "discountPercentage": 15.5 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "purchasePriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "purchasePriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "stockStats": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "purchasedCount": { "type": "string", "format": "float", "nullable": true }, "totalCount": { "type": "string", "format": "float", "nullable": true }, "availableCount": { "type": "string", "format": "float", "nullable": true }, "inProductionCount": { "type": "string", "format": "float", "nullable": true } }, "example": { "purchasedCount": "100.5", "totalCount": "500.75", "availableCount": "300.25", "inProductionCount": "50.0" } }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2023-09-23T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists information from all products": { "value": { "data": [ { "id": "1", "uuid": "018a2690-647a-7a8b-b100-cfc11ab7d4e8", "name": "Screw M10x20", "description": "", "shortDescription": null, "number": "700001", "project": { "id": "1", "name": "Standard project" }, "category": { "id": "2", "name": "Service" }, "standardSupplier": { "id": "7" }, "stockCount": 22, "stockStats": { "purchasedCount": null, "totalCount": "22.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "shopPriceDisplay": "0.00", "ean": "", "manufacturerName": "", "manufacturerNumber": "", "customsTariffNumber": "", "isVariant": false, "variantOf": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "textsAndDescriptions": { "inCatalog": true, "primaryLanguage": { "name": "Produkt eins", "shortDescription": "Kurze Beschreibung des Produkts.", "description": "Dies ist eine detaillierte Produktbeschreibung.", "shopDescription": "Verkaufsbeschreibung für den Shop.", "metaTitle": "Produkt SEO-Titel", "metaDescription": "Meta-Beschreibung für das Produkt.", "metaKeywords": "Produkt, SEO, Keywords", "catalogName": "Produktkatalogname", "catalogText": "Detaillierter Katalogtext für das Produkt." }, "english": { "name": "Product One", "shortDescription": "Short description of the product.", "description": "This is a detailed product description.", "shopDescription": "Shop description for the product.", "metaTitle": "Product SEO Title", "metaDescription": "Meta description for the product.", "metaKeywords": "product, SEO, keywords", "catalogName": "Product Catalog Name", "catalogText": "Detailed catalog text for the product." } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "unit": { "name": "abc" }, "updatedAt": "2024-04-15T13:10:58+02:00" }, { "id": "2", "uuid": "018a2690-647b-7970-97c8-e02df3a2ae1f", "name": "hex nut M10", "description": "", "shortDescription": null, "number": "700002", "project": { "id": "1", "name": "Standard project" }, "category": null, "standardSupplier": { "id": "7" }, "stockCount": 93, "stockStats": { "purchasedCount": null, "totalCount": "93.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "shopPriceDisplay": "0.00", "ean": "", "manufacturerName": "", "manufacturerNumber": "", "customsTariffNumber": "", "isVariant": false, "variantOf": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "textsAndDescriptions": { "inCatalog": true, "primaryLanguage": { "name": "Produkt eins", "shortDescription": "Kurze Beschreibung des Produkts.", "description": "Dies ist eine detaillierte Produktbeschreibung.", "shopDescription": "Verkaufsbeschreibung für den Shop.", "metaTitle": "Produkt SEO-Titel", "metaDescription": "Meta-Beschreibung für das Produkt.", "metaKeywords": "Produkt, SEO, Keywords", "catalogName": "Produktkatalogname", "catalogText": "Detaillierter Katalogtext für das Produkt." }, "english": { "name": "Product One", "shortDescription": "Short description of the product.", "description": "This is a detailed product description.", "shopDescription": "Shop description for the product.", "metaTitle": "Product SEO Title", "metaDescription": "Meta description for the product.", "metaKeywords": "product, SEO, keywords", "catalogName": "Product Catalog Name", "catalogText": "Detailed catalog text for the product." } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "unit": { "name": "" }, "updatedAt": "2024-03-27T15:13:25+01:00" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "merchandiseGroup": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Example Product Name" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU-12345" }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This product is designed for everyday use and offers high durability." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "This product is on hold due to quality checks." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "Compact and lightweight, perfect for travel." }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://example.com/images/product-thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-12345" }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "purchasePriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "purchasePriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "978-3-16-148410-0" }, "manufacturer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer." }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer." }, "link": { "type": "string", "nullable": true, "description": "URI of the manufacturer." } }, "example": { "name": "Test Corp", "number": "AC12345", "link": "https://www.testcorp.com" } }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": false }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook." } }, "example": { "isDiscountProduct": false, "discountPercentage": 15.5 } }, "stockStats": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "purchasedCount": { "type": "string", "format": "float", "nullable": true }, "totalCount": { "type": "string", "format": "float", "nullable": true }, "availableCount": { "type": "string", "format": "float", "nullable": true }, "inProductionCount": { "type": "string", "format": "float", "nullable": true } }, "example": { "purchasedCount": "10.0", "totalCount": "50.0", "availableCount": "30.0", "inProductionCount": "10.0" } }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 5 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 10 }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": true }, "isCustomProduct": { "type": "boolean", "description": "Shows if the product is a custom product.", "example": false }, "isDeleted": { "type": "boolean", "description": "Shows if the product is deleted.", "example": false }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": true }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": false }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": true }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": false }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "ageRating": { "type": "string", "nullable": true, "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL.", "example": "12+" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } }, "description": "Shows the name of the product unit.", "example": { "name": "kilogram" } }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": true }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "description": "Shows if the just in time items of the parts list are visible on documents.", "example": false }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": true }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Out of stock" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Shows the sales tax of the product.", "example": "reduced" }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "04" }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "isMatrixProduct": { "type": "boolean", "description": "Shows if the product is a matrix product.", "example": false }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 150.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "salesChannel": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "description": { "type": "string", "example": "This is a product description." }, "meta": { "type": "object", "additionalProperties": false, "properties": { "title": { "type": "string", "example": "Product Title" }, "description": { "type": "string", "example": "Detailed product description." }, "keywords": { "type": "string", "example": "keyword1, keyword2, keyword3" } } }, "isStockNumberSyncActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isSoldOut": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isRemainingQuantity": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedRetailPrice": { "type": "string", "format": "float", "nullable": true, "description": "Was earlier called shopPriceDisplay. Only used by some online shops. For more information have a look into our handbook.", "example": "99.99" }, "isVisible": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedStockQuantity": { "type": "string", "description": "Shows the suggested stock quantity for all sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Shows the delivery time for all sales channels.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Shows if a new product is generated during the sales order import from all sales channels.", "example": true }, "channels": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "salesChannel": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "isActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "useIndividualSalesChannelSettings": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockNumberSyncActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isRemainingQuantity": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedRetailPrice": { "type": "string", "description": "Was earlier called shopPriceDisplay. Only used by some online shops. For more information have a look into our handbook." }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for the sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Shows the delivery time.", "example": "1 week" }, "createNewProductDuringImport": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] } } } } }, "example": { "description": "This is a product description.", "meta": { "title": "Product Title", "description": "Detailed product description.", "keywords": "keyword1, keyword2, keyword3" }, "isStockNumberSyncActive": true, "isSoldOut": false, "isRemainingQuantity": true, "suggestedRetailPrice": "99.99", "isVisible": true } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "mainVariant": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a main variant of this product", "nullable": true, "example": { "id": "variant-12345" } }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2024-09-23T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists information from all products": { "value": { "data": [ { "id": "1", "uuid": "018a2690-647a-7a8b-b100-cfc11ab7d4e8", "name": "Screw M10x20", "description": "", "shortDescription": null, "number": "700001", "project": { "id": "1", "name": "Standard project" }, "merchandiseGroup": { "id": "2", "name": "Service" }, "categories": [ { "id": "1" } ], "standardSupplier": { "id": "7" }, "stockCount": 22, "stockStats": { "purchasedCount": null, "totalCount": "22.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "ean": "", "manufacturer": { "name": "", "number": "", "link": "" }, "customsTariffNumber": "", "isMatrixProduct": true, "options": [], "selectedOptions": [], "variants": [], "isVariant": false, "variantOf": null, "mainVariant": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "isDeleted": false, "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "isCustomProduct": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "salesChannel": { "description": "", "meta": { "title": "", "description": "", "keywords": "" }, "isStockNumberSyncActive": false, "isRemainingQuantity": false, "isSoldOut": false, "isVisible": true, "suggestedRetailPrice": "0.00" }, "unit": { "name": "abc" }, "updatedAt": "2024-04-15T13:10:58+02:00" }, { "id": "2", "uuid": "018a2690-647b-7970-97c8-e02df3a2ae1f", "name": "hex nut M10", "description": "", "shortDescription": null, "number": "700002", "project": { "id": "1", "name": "Standard project" }, "merchandiseGroup": null, "categories": [ { "id": "1" } ], "standardSupplier": { "id": "7" }, "stockCount": 93, "stockStats": { "purchasedCount": null, "totalCount": "93.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "ean": "", "manufacturer": { "name": "", "number": "", "link": "" }, "customsTariffNumber": "", "isMatrixProduct": false, "options": [], "selectedOptions": [], "variants": [], "isVariant": false, "variantOf": null, "mainVariant": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "isDeleted": false, "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "isCustomProduct": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "salesChannel": { "description": "", "meta": { "title": "", "description": "", "keywords": "" }, "isStockNumberSyncActive": false, "isRemainingQuantity": false, "isSoldOut": false, "isVisible": true, "suggestedRetailPrice": "0.00" }, "unit": { "name": "" }, "updatedAt": "2024-03-27T15:13:25+01:00" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } }, "text/csv": { "schema": { "type": "string" } }, "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "category": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Product one" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU-0099" }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This is a high-quality product designed for everyday use." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "This product is seasonal and only available during the summer." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "This is a high-quality product designed for everyday use." }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://example.com/images/product-thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-12345" }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 10 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 5 }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": true }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": false }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": false }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": true }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": true }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "ageRating": { "type": "string", "nullable": true, "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL.", "example": "12+" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } }, "description": "Shows the name of the product unit.", "example": { "name": "kilogram" } }, "textsAndDescriptions": { "type": "object", "description": "Contains localized text and descriptions for the product.", "properties": { "inCatalog": { "type": "boolean", "description": "Indicates if the product is included in the catalog.", "example": true }, "primaryLanguage": { "type": "object", "description": "Texts and descriptions in the primary language.", "properties": { "name": { "type": "string", "description": "Product name.", "example": "Product One" }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "Compact and lightweight product." }, "description": { "type": "string", "description": "Detailed product description.", "nullable": true, "example": "This is a high-quality product." }, "shopDescription": { "type": "string", "description": "Shop-specific description.", "example": "Perfect for daily use." }, "metaTitle": { "type": "string", "description": "SEO meta title.", "example": "Best Product for Everyday Use" }, "metaDescription": { "type": "string", "description": "SEO meta description.", "example": "Buy the best quality product online." }, "metaKeywords": { "type": "string", "description": "SEO keywords.", "example": "product, best quality, affordable" }, "catalogName": { "type": "string", "description": "Name in the catalog.", "example": "Premium Collection" }, "catalogText": { "type": "string", "description": "Text in the catalog.", "example": "Exclusive product from our latest collection." } } }, "english": { "type": "object", "description": "Texts and descriptions in English.", "properties": { "name": { "type": "string", "description": "Product name in English.", "example": "Product One" }, "shortDescription": { "type": "string", "description": "Short description in English.", "example": "Compact and lightweight product." }, "description": { "type": "string", "description": "Detailed product description.", "example": "High-quality product for all needs." }, "shopDescription": { "type": "string", "description": "Shop-specific description.", "example": "Great for everyday use." }, "metaTitle": { "type": "string", "description": "SEO meta title.", "example": "Top-Rated Product Online" }, "metaDescription": { "type": "string", "description": "SEO meta description.", "example": "Shop the best product at the best price." }, "metaKeywords": { "type": "string", "description": "SEO keywords.", "example": "best product, top quality, shop online" }, "catalogName": { "type": "string", "description": "Catalog name in English.", "example": "Exclusive Range" }, "catalogText": { "type": "string", "description": "Catalog text in English.", "example": "Premium product from our latest lineup." } } } }, "example": { "inCatalog": true, "primaryLanguage": { "name": "Produkt eins", "shortDescription": "Kurze Beschreibung des Produkts.", "description": "Dies ist eine detaillierte Produktbeschreibung.", "shopDescription": "Verkaufsbeschreibung für den Shop.", "metaTitle": "Produkt SEO-Titel", "metaDescription": "Meta-Beschreibung für das Produkt.", "metaKeywords": "Produkt, SEO, Keywords", "catalogName": "Produktkatalogname", "catalogText": "Detaillierter Katalogtext für das Produkt." }, "english": { "name": "Product One", "shortDescription": "Short description of the product.", "description": "This is a detailed product description.", "shopDescription": "Shop description for the product.", "metaTitle": "Product SEO Title", "metaDescription": "Meta description for the product.", "metaKeywords": "product, SEO, keywords", "catalogName": "Product Catalog Name", "catalogText": "Detailed catalog text for the product." } } }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": true }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "description": "Shows if the just in time items of the parts list are visible on documents.", "example": true }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": false }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Out of stock" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product.", "example": "standard" }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook.", "example": "19.99" }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "manufacturerName": { "type": "string", "nullable": true, "description": "Name of the manufacturer.", "example": "Test Corp" }, "manufacturerNumber": { "type": "string", "nullable": true, "description": "Product number at the manufacturer.", "example": "MN-98765" }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "04" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": true }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook.", "example": false }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook.", "example": 15.5 } }, "example": { "isDiscountProduct": false, "discountPercentage": 15.5 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "purchasePriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "purchasePriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "stockStats": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "purchasedCount": { "type": "string", "format": "float", "nullable": true }, "totalCount": { "type": "string", "format": "float", "nullable": true }, "availableCount": { "type": "string", "format": "float", "nullable": true }, "inProductionCount": { "type": "string", "format": "float", "nullable": true } }, "example": { "purchasedCount": "100.5", "totalCount": "500.75", "availableCount": "300.25", "inProductionCount": "50.0" } }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2023-09-23T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "example": { "data": [ { "id": "2", "name": "Coca Cola" }, { "id": "4", "name": "beer" }, { "id": "5", "name": "mate" } ], "extra": { "totalCount": 53841, "page": { "number": 1, "size": 3 } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product" ], "operationId": "product.updateMultiple", "summary": "Update multiple products", "description": "Updates multiple products", "requestBody": { "description": "Product update multiple request payload", "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the product.", "example": "Eco-Friendly Water Bottle" }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU12345-ABC" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This is a high-quality, durable backpack designed for outdoor adventures, featuring multiple compartments and waterproof fabric." }, "internalComment": { "type": "string", "nullable": true, "description": "Text only for internal information.", "example": "Ensure to review this product's compliance before the next shipment." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "Compact wireless mouse with ergonomic design." }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 1 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 10 }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "user" }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Product is currently out of stock." }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "nullable": true, "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL.", "example": "18" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "manufacturer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer.", "example": "Test Corp" }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer.", "example": "AC12345" }, "link": { "type": "string", "nullable": true, "description": "URI of the manufacturer.", "example": "https://www.testcorp.com" } }, "example": { "name": "Test Corp", "number": "AC12345", "link": "https://www.testcorp.com" } }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product.", "example": "standard" }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook.", "example": "19.99" }, "category": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": true }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook.", "example": false }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook.", "example": 15.5 } }, "example": { "isDiscountProduct": false, "discountPercentage": 15.5 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking.", "example": true }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking.", "example": 100.75 } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used.", "example": false }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "100.00", "currency": "EUR" } } }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin", "nullable": true, "example": "05" }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook.", "example": true }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Either ID or name and key.", "example": "12345" }, "key": { "x-description-missing": true, "type": "string", "example": "productKey123" }, "name": { "x-description-missing": true, "type": "string", "example": "Sample Product" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } } } } }, "examples": { "Update multiple products": { "value": [ { "id": "17", "name": "Shipping Discount Small", "category": { "id": "2000" }, "discount": { "isDiscountProduct": true, "discountPercentage": 2 }, "isStockItem": false }, { "id": "18", "name": "Shipping Discount Big", "category": { "id": "2000" }, "discount": { "isDiscountProduct": true, "discountPercentage": 5 }, "isStockItem": false } ] } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the product.", "example": "Shipping Discount Small" }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU123456" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This is a detailed description of the product." }, "internalComment": { "type": "string", "nullable": true, "description": "Text only for internal information.", "example": "Handle with care; sensitive material." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "A compact and efficient shipping solution." }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 10 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 5 }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "user" }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Product is out of stock." }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "nullable": true, "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL.", "example": "18" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "manufacturer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer.", "example": "Test Innovations" }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer.", "example": "TEST-987654" }, "link": { "type": "string", "nullable": true, "description": "URI of the manufacturer.", "example": "https://www.samplesite.com" } }, "example": { "name": "Test Innovations", "number": "AC12345", "link": "https://www.samplesite.com" } }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product.", "example": "reduced" }, "merchandiseGroup": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "example": [ { "id": "1" }, { "id": "2" } ] }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": true }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook.", "example": false }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook.", "example": true }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook.", "example": 15.5 } }, "example": { "isDiscountProduct": false, "discountPercentage": 15.5 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking.", "example": true }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking.", "example": 100.75 } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used.", "example": true }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "100.00", "currency": "EUR" } } }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin", "nullable": true, "example": "04" }, "salesChannel": { "type": "object", "additionalProperties": false, "description": "General sales channel information that is valid for all sales channels, if not overridden by individual sales channel information.", "properties": { "description": { "type": "string", "description": "Description of the product for sales channels.", "example": "A high-quality product." }, "meta": { "type": "object", "additionalProperties": false, "description": "Meta information for sales channels.", "properties": { "title": { "type": "string", "description": "Meta title of the product for sales channels.", "example": "Sample Product Title" }, "description": { "type": "string", "description": "Meta description of the product for sales channels.", "example": "This product is designed for everyday use." }, "keywords": { "type": "string", "description": "Meta keywords of the product for sales channels.", "example": "product, products" } }, "example": { "title": "Sample Product Title", "description": "This product is designed for everyday use.", "keywords": "product, products" } }, "isStockNumberSyncActive": { "type": "boolean", "description": "Determines if the stock number synchronization to the sales channel is active.", "example": true }, "isSoldOut": { "type": "boolean", "description": "Determines if the product is sold out.", "example": true }, "isRemainingQuantity": { "type": "boolean", "description": "Determines if only the remaining quantity of the product is left.", "example": true }, "isVisible": { "type": "boolean", "description": "This field was formerly called isVisibleInOnlineShops. Determines if a product is visible in all sales channels", "example": true }, "suggestedRetailPrice": { "type": "string", "format": "float", "nullable": true, "description": "This field was formerly called shopPriceDisplay. Sets the suggested retail price for sales channels. Only used by some online shops. For more information have a look into our handbook.", "example": "25.99" }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for all sales channels.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Sets the delivery time for all sales channels.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Determines if a new product is generated during the sales order import from all sales channels.", "example": true } }, "example": { "description": "This is a product description.", "meta": { "title": "Product Title", "description": "Detailed product description.", "keywords": "keyword1, keyword2, keyword3" }, "isStockNumberSyncActive": true, "isSoldOut": false, "isRemainingQuantity": true, "suggestedRetailPrice": "99.99", "isVisible": true, "suggestedStockQuantity": "100", "deliveryTime": "1 week", "createNewProductDuringImport": true } }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Either ID or name and key.", "example": "12345" }, "key": { "type": "string", "description": "Unique identifier for the product or entity.", "example": "prod-001" }, "name": { "type": "string", "description": "Name of the product or entity.", "example": "Sample Product" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } } } } }, "examples": { "Update multiple products": { "value": [ { "id": "17", "name": "Shipping Discount Small", "merchandiseGroup": { "id": "2000" }, "discount": { "isDiscountProduct": true, "discountPercentage": 2 }, "isStockItem": false }, { "id": "18", "name": "Shipping Discount Small", "merchandiseGroup": { "id": "2000" }, "discount": { "isDiscountProduct": true, "discountPercentage": 5 }, "isStockItem": false } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product" ], "operationId": "product.deleteMultiple", "summary": "Delete multiple products", "description": "Deletes multiple products", "requestBody": { "description": "Product delete multiple request payload", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "examples": { "Delete multiple products": { "value": [ { "id": "1337" }, { "id": "1339" }, { "id": "1340" } ] } } }, "application/vnd.xentral.force+json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "examples": { "Delete multiple products": { "value": [ { "id": "1337" }, { "id": "1339" }, { "id": "1340" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}": { "get": { "tags": [ "Product" ], "operationId": "product.view", "summary": "View product", "description": "Returns details of a single product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "category": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Sample Product" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "This is a high-quality product designed for everyday use." }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU-12345" }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://www.example.com/images/thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-12345" }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "A compact and efficient multi-tool for outdoor use." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "Handle with care." }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 10 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 5 }, "isMatrixProduct": { "type": "boolean", "description": "Shows if the product is a matrix product.", "example": true }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": false }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": false }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": true }, "ageRating": { "type": "string", "nullable": true, "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL.", "example": "12+" }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": true }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "description": "Shows if the just in time items of the parts list are visible on documents.", "example": false }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": true }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": false }, "isCustomProduct": { "type": "boolean", "description": "Shows if the product is a custom product.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": true }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Product is discontinued." }, "markAsSoldOut": { "type": "boolean", "description": "Shows if the product is sold out.", "example": true }, "markAsInactive": { "type": "boolean", "description": "Shows if the product is inactive.", "example": false }, "isDeleted": { "type": "boolean", "description": "Shows if the product is deleted.", "example": false }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "example": "kilogram" } }, "example": { "name": "kilogram" }, "description": "Shows the name of the product unit." }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "manufacturer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer." }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer." }, "url": { "type": "string", "nullable": true, "description": "URI of the manufacturer." } }, "example": { "name": "Beverage Manufacturer", "number": "BM#1", "url": "https://example.com" } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": false }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Shows the sales tax of the product.", "example": "standard" }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook.", "example": "19.99" }, "isRemainingQuantity": { "type": "boolean", "description": "Shows if only the remaining quantity of the product is left.", "example": true }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "04" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": false }, "stockStats": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "purchasedCount": { "type": "string", "format": "float", "nullable": true }, "totalCount": { "type": "string", "format": "float", "nullable": true }, "availableCount": { "type": "string", "format": "float", "nullable": true }, "inProductionCount": { "type": "string", "format": "float", "nullable": true } }, "example": { "purchasedCount": "100.5", "totalCount": "500.75", "availableCount": "300.25", "inProductionCount": "50.0" } }, "purchasePriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "purchasePriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "manufacturerName": { "type": "string", "nullable": true, "description": "Name of the manufacturer.", "example": "Test Corp" }, "manufacturerNumber": { "type": "string", "nullable": true, "description": "Product number at the manufacturer.", "example": "MN-98765" }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook." } }, "example": { "isDiscountProduct": true, "discountPercentage": 15.5 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "mainVariant": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a main variant of this product", "nullable": true, "example": { "id": "variant-12345" } }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "defaultStorageLocation": { "description": "Default storage location of the product.", "type": "object", "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "designation": { "type": "string", "description": "Name of the storage location" }, "warehouse": { "type": "object", "description": "Warehouse of the storage location", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "designation": { "type": "string" } }, "example": { "id": "1", "designation": "Warehouse 1" } } }, "example": { "id": "1", "designation": "Shelf 1", "warehouse": { "id": "1", "designation": "Warehouse 1" } } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2024-09-19T12:34:56Z" } }, "example": { "id": "1", "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "project": { "id": "1", "name": "Project1" }, "category": null, "standardSupplier": null, "name": "Shirt", "description": "This is a shirt.", "ean": "123456789", "stockCount": 0, "number": "133456", "thumbnailUrl": "http://localhost/index.php?module=artikel&action=thumbnail&id=1&bildvorschau=16_100_100", "thumbnailId": "16", "customsTariffNumber": "39JOE85W", "countryOfOrigin": null, "tags": [], "shortDescription": null, "internalComment": "", "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "isMatrixProduct": false, "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "allowPurchaseFromAllSuppliers": false, "isStockTakingDisabled": false, "ageRating": null, "hasBillOfMaterials": false, "isProductionProduct": false, "isExternallyProduced": false, "isCustomProduct": false, "isAssembledJustInTime": false, "hidePriceOnDocuments": false, "hideJustInTimeItemsOnDocuments": false, "markAsSoldOut": false, "markAsInactive": false, "isDeleted": false, "isDisabled": false, "disabledReason": null, "unit": { "name": "" }, "measurements": { "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" }, "length": { "value": 0, "unit": "cm" }, "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" } }, "manufacturer": { "name": "Manufacturer A", "number": "MAN-123456", "url": null }, "isStockItem": false, "salesTax": "standard", "shopPriceDisplay": "5.20", "isRemainingQuantity": false, "regionOfOrigin": "", "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "stockTaking": { "hasStockTakingValue": false, "stockTakingValue": 0 }, "calculatedPurchasePrice": { "hasCalculatedPurchasePrice": false, "price": { "amount": "0.0000", "currency": "EUR" } }, "options": [], "selectedOptions": [], "variants": [], "freeFields": [ { "id": "2", "name": "ff_2", "value": "ff2" }, { "id": "29", "name": "ff_29", "value": "ff29" }, { "id": "35", "name": null, "value": "ff35" } ], "defaultStorageLocation": { "id": "1", "designation": "Shelf 1", "warehouse": { "id": "1", "designation": "Warehouse 1" } }, "updatedAt": "2024-09-19T12:34:56Z", "isVariant": false, "variantOf": null, "mainVariant": null } } } }, "examples": { "Shows information about a single product": { "value": { "data": { "id": "1", "uuid": "018a2690-647a-7a8b-b100-cfc11ab7d4e8", "name": "Screw M10x20", "description": null, "shortDescription": null, "number": "700001", "project": { "id": "1", "name": "Standard project" }, "category": { "id": "2", "name": "Service" }, "standardSupplier": { "id": "7" }, "stockCount": 22, "shopPriceDisplay": "0.00", "ean": null, "manufacturer": { "name": null, "number": null, "url": null }, "customsTariffNumber": null, "options": [ { "id": "1", "name": "Color", "values": [ { "id": "1", "name": "blue", "sort": 1 }, { "id": "2", "name": "red", "sort": 2 } ] } ], "selectedOptions": [], "variants": [ { "id": "15", "options": [ { "id": "1" } ] }, { "id": "16", "options": [ { "id": "2" } ] } ], "isVariant": false, "variantOf": null, "mainVariant": { "id": "15" }, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "isDeleted": false, "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": null, "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "isCustomProduct": false, "hideJustInTimeItemsOnDocuments": false, "markAsSoldOut": false, "markAsInactive": false, "isRemainingQuantity": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "unit": { "name": "Stk." }, "updatedAt": "2024-04-15T13:10:58+02:00" } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "merchandiseGroup": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Sample Product" }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This is a high-quality product designed for everyday use." }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU123456" }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://www.example.com/images/thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-001" }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "A compact and efficient product for everyday use." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "Handle with care." }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 50 }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 10 }, "isMatrixProduct": { "type": "boolean", "description": "Shows if the product is a matrix product.", "example": true }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": false }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": false }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": false }, "ageRating": { "type": "string", "nullable": true, "example": "12+", "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL." }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": true }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "example": true, "description": "Shows if the just in time items of the parts list are visible on documents." }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": true }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": false }, "isCustomProduct": { "type": "boolean", "description": "Shows if the product is a custom product.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": false }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Product is under review." }, "isDeleted": { "type": "boolean", "description": "Shows if the product is deleted.", "example": false }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "London, UK" }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } }, "description": "Shows the name of the product unit.", "example": { "name": "Kilogram" } }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "manufacturer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer." }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer." }, "link": { "type": "string", "nullable": true, "description": "URI of the manufacturer." } }, "example": { "name": "Test Corp", "number": "AC12345", "link": "https://www.testcorp.com" } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": true }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Shows the sales tax of the product.", "example": "reduced" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": false }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook." } }, "example": { "isDiscountProduct": true, "discountPercentage": 15.15 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "salesChannel": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "description": { "type": "string" }, "meta": { "type": "object", "additionalProperties": false, "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "keywords": { "type": "string" } } }, "isStockNumberSyncActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isSoldOut": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isRemainingQuantity": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedRetailPrice": { "type": "string", "format": "float", "nullable": true, "description": "Was earlier called shopPriceDisplay. Only used by some online shops. For more information have a look into our handbook." }, "isVisible": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for all sales channels.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Shows the delivery time for all sales channels.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Shows if a new product is generated during the sales order import from all sales channels.", "example": true }, "channels": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "salesChannel": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "isActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "useIndividualSalesChannelSettings": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockNumberSyncActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isRemainingQuantity": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedRetailPrice": { "type": "string", "description": "Was earlier called shopPriceDisplay. Only used by some online shops. For more information have a look into our handbook." }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for the sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Shows the delivery time.", "example": "1 week" }, "createNewProductDuringImport": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] } } } } }, "example": { "description": "A high-quality product.", "meta": { "title": "Sample Product Title", "description": "This product is designed for everyday use.", "keywords": "product, products" }, "isStockNumberSyncActive": true, "isSoldOut": false, "isRemainingQuantity": true, "suggestedRetailPrice": "19.99", "isVisible": true } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "mainVariant": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a main variant of this product", "nullable": true, "example": { "id": "variant-12345" } }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2024-09-19T12:34:56Z" } }, "example": { "id": "1", "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "project": { "id": "1", "name": "Project1" }, "merchandiseGroup": null, "name": "Sample Product", "standardSupplier": null, "description": "This is a high-quality product designed for everyday use.", "ean": "1234567890123", "stockCount": 150, "number": "SKU123456", "thumbnailUrl": "https://www.example.com/images/thumbnail.jpg", "thumbnailId": "thumb-001", "customsTariffNumber": "1234.56.78", "countryOfOrigin": "DE", "tags": [], "shortDescription": "A compact and efficient product for everyday use.", "internalComment": "Handle with care.", "minimumStorageQuantity": 50, "minimumOrderQuantity": 10, "isMatrixProduct": true, "hasBatches": false, "serialNumbersMode": "mandatory", "hasBestBeforeDate": true, "allowPurchaseFromAllSuppliers": false, "isStockTakingDisabled": false, "ageRating": "12+", "hasBillOfMaterials": true, "isProductionProduct": true, "isExternallyProduced": false, "isCustomProduct": true, "isAssembledJustInTime": false, "hideJustInTimeItemsOnDocuments": true, "isDisabled": false, "disabledReason": "Product is under review.", "isDeleted": false, "regionOfOrigin": "London, UK", "unit": { "name": "Kilogram" }, "measurements": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } }, "manufacturer": { "name": "Test Corp", "number": "AC12345", "link": "https://www.testcorp.com" }, "isStockItem": true, "salesTax": "reduced", "isShippingCostsProduct": false, "discount": { "isDiscountProduct": true, "discountPercentage": 15.15 }, "stockTaking": { "hasStockTakingValue": true, "stockTakingValue": 100.75 }, "calculatedPurchasePrice": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } }, "salesChannel": { "description": "A high-quality product.", "meta": { "title": "Sample Product Title", "description": "This product is designed for everyday use.", "keywords": "product, products" }, "isStockNumberSyncActive": true, "isSoldOut": false, "isRemainingQuantity": true, "suggestedRetailPrice": "19.99", "isVisible": true }, "options": [], "selectedOptions": [], "variants": [], "mainVariant": null, "freeFields": [ { "id": "2", "name": "ff_2", "value": "ff2" }, { "id": "29", "name": "ff_29", "value": "ff29" }, { "id": "35", "name": null, "value": "ff35" } ], "updatedAt": "2024-09-19T12:34:56Z", "isVariant": true, "variantOf": null, "categories": [ { "id": "1" } ] } } } }, "examples": { "Shows information about a single product": { "value": { "data": { "id": "1", "uuid": "018a2690-647a-7a8b-b100-cfc11ab7d4e8", "name": "Screw M10x20", "description": null, "shortDescription": null, "number": "700001", "project": { "id": "1", "name": "Standard project" }, "merchandiseGroup": { "id": "2", "name": "Service" }, "categories": [ { "id": "1" } ], "standardSupplier": { "id": "7" }, "stockCount": 22, "ean": null, "manufacturer": { "name": null, "number": null, "link": null }, "customsTariffNumber": null, "isMatrixProduct": true, "options": [ { "id": "1", "name": "Color", "values": [ { "id": "1", "name": "blue", "sort": 1 }, { "id": "2", "name": "red", "sort": 2 } ] } ], "selectedOptions": [], "variants": [ { "id": "15", "options": [ { "id": "1" } ] }, { "id": "16", "options": [ { "id": "2" } ] } ], "isVariant": false, "variantOf": null, "mainVariant": { "id": "15" }, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "isDeleted": false, "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": null, "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "isCustomProduct": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "salesChannel": { "description": "", "meta": { "title": "", "description": "", "keywords": "" }, "isStockNumberSyncActive": false, "isRemainingQuantity": false, "isSoldOut": false, "isVisible": true, "suggestedRetailPrice": "0.00" }, "unit": { "name": "abc" }, "updatedAt": "2024-04-15T13:10:58+02:00" } } } } }, "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "name": { "type": "string", "description": "Name of the product.", "example": "Wireless Headphones" }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "WH-2024-XYZ" }, "isVariant": { "type": "boolean", "description": "Shows if the product is a variant of another product.", "example": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2024-09-23T14:30:00Z" } }, "example": { "id": "2", "uuid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "name": "Wireless Headphones", "number": "WH-2024-XYZ", "isVariant": true, "updatedAt": "2024-09-23T14:30:00Z" } } } }, "examples": { "Shows minimal information about a single product": { "value": { "data": { "id": "1", "uuid": "018a2690-647a-7a8b-b100-cfc11ab7d4e8", "name": "Screw M10x20", "number": "P123456", "isVariant": true, "updatedAt": "2024-02-16T14:32:41+02:00" } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product" ], "operationId": "product.update", "summary": "Update product", "description": "Updates details of a single product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Product update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the product." }, "number": { "type": "string", "description": "Number / SKU of the product." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "description": { "type": "string", "nullable": true, "description": "Description of the product." }, "internalComment": { "type": "string", "nullable": true, "description": "Text only for internal information." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product." }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product." }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product." }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product." }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product." }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook." }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product." }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "nullable": true, "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL." }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product." }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin", "nullable": true }, "measurements": { "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "manufacturer": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer." }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer." }, "link": { "type": "string", "nullable": true, "description": "URI of the manufacturer." } } }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product." }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook." }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook." }, "discount": { "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook." } } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Determines if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Sets the stock taking value for stock taking." } } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook." }, "category": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "options": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "nullable": true, "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "option": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Either ID or name and key." }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } } } }, "examples": { "Update Product": { "value": { "name": "Test Product Beverage", "description": "This is a very long description for the Test Product Beverage.", "shortDescription": "This is a short description.", "project": { "id": "7" }, "category": { "id": "1001" }, "customsTariffNumber": "12345678", "ean": "1234567890", "internalComment": "Attention: Only available for customers over the age of 18.", "minimumOrderQuantity": 100, "minimumStorageQuantity": 30, "allowPurchaseFromAllSuppliers": false, "hidePriceOnDocuments": false, "hasBatches": true, "serialNumbersMode": "disabled", "hasBestBeforeDate": true, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "isDisabled": false, "countryOfOrigin": "DE", "regionOfOrigin": "01", "salesTax": "standard", "isStockItem": true, "manufacturer": { "name": "Beverage Manufacturer", "number": "BM#1", "link": "https://example.com" }, "ageRating": "18", "freeFields": [ { "id": "8", "value": "FF8" } ], "variantOf": { "id": "1336" } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the product." }, "number": { "type": "string", "description": "Number / SKU of the product." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "description": { "type": "string", "nullable": true, "description": "Description of the product." }, "internalComment": { "type": "string", "nullable": true, "description": "Text only for internal information." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product." }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product." }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product" }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product." }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product." }, "allowPurchaseFromAllSuppliers": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBatches": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "serialNumbersMode": { "type": "string", "enum": [ "disabled", "user", "product", "productAndWarehouse" ], "description": "4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook." }, "hasBestBeforeDate": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hasBillOfMaterials": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isAssembledJustInTime": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isProductionProduct": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isExternallyProduced": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product." }, "hidePriceOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "ageRating": { "type": "string", "enum": [ "", "16", "18" ], "nullable": true, "description": "Sets an age rating for the product. Currently only used for the shipping service provider DHL." }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product." }, "regionOfOrigin": { "type": "string", "enum": [ "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "99" ], "description": "01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin", "nullable": true }, "measurements": { "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "manufacturer": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer." }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer." }, "link": { "type": "string", "nullable": true, "description": "URI of the manufacturer." } } }, "isStockItem": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockTakingDisabled": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "hideJustInTimeItemsOnDocuments": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product." }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook." }, "isMatrixProduct": { "type": "boolean", "description": "Determines if a product is a matrix product. For more information have a look into our handbook." }, "discount": { "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Sets the discount value if the product is a discount. For more information have a look into our handbook." } } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Determines if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Sets the stock taking value for stock taking." } } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Sets if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "salesChannel": { "type": "object", "additionalProperties": false, "description": "General sales channel information that is valid for all sales channels, if not overridden by individual sales channel information.", "properties": { "description": { "type": "string", "description": "Description of the product for sales channels.", "example": "A high-quality product." }, "meta": { "type": "object", "additionalProperties": false, "description": "Meta information for sales channels.", "properties": { "title": { "type": "string", "description": "Meta title of the product for sales channels.", "example": "Sample Product Title" }, "description": { "type": "string", "description": "Meta description of the product for sales channels.", "example": "This product is designed for everyday use." }, "keywords": { "type": "string", "description": "Meta keywords of the product for sales channels.", "example": "product, products" } } }, "isStockNumberSyncActive": { "type": "boolean", "description": "Determines if the stock number synchronization to the sales channel is active.", "example": true }, "isSoldOut": { "type": "boolean", "description": "Determines if the product is sold out.", "example": true }, "isRemainingQuantity": { "type": "boolean", "description": "Determines if only the remaining quantity of the product is left.", "example": true }, "isVisible": { "type": "boolean", "description": "This field was formerly called isVisibleInOnlineShops. Determines if a product is visible in all sales channels", "example": true }, "suggestedRetailPrice": { "type": "string", "format": "float", "nullable": true, "description": "This field was formerly called shopPriceDisplay. Sets the suggested retail price for sales channels. Only used by some online shops. For more information have a look into our handbook.", "example": "25.99" }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for all sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Sets the delivery time for all sales channels.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Determines if a new product is generated during the sales order import from all sales channels.", "example": true } } }, "merchandiseGroup": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "example": [ { "id": "1" }, { "id": "2" } ] }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "x-description-missing": true, "type": "string", "example": "Sample Product" } } } }, "options": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "nullable": true, "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "option": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Either ID or name and key." }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } } } }, "examples": { "Update Product": { "value": { "name": "Test Product Beverage", "description": "This is a very long description for the Test Product Beverage.", "shortDescription": "This is a short description.", "project": { "id": "7" }, "merchandiseGroup": { "id": "2001" }, "customsTariffNumber": "12345678", "ean": "1234567890", "internalComment": "Attention: Only available for customers over the age of 18.", "minimumOrderQuantity": 100, "minimumStorageQuantity": 30, "allowPurchaseFromAllSuppliers": false, "hidePriceOnDocuments": false, "hasBatches": true, "serialNumbersMode": "disabled", "hasBestBeforeDate": true, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "isDisabled": false, "countryOfOrigin": "DE", "regionOfOrigin": "01", "salesTax": "standard", "isStockItem": true, "manufacturer": { "name": "Beverage Manufacturer", "number": "BM#1", "link": "https://example.com" }, "ageRating": "18", "freeFields": [ { "id": "8", "value": "FF8" } ], "variantOf": { "id": "1336" } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product" ], "operationId": "product.delete", "summary": "Delete product", "description": "Deletes a single product", "requestBody": { "content": { "*/*": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } }, "application/vnd.xentral.force": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/media": { "get": { "tags": [ "Product" ], "operationId": "product.listMedia", "summary": "View media", "description": "Returns a list of given Products' Media", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Sustainable Water Bottle" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "This product is made from sustainable materials and is designed for everyday use." }, "keyword": { "x-description-missing": true, "type": "string", "nullable": true, "example": "eco-friendly" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "currentVersion": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "type": "integer" }, "url": { "type": "string" }, "remark": { "type": "string", "nullable": true }, "filename": { "type": "string" }, "size": { "type": "integer" }, "updatedAt": { "type": "string", "format": "date-time" } }, "example": { "id": "123456", "version": 1, "url": "https://www.example.com/resource", "remark": "This is a sample remark.", "filename": "document.pdf", "size": 2048, "updatedAt": "2024-09-19T12:34:56Z" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2024-09-20T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all product media": { "value": { "data": [ { "id": "5", "product": { "id": "1" }, "title": "", "description": "", "keyword": "defaultImage", "sort": 1, "currentVersion": { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "updatedAt": "2024-02-16T14:32:41+02:00" }, { "id": "6", "product": { "id": "1" }, "title": "", "description": "", "keyword": "printImage", "sort": 2, "currentVersion": { "id": "16", "version": 2, "url": "/api/productMedia/6/versions/2", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "updatedAt": "2024-02-16T14:32:41+02:00" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/purchasePrices": { "get": { "tags": [ "Product" ], "operationId": "product.listPurchasePrices", "summary": "View purchase prices", "description": "Returns a list of given Products' PurchasePrices", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "amount", "priceAmount", "supplier", "supplierName" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "x-description-missing": true, "type": "integer", "example": 10 }, "supplier": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "additionalInformation": { "description": "Additional information about stock and delivery details.", "type": "object", "additionalProperties": false, "properties": { "supplierAvailableStock": { "description": "The quantity of stock available from the supplier.", "type": "integer", "example": 10000 }, "supplierAvailableStockDate": { "description": "The date on which the supplier's available stock was last updated.", "type": "string", "nullable": true, "example": "2024-01-01" }, "safetyStock": { "description": "The minimum quantity of stock maintained for safety purposes.", "type": "integer", "example": 5000 }, "standardDeliveryTime": { "description": "The standard delivery time required to receive stock.", "type": "integer", "example": 3 }, "standardDeliveryTimeUnit": { "description": "The unit of time for the standard delivery duration", "type": "string", "example": "days" }, "currentDeliveryTime": { "description": "The actual current delivery time for receiving stock.", "type": "integer", "example": 2 }, "currentDeliveryTimeUnit": { "description": "The unit of time for the current delivery duration", "type": "string", "example": "weeks" } }, "example": { "supplierAvailableStock": 10000, "supplierAvailableStockDate": "2024-06-30", "safetyStock": 5000, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 2, "currentDeliveryTimeUnit": "weeks" } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all purchase prices for given product": { "value": { "data": [ { "id": "15", "amount": 1, "supplier": { "id": "7", "name": "Thilo Altmann-Meyer" }, "price": { "amount": "1.00000000", "currency": "EUR" }, "additionalInformation": { "supplierAvailableStock": 10000, "supplierAvailableStockDate": "2024-06-30", "safetyStock": 5000, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 2, "currentDeliveryTimeUnit": "weeks" } }, { "id": "7", "amount": 100, "supplier": { "id": "7", "name": "Thilo Altmann-Meyer" }, "price": { "amount": "0.80000000", "currency": "EUR" }, "additionalInformation": { "supplierAvailableStock": 0, "supplierAvailableStockDate": "0000-00-00", "safetyStock": 0, "standardDeliveryTime": 0, "standardDeliveryTimeUnit": "weeks", "currentDeliveryTime": 0, "currentDeliveryTimeUnit": "weeks" } } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/salesPrices": { "get": { "tags": [ "Product" ], "operationId": "product.listSalesPrices", "summary": "View sales prices", "description": "Returns a list of given Products' SalesPrices", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "amount", "priceAmount", "customer", "customerName" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "x-description-missing": true, "type": "string", "example": "Sample Product Name" }, "validFrom": { "x-description-missing": true, "type": "string", "format": "date", "nullable": true, "example": "2024-01-01" }, "expiresAt": { "x-description-missing": true, "type": "string", "format": "date", "nullable": true, "example": "2024-12-31" }, "amount": { "x-description-missing": true, "type": "integer", "example": 5 }, "customer": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "customerGroup": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "reference": { "type": "string" } }, "example": { "id": "123456", "name": "Sample Item", "reference": "REF-7890" } }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all sales prices for a given product": { "value": { "data": [ { "id": "2", "customer": { "id": "7", "name": "Thilo Altmann-Meyer" }, "customerGroup": null, "validFrom": "2024-04-01", "expiresAt": "2024-04-30", "amount": 1, "price": { "amount": "0.16000000", "currency": "EUR" } }, { "id": "17", "customer": null, "customerGroup": null, "validFrom": null, "expiresAt": "2024-12-12", "amount": 10, "price": { "amount": "3.00000000", "currency": "CHF" } }, { "id": "16", "customer": null, "customerGroup": null, "validFrom": "2025-01-01", "expiresAt": null, "amount": 10, "price": { "amount": "3.00000000", "currency": "CHF" } } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/purchaseOrdersPositions": { "get": { "tags": [ "Product" ], "operationId": "product.listPurchaseOrdersPositions", "summary": "View purchase orders positions", "description": "Returns a list of given Products' positions in PurchaseOrders", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "amount", "deliveryDate", "order", "orderDate", "orderNumber", "supplier", "supplierName" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "x-description-missing": true, "type": "string", "example": "12345-XYZ" }, "date": { "x-description-missing": true, "type": "string", "example": "2024-09-19T12:34:56Z" }, "amount": { "x-description-missing": true, "type": "string", "format": "float", "example": "25.00" }, "deliveredAmount": { "x-description-missing": true, "type": "string", "format": "float", "example": "15.50" }, "deliveryDate": { "x-description-missing": true, "type": "string", "format": "date", "example": "2024-09-19" }, "isInstantDelivery": { "x-description-missing": true, "type": "boolean", "example": true }, "purchaseOrder": { "type": "object", "additionalProperties": false, "description": "Represents a purchase order containing details about the order, including its identifier, number, delivery date, and supplier information.", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "description": "The order number assigned by the system.", "example": "ORD-2024-001" }, "deliveryDate": { "type": "string", "format": "date", "description": "The expected delivery date for the order.", "example": "2024-10-15" }, "supplier": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } } }, "example": { "id": "PO123456", "number": "ORD-2024-001", "deliveryDate": "2024-10-15", "supplier": { "id": "SUP123", "name": "Test Supplies Inc." } } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all purchase order positions with given product": { "value": { "data": [ { "id": "9", "amount": "8", "deliveredAmount": "0", "deliveryDate": "2024-04-12", "isInstantDelivery": true, "purchaseOrder": { "id": "5", "number": "", "deliveryDate": "2024-04-12", "supplier": { "id": "7", "name": "Thilo Altmann-Meyer" } } }, { "id": "8", "amount": "8", "deliveredAmount": "0", "deliveryDate": "2024-03-24", "isInstantDelivery": true, "purchaseOrder": { "id": "4", "number": "", "deliveryDate": "2024-03-24", "supplier": { "id": "7", "name": "Thilo Altmann-Meyer" } } }, { "id": "6", "amount": "10.5", "deliveredAmount": "0", "deliveryDate": "2024-03-24", "isInstantDelivery": true, "purchaseOrder": { "id": "3", "number": "", "deliveryDate": "2024-03-27", "supplier": { "id": "7", "name": "Thilo Altmann-Meyer" } } }, { "id": "4", "amount": "100", "deliveredAmount": "0", "deliveryDate": "2024-03-16", "isInstantDelivery": true, "purchaseOrder": { "id": "2", "number": "100001", "deliveryDate": "2022-03-16", "supplier": { "id": "7", "name": "Thilo Altmann-Meyer" } } } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/salesOrdersPositions": { "get": { "tags": [ "Product" ], "operationId": "product.listSalesOrdersPositions", "summary": "View sales orders positions", "description": "Returns a list of given Products' positions in SalesOrders", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "amount", "customer", "customerName", "order", "orderNumber", "orderStatus" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "x-description-missing": true, "type": "string", "format": "float", "example": "25.00" }, "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true, "description": "Desired delivery date for the order.", "example": "2024-10-24" }, "desiredDeliveryDateCw": { "type": "boolean", "description": "Indicates if the desired delivery date is in calendar weeks.", "example": false }, "salesOrder": { "type": "object", "additionalProperties": false, "description": "Represents a sales order containing details such as order ID, status, date, and customer information.", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "description": "The order number assigned by the system." }, "status": { "type": "string", "description": "Current status of the sales order (e.g., 'pending', 'completed', 'canceled')." }, "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true, "description": "Desired delivery date for the order.", "example": "2024-10-24" }, "desiredDeliveryDateCw": { "type": "boolean", "description": "Indicates if the desired delivery date is in calendar weeks.", "example": false }, "reservationDate": { "type": "string", "format": "date", "nullable": true, "description": "Date when the order was reserved." }, "earliestFulfillmentDate": { "type": "string", "format": "date", "nullable": true, "description": "Earliest date when the order can be fulfilled." }, "date": { "type": "string", "format": "date", "description": "The date when the sales order was created." }, "customer": { "type": "object", "additionalProperties": false, "description": "Information about the customer associated with the sales order.", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the customer." }, "number": { "type": "string", "description": "Customer account number." }, "date": { "type": "string", "format": "date", "description": "Date associated with the customer (e.g., registration date)." } } } }, "example": { "id": "SO987654", "number": "ORD-2024-002", "status": "pending", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "reservationDate": null, "earliestFulfillmentDate": "2024-10-05", "date": "2024-09-25", "customer": { "id": "CUST123", "name": "John Doe", "number": "CUST-001", "date": "2022-01-15" } } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all sales order positions with given product": { "value": { "data": [ { "id": "22", "amount": "10", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "salesOrder": { "id": "4", "number": "200003", "status": "freigegeben", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "reservationDate": "2024-07-13", "earliestFulfillmentDate": "2024-07-10", "customer": { "id": "5", "name": "Lisbeth Lange", "number": "75" } } }, { "id": "16", "amount": "40", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "salesOrder": { "id": "1", "number": "200000", "status": "freigegeben", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "reservationDate": "2024-07-13", "earliestFulfillmentDate": "2024-07-10", "customer": { "id": "3", "name": "Dominik Scheffler B.A.", "number": "76146" } } }, { "id": "4", "amount": "20", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "salesOrder": { "id": "3", "number": "200002", "status": "freigegeben", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "reservationDate": "2024-07-13", "earliestFulfillmentDate": "2024-07-10", "customer": { "id": "5", "name": "Lisbeth Lange", "number": "75" } } }, { "id": "10", "amount": "4", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "salesOrder": { "id": "2", "number": "200001", "status": "freigegeben", "desiredDeliveryDate": null, "desiredDeliveryDateCw": false, "reservationDate": "2024-07-13", "earliestFulfillmentDate": "2024-07-10", "customer": { "id": "4", "name": "Nicolas Pape", "number": "40000" } } } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/productionsPositions": { "get": { "tags": [ "Product" ], "operationId": "product.listProductionsPositions", "summary": "View productions positions", "description": "Returns a list of given Products' positions in Productions", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "amount" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "x-description-missing": true, "type": "string", "format": "float", "example": "25.00" }, "product": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "12345" } }, "production": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string" }, "status": { "type": "string" }, "customer": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } } } }, "example": { "id": "12345", "number": "PROD-001", "status": "pending", "customer": { "id": "67890", "name": "John Doe" } } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all production positions with given product": { "value": { "data": [ { "id": "1", "amount": "1000", "product": { "id": "1" }, "production": { "id": "1", "number": "2024-400000", "status": "freigegeben", "customer": { "id": "4", "name": "Nicolas Pape" } } } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/properties": { "get": { "tags": [ "Product" ], "operationId": "product.listProperties", "summary": "View properties", "description": "Returns a list of given Products' Properties", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "value", "unit" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "property": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "value": { "x-description-missing": true, "type": "string", "nullable": true, "example": "100.00" }, "unit": { "x-description-missing": true, "type": "string", "nullable": true, "example": "kg" } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all properties of given product": { "value": { "data": [ { "id": "1", "property": { "id": "1", "name": "Color" }, "value": "blue", "unit": null } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product" ], "operationId": "product.updateProperties", "summary": "Update properties", "description": "Update Properties of a single product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "property" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "property": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "name": { "x-description-missing": true, "type": "string", "example": "Color" }, "unit": { "x-description-missing": true, "type": "string", "nullable": true, "example": "kg" }, "value": { "x-description-missing": true, "type": "string", "example": "Green" } } } }, "examples": { "Update property by id": { "value": [ { "id": "17", "property": { "id": "1301" }, "value": "green" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/reservations": { "get": { "tags": [ "Product" ], "operationId": "product.listReservations", "summary": "View reservations", "description": "Returns a list of given Products' Reservations", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "amount", "customer", "customerName" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "x-description-missing": true, "type": "string", "format": "float", "example": "25.00" }, "reason": { "x-description-missing": true, "type": "string", "example": "Product was damaged upon arrival." }, "project": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "reference": { "type": "string" } }, "example": { "id": "12345", "reference": "REF-67890" } }, "customer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "number": { "type": "string" } }, "example": { "id": "12345", "name": "John Doe", "number": "CUST-001" } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all reservations for given product": { "value": { "data": [ { "id": "1301", "amount": "10", "reason": "R1", "project": { "id": "1", "reference": "" }, "customer": { "id": "1201", "name": "Tom Schneider", "number": "155780" } } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/parts": { "get": { "tags": [ "Product" ], "operationId": "product.listParts", "summary": "View parts", "description": "Returns a list of given Products' Parts", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "product", "productName", "amount" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "x-description-missing": true, "type": "string", "format": "float", "example": "25.00" }, "product": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "number": { "type": "string" } }, "example": { "id": "1", "name": "Product Name", "number": "SKU123456" } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all parts of a given product": { "value": { "data": [ { "id": "1301", "amount": "2.0000", "product": { "id": "1102", "name": "Fabric", "number": "346532" } } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Product" ], "operationId": "product.createParts", "summary": "Create new parts for product", "description": "Creates new parts for a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "part": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "amount": { "type": "number", "format": "float", "description": "Sets the amount for how many times the product is included", "example": 3.5 } } } }, "examples": { "Create parts for product": { "value": [ { "part": { "id": "17" }, "amount": 1 }, { "part": { "id": "18" }, "amount": 2 } ] } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product" ], "operationId": "product.updateParts", "summary": "Update parts of a product", "description": "Updates the parts of a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "type": "number", "format": "float", "description": "Sets the amount for how many times the product is included", "example": 100 } } } }, "examples": { "Update parts of product": { "value": [ { "id": "17", "amount": 1 } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product" ], "operationId": "product.deleteParts", "summary": "Deletes parts of a product", "description": "Deletes the parts of a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/storageLocations": { "get": { "tags": [ "Product" ], "operationId": "product.storageLocations", "summary": "View storage locations", "description": "Returns a list of given Products' warehouses entries", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "amount", "warehouse", "warehouseName" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "amount": { "x-description-missing": true, "type": "string", "format": "float", "example": "25.00" }, "product": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "12345" } }, "storageLocation": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "warehouse": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } } } }, "example": { "id": "12345", "name": "Product Name", "warehouse": { "id": "67890", "name": "Main Warehouse" } } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/crossSelling": { "get": { "tags": [ "Product" ], "operationId": "product.listCrossSelling", "summary": "List cross selling of a product", "description": "Returns a list of product's cross-selling products", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "productId", "productName", "productNumber", "type", "salesChannelId", "sort" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "active": { "type": "boolean", "description": "Shows if the cross selling relation is active.", "example": true }, "assignToEachOther": { "type": "boolean", "description": "Shows if the selected products are assigned to each other. For more information have a look into our handbook.", "example": false }, "type": { "type": "number", "description": "Shows the type of the cross selling product. 1 means similar product, 2 means accessory. For more information have a look into our handbook.", "example": 1 }, "salesChannel": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to an external sales channel AKA online shop", "nullable": true, "example": { "id": "sales-channel-56789" } }, "sort": { "type": "number", "description": "Sorting order of the cross selling entries. 0 means automatically.", "example": 1 }, "note": { "type": "string", "nullable": true, "description": "Internal note.", "example": "Handle with care during shipping." }, "product": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "example": "Sample Name" }, "number": { "type": "string", "example": "SKU-001" } }, "example": { "id": "123456", "name": "Sample Name", "number": "SKU-001" } } } } }, "extra": { "type": "object", "required": [ "page" ], "additionalProperties": false, "description": "Pagination data from the current request.", "properties": { "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "type": "integer" }, "size": { "type": "integer" } }, "example": { "number": 1, "size": 10 } } }, "example": { "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all cross selling relations of given product": { "value": { "data": [ { "id": "1111", "product": { "id": "1102", "name": "Second", "number": "346532" }, "active": true, "assignToEachOther": false, "type": 1, "salesChannel": null, "sort": 1, "note": "just a note" } ], "extra": { "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Product" ], "operationId": "product.createCrossSellingProducts", "summary": "Create new cross selling for a product", "description": "Creates new cross selling for a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "product" ], "properties": { "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "active": { "type": "boolean", "default": true, "description": "Determines if the cross selling relation is active.", "example": true }, "assignToEachOther": { "type": "boolean", "default": false, "description": "Determines if the selected products are assigned to each other. For more information have a look into our handbook.", "example": true }, "type": { "type": "number", "enum": [ 1, 2 ], "default": 1, "description": "Determines the type of the cross selling product. 1 means similar product, 2 means accessory. For more information have a look into our handbook.", "example": 1 }, "salesChannel": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to an external sales channel AKA online shop", "nullable": true, "example": { "id": "sales-channel-56789" } }, "sort": { "type": "number", "default": 0, "description": "Sorting order of the cross selling entries. 0 means automatically.", "example": 1 }, "note": { "type": "string", "nullable": true, "description": "Internal note.", "example": "This is an internal note for reference." } } } }, "examples": { "Create cross selling for product": { "value": [ { "product": { "id": "17" }, "active": false, "assignToEachOther": false, "type": 1, "salesChannel": { "id": "17" }, "sort": 0, "note": "A sample note for the cross selling association" } ] } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product" ], "operationId": "product.updateCrossSellingProducts", "summary": "Update cross selling of a product", "description": "Updates cross selling products of a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "active": { "type": "boolean", "description": "Determines if the cross selling relation is active.", "example": true }, "assignToEachOther": { "type": "boolean", "description": "Determines if the selected products are assigned to each other. For more information have a look into our handbook.", "example": false }, "type": { "type": "number", "enum": [ 1, 2 ], "description": "Determines the type of the cross selling product. 1 means similar product, 2 means accessory. For more information have a look into our handbook.", "example": 1 }, "salesChannel": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to an external sales channel AKA online shop", "nullable": true, "example": { "id": "sales-channel-56789" } }, "sort": { "type": "number", "description": "Sorting order of the cross selling entries. 0 means automatically.", "example": 1 }, "note": { "type": "string", "nullable": true, "description": "Internal note.", "example": "This is an internal note for reference." } } } }, "examples": { "Update cross selling for product": { "value": [ { "id": "17", "active": false, "assignToEachOther": true, "type": 1, "salesChannel": { "id": "17" }, "sort": 0, "note": "A sample note for the cross selling association" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product" ], "operationId": "product.deleteCrossSelling", "summary": "Delete cross selling of a product", "description": "Deletes cross selling items of a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/options": { "get": { "tags": [ "Matrixproduct" ], "operationId": "product.listOptions", "summary": "View options of a product", "description": "Returns a list of product's options", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "sort" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "x-description-missing": true, "type": "string", "example": "Sample Product" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "createdAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2024-09-19T12:34:56Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all options of a given product": { "value": { "data": [ { "id": "1", "name": "Color", "sort": 0, "createdAt": "2024-04-08T11:45:12+02:00" } ], "extra": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Matrixproduct" ], "operationId": "product.createOption", "summary": "Creates new option for a product", "description": "Creates new option for a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "sort": { "type": "number", "default": 0, "description": "Sorting order of the option" }, "name": { "type": "string", "description": "Name of the option" } } }, "examples": { "Create option for product": { "value": { "name": "Color" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Matrixproduct" ], "operationId": "product.updateMultipleOptions", "summary": "Update multiple options of a product", "description": "Updates multiple options of a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "sort": { "type": "number", "description": "Sorting order of the option", "example": 1 }, "name": { "type": "string", "description": "Name of the option", "example": "Sample option" } } } }, "examples": { "Update options for product": { "value": [ { "id": "17", "name": "Color" }, { "id": "18", "name": "Size" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Matrixproduct" ], "operationId": "product.deleteMultipleOptions", "summary": "Deletes multiple options of a product", "description": "Deletes multiple options of a product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{productId}/options/{id}": { "patch": { "tags": [ "Matrixproduct" ], "operationId": "product.updateOption", "summary": "Updates a single option of a matrix product.", "description": "Updates a single option of a matrix product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID of the matrix product." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Update a single option of a matrix product", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } } }, "examples": { "Update a single option": { "value": { "name": "Test Product Beverage" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/texts": { "get": { "tags": [ "Product" ], "operationId": "product.listTexts", "summary": "List product texts", "description": "The different product descriptions in all available locales for each of the shops.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "language", "shopId", "isActive" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "shopId", "language" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "description": "Presentation of a Product identified by a particular ID type", "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer", "description": "Unique identifier of the text", "example": 1 }, "name": { "type": "string", "nullable": true, "description": "name of the text", "example": "test" }, "shortDescription": { "type": "string", "nullable": true, "description": "shortDescription of the text", "example": "shortDescription" }, "description": { "type": "string", "nullable": true, "description": "description of the text", "example": "description" }, "shopDescription": { "type": "string", "nullable": true, "description": "shopDescription of the text", "example": "shopDescription" }, "metaTitle": { "type": "string", "nullable": true, "description": "metaTitle of the text", "example": "metaTitle" }, "metaDescription": { "type": "string", "nullable": true, "description": "metaDescription of the text", "example": "metaDescription" }, "metaKeywords": { "type": "string", "nullable": true, "description": "metaKeywords of the text", "example": "metaKeywords" }, "inCatalog": { "type": "boolean", "description": "inCatalog of the text", "example": true }, "catalogName": { "type": "string", "nullable": true, "description": "catalogName of the text", "example": "catalogName" }, "catalogText": { "type": "string", "nullable": true, "description": "catalogText of the text", "example": "catalogText" }, "isActive": { "type": "boolean", "nullable": true, "description": "isActive of the text", "example": false }, "product": { "type": "object", "additionalProperties": false, "description": "Details about the product", "properties": { "id": { "type": "number", "description": "product of the id", "example": 1 } }, "example": { "id": 1 } }, "shop": { "type": "object", "additionalProperties": false, "description": "Details about the shop", "properties": { "id": { "type": "number", "description": "shop of the id", "example": 1 } }, "example": { "id": 1 } }, "language": { "type": "object", "additionalProperties": false, "description": "Language details", "properties": { "iso2": { "type": "string", "description": "shop of the id", "example": "DE" } }, "example": { "iso2": "DE" } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "ProductTextExample": { "value": { "data": [ { "id": 1001, "name": "test", "shortDescription": "short", "description": "desc", "shopDescription": "shop", "metaTitle": "title", "metaDescription": "metadec", "metaKeywords": "keywords", "inCatalog": false, "catalogName": "catName", "catalogText": "text", "product": { "id": 101 }, "shop": { "id": 1 }, "isActive": false, "language": { "iso2": "DE" } } ], "extra": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/salesChannels": { "post": { "tags": [ "Sales Channels Product Settings" ], "operationId": "product.createSalesChannels", "summary": "Creates sales channel settings for a single product.", "description": "Creates sales channel settings for a single product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "salesChannel": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "isActive": { "type": "boolean", "description": "Determines if the sales channel connection is active.", "example": true }, "useIndividualSalesChannelSettings": { "type": "boolean", "description": "Determines if the individual sales channel settings should be used instead of the general sales channel settings.", "example": true }, "isStockNumberSyncActive": { "type": "boolean", "description": "Determines if the stock number synchronization to the sales channel is active.", "example": true }, "isRemainingQuantity": { "type": "boolean", "description": "Determines if only the remaining quantity of the product is left.", "example": true }, "suggestedRetailPrice": { "type": "string", "description": "Sets the suggested retail price for the sales channel.", "example": "25.99" }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for the sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Sets the delivery time.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Determines if a new product should be created during the sales order import from a sales channel.", "example": true } } }, "examples": { "example": { "value": { "salesChannel": { "id": "1" }, "isActive": true, "useIndividualSalesChannelSettings": false, "isStockNumberSyncActive": true, "isRemainingQuantity": false, "suggestedRetailPrice": "29.99", "suggestedStockQuantity": "100", "deliveryTime": "3-5 business days", "createNewProductDuringImport": true } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{productId}/salesChannels/{id}": { "delete": { "tags": [ "Sales Channels Product Settings" ], "operationId": "product.deleteSalesChannels", "summary": "Deletes sales channel settings for a single product.", "description": "Deletes sales channel settings for a single product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Sales Channels Product Settings" ], "operationId": "product.updateSalesChannels", "summary": "Updates sales channel settings for a single product.", "description": "Updates sales channel settings for a single product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "salesChannel": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "isActive": { "type": "boolean", "description": "Determines if the sales channel connection is active.", "example": true }, "useIndividualSalesChannelSettings": { "type": "boolean", "description": "Determines if the individual sales channel settings should be used instead of the general sales channel settings.", "example": true }, "isStockNumberSyncActive": { "type": "boolean", "description": "Determines if the stock number synchronization to the sales channel is active.", "example": true }, "isRemainingQuantity": { "type": "boolean", "description": "Determines if only the remaining quantity of the product is left.", "example": true }, "suggestedRetailPrice": { "type": "string", "description": "Sets the suggested retail price for the sales channel.", "example": "25.99" }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for the sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Sets the delivery time.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Determines if a new product should be created during the sales order import from a sales channel.", "example": true } } }, "examples": { "example": { "value": { "salesChannel": { "id": "12" }, "isActive": true, "useIndividualSalesChannelSettings": true, "isStockNumberSyncActive": true, "isRemainingQuantity": false, "suggestedRetailPrice": "99.99", "suggestedStockQuantity": "500", "deliveryTime": "3-5 business days", "createNewProductDuringImport": false } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{productId}/options/{optionId}/values/{id}": { "get": { "tags": [ "Matrixproduct" ], "operationId": "product.viewValue", "summary": "View a single value from an option of a matrix product.", "description": "Returns details of a single value from an option of a matrix product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID of the matrix product." }, { "in": "path", "name": "optionId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Option ID from the value it belongs to." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the value.", "example": "Sample name" }, "sort": { "description": "This value sorts the resource", "type": "number", "example": 1 } }, "example": { "id": "123456", "name": "Sample name", "sort": 1 } } } }, "examples": { "Shows information about a single value from an option of a matrix product": { "value": { "data": { "id": "1", "name": "blue", "sort": 1 } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Matrixproduct" ], "operationId": "product.updateValue", "summary": "Updates a single value from an option of a matrix product.", "description": "Updates a single value from an option of a matrix product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID of the matrix product." }, { "in": "path", "name": "optionId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Option ID from the value it belongs to." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the value" }, "sort": { "type": "number", "default": 1, "description": "Sorting order of the value" } } }, "examples": { "Update Value of an option of a matrix product": { "value": { "name": "blue" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Matrixproduct" ], "operationId": "product.deleteValue", "summary": "Deletes a single value from an option of a matrix product.", "description": "Deletes a single value from an option of a matrix product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID of the matrix product." }, { "in": "path", "name": "optionId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Option ID from the value it belongs to." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{productId}/options/{id}/values": { "get": { "tags": [ "Matrixproduct" ], "operationId": "product.listValues", "summary": "Lists all values from an option of a matrix product.", "description": "Lists all values from an option of a matrix product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID of the matrix product." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "description": "The name of the resource", "type": "string", "example": "Sample Resource" }, "sort": { "description": "This values determines the order of the resource", "type": "number", "example": 1 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Matrixproduct" ], "operationId": "product.deleteMultipleValues", "summary": "Deletes multiple values from an option of a matrix product.", "description": "Deletes multiple values from an option of a matrix product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID of the matrix product." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "examples": { "Delete multiple values": { "value": [ { "id": "1337" }, { "id": "1339" }, { "id": "1340" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Matrixproduct" ], "operationId": "product.createMultipleValues", "summary": "Creates multiple values for an option of a matrix product.", "description": "Creates multiple values for an option of a matrix product.", "parameters": [ { "in": "path", "name": "productId", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "description": "Product ID of the matrix product." }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the value", "example": "Sample Value" }, "sort": { "type": "number", "default": 1, "description": "Sorting order of the value", "example": 1 } } } }, "examples": { "Create values for an option of a matrix product": { "value": [ { "name": "blue" }, { "name": "red" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/actions/createVariants": { "post": { "tags": [ "Product" ], "operationId": "product.createVariants", "summary": "Creates variants for a matrix product", "description": "Creates variants for a matrix product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "mode", "variants" ], "properties": { "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "options" ], "properties": { "options": { "description": "...", "allOf": [ { "type": "array", "items": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } ] } } } }, "mode": { "type": "string", "enum": [ "1", "2", "3", "4" ], "description": "1: Use item numbers from number range of merchandise group.\n2: Add product numbers from options to the main number.\n3: Create product numbers from the main number and the appendix to product numbers. No additional separators.\n4: Product numbers of main products with suffix." }, "prefixSeparator": { "type": "string", "description": "Separator of prefix (applicable to mode 4 only)" }, "prefixDigits": { "type": "integer", "description": "Number of digits of prefix (applicable to mode 4 only)" }, "prefixNextNumber": { "type": "string", "pattern": "\\d+", "description": "Next number of prefix (applicable to mode 4 only)" }, "appendOptionsToDescription": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "createAdditionalDescription": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] } } }, "examples": { "Create 2 variants": { "value": { "mode": "1", "variants": [ { "options": [ { "id": "2" }, { "id": "5" } ] }, { "options": [ { "id": "3" }, { "id": "6" } ] } ], "prefixSeparator": "_", "prefixDigits": 3, "prefixNextNumber": "001", "appendOptionsToDescription": true, "createAdditionalDescription": true } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/actions/identify": { "get": { "tags": [ "Product" ], "operationId": "product.listProducts", "summary": "List products", "description": "Returns a collection with all products found with the indentifier.", "parameters": [ { "in": "query", "name": "identifier", "required": true, "schema": { "type": "string", "description": "Identifier of the product" } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "description": "Presentation of a Product identified by a particular ID type", "type": "object", "additionalProperties": false, "properties": { "product": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "category": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Sample Product" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "This is a high-quality product designed for everyday use." }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU-12345" }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://www.example.com/images/thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-12345" }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "A compact and efficient multi-tool for outdoor use." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "Handle with care." }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 10 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 5 }, "isMatrixProduct": { "type": "boolean", "description": "Shows if the product is a matrix product.", "example": true }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": false }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": false }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": true }, "ageRating": { "type": "string", "nullable": true, "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL.", "example": "12+" }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": true }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "description": "Shows if the just in time items of the parts list are visible on documents.", "example": false }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": true }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": false }, "isCustomProduct": { "type": "boolean", "description": "Shows if the product is a custom product.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": true }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Product is discontinued." }, "markAsSoldOut": { "type": "boolean", "description": "Shows if the product is sold out.", "example": true }, "markAsInactive": { "type": "boolean", "description": "Shows if the product is inactive.", "example": false }, "isDeleted": { "type": "boolean", "description": "Shows if the product is deleted.", "example": false }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "example": "kilogram" } }, "example": { "name": "kilogram" }, "description": "Shows the name of the product unit." }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "manufacturer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer." }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer." }, "url": { "type": "string", "nullable": true, "description": "URI of the manufacturer." } }, "example": { "name": "Beverage Manufacturer", "number": "BM#1", "url": "https://example.com" } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": false }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Shows the sales tax of the product.", "example": "standard" }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook.", "example": "19.99" }, "isRemainingQuantity": { "type": "boolean", "description": "Shows if only the remaining quantity of the product is left.", "example": true }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "04" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": false }, "stockStats": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "purchasedCount": { "type": "string", "format": "float", "nullable": true }, "totalCount": { "type": "string", "format": "float", "nullable": true }, "availableCount": { "type": "string", "format": "float", "nullable": true }, "inProductionCount": { "type": "string", "format": "float", "nullable": true } }, "example": { "purchasedCount": "100.5", "totalCount": "500.75", "availableCount": "300.25", "inProductionCount": "50.0" } }, "purchasePriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "purchasePriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "manufacturerName": { "type": "string", "nullable": true, "description": "Name of the manufacturer.", "example": "Test Corp" }, "manufacturerNumber": { "type": "string", "nullable": true, "description": "Product number at the manufacturer.", "example": "MN-98765" }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook." } }, "example": { "isDiscountProduct": true, "discountPercentage": 15.5 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "mainVariant": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a main variant of this product", "nullable": true, "example": { "id": "variant-12345" } }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "defaultStorageLocation": { "description": "Default storage location of the product.", "type": "object", "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "designation": { "type": "string", "description": "Name of the storage location" }, "warehouse": { "type": "object", "description": "Warehouse of the storage location", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "designation": { "type": "string" } }, "example": { "id": "1", "designation": "Warehouse 1" } } }, "example": { "id": "1", "designation": "Shelf 1", "warehouse": { "id": "1", "designation": "Warehouse 1" } } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2024-09-19T12:34:56Z" } }, "example": { "id": "1", "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "project": { "id": "1", "name": "Project1" }, "category": null, "standardSupplier": null, "name": "Shirt", "description": "This is a shirt.", "ean": "123456789", "stockCount": 0, "number": "133456", "thumbnailUrl": "http://localhost/index.php?module=artikel&action=thumbnail&id=1&bildvorschau=16_100_100", "thumbnailId": "16", "customsTariffNumber": "39JOE85W", "countryOfOrigin": null, "tags": [], "shortDescription": null, "internalComment": "", "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "isMatrixProduct": false, "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "allowPurchaseFromAllSuppliers": false, "isStockTakingDisabled": false, "ageRating": null, "hasBillOfMaterials": false, "isProductionProduct": false, "isExternallyProduced": false, "isCustomProduct": false, "isAssembledJustInTime": false, "hidePriceOnDocuments": false, "hideJustInTimeItemsOnDocuments": false, "markAsSoldOut": false, "markAsInactive": false, "isDeleted": false, "isDisabled": false, "disabledReason": null, "unit": { "name": "" }, "measurements": { "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" }, "length": { "value": 0, "unit": "cm" }, "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" } }, "manufacturer": { "name": "Manufacturer A", "number": "MAN-123456", "url": null }, "isStockItem": false, "salesTax": "standard", "shopPriceDisplay": "5.20", "isRemainingQuantity": false, "regionOfOrigin": "", "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "stockTaking": { "hasStockTakingValue": false, "stockTakingValue": 0 }, "calculatedPurchasePrice": { "hasCalculatedPurchasePrice": false, "price": { "amount": "0.0000", "currency": "EUR" } }, "options": [], "selectedOptions": [], "variants": [], "freeFields": [ { "id": "2", "name": "ff_2", "value": "ff2" }, { "id": "29", "name": "ff_29", "value": "ff29" }, { "id": "35", "name": null, "value": "ff35" } ], "defaultStorageLocation": { "id": "1", "designation": "Shelf 1", "warehouse": { "id": "1", "designation": "Warehouse 1" } }, "updatedAt": "2024-09-19T12:34:56Z", "isVariant": false, "variantOf": null, "mainVariant": null } }, "identifiedBy": { "description": "Represents the type of ID used to identify the product", "type": "string", "enum": [ "ean", "manufacturerNumber", "productNumber", "foreignNumber" ], "example": "ean" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists information from all products": { "value": { "data": [ { "product": { "id": "1", "uuid": "018a2690-647a-7a8b-b100-cfc11ab7d4e8", "name": "Screw M10x20", "description": "", "shortDescription": null, "number": "700001", "project": { "id": "1", "name": "Standard project" }, "category": { "id": "2", "name": "Service" }, "standardSupplier": { "id": "7" }, "stockCount": 22, "stockStats": { "purchasedCount": null, "totalCount": "22.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "shopPriceDisplay": "0.00", "ean": "", "manufacturerName": "", "manufacturerNumber": "", "customsTariffNumber": "", "isVariant": false, "variantOf": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "unit": { "name": "abc" }, "updatedAt": "2024-04-15T13:10:58+02:00" }, "identifiedBy": "productNumber" }, { "product": { "id": "2", "uuid": "018a2690-647b-7970-97c8-e02df3a2ae1f", "name": "hex nut M10", "description": "", "shortDescription": null, "number": "700002", "project": { "id": "1", "name": "Standard project" }, "category": null, "standardSupplier": { "id": "7" }, "stockCount": 93, "stockStats": { "purchasedCount": null, "totalCount": "93.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "shopPriceDisplay": "0.00", "ean": "", "manufacturerName": "", "manufacturerNumber": "", "customsTariffNumber": "", "isVariant": false, "variantOf": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "unit": { "name": "" }, "updatedAt": "2024-03-27T15:13:25+01:00" }, "identifiedBy": "foreignNumber" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "merchandiseGroup": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Example Product Name" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU-12345" }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This product is designed for everyday use and offers high durability." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "This product is on hold due to quality checks." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "Compact and lightweight, perfect for travel." }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://example.com/images/product-thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-12345" }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "purchasePriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "purchasePriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "978-3-16-148410-0" }, "manufacturer": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "nullable": true, "description": "Name of the manufacturer." }, "number": { "type": "string", "nullable": true, "description": "Product number at the manufacturer." }, "link": { "type": "string", "nullable": true, "description": "URI of the manufacturer." } }, "example": { "name": "Test Corp", "number": "AC12345", "link": "https://www.testcorp.com" } }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": false }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook." }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook." } }, "example": { "isDiscountProduct": false, "discountPercentage": 15.5 } }, "stockStats": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "purchasedCount": { "type": "string", "format": "float", "nullable": true }, "totalCount": { "type": "string", "format": "float", "nullable": true }, "availableCount": { "type": "string", "format": "float", "nullable": true }, "inProductionCount": { "type": "string", "format": "float", "nullable": true } }, "example": { "purchasedCount": "10.0", "totalCount": "50.0", "availableCount": "30.0", "inProductionCount": "10.0" } }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 5 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 10 }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": true }, "isCustomProduct": { "type": "boolean", "description": "Shows if the product is a custom product.", "example": false }, "isDeleted": { "type": "boolean", "description": "Shows if the product is deleted.", "example": false }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": true }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": false }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": true }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": false }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "ageRating": { "type": "string", "nullable": true, "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL.", "example": "12+" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } }, "description": "Shows the name of the product unit.", "example": { "name": "kilogram" } }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": true }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "description": "Shows if the just in time items of the parts list are visible on documents.", "example": false }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": true }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Out of stock" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Shows the sales tax of the product.", "example": "reduced" }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "04" }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "isMatrixProduct": { "type": "boolean", "description": "Shows if the product is a matrix product.", "example": false }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 150.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "salesChannel": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "description": { "type": "string", "example": "This is a product description." }, "meta": { "type": "object", "additionalProperties": false, "properties": { "title": { "type": "string", "example": "Product Title" }, "description": { "type": "string", "example": "Detailed product description." }, "keywords": { "type": "string", "example": "keyword1, keyword2, keyword3" } } }, "isStockNumberSyncActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isSoldOut": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isRemainingQuantity": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedRetailPrice": { "type": "string", "format": "float", "nullable": true, "description": "Was earlier called shopPriceDisplay. Only used by some online shops. For more information have a look into our handbook.", "example": "99.99" }, "isVisible": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedStockQuantity": { "type": "string", "description": "Shows the suggested stock quantity for all sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Shows the delivery time for all sales channels.", "example": "1 week" }, "createNewProductDuringImport": { "type": "boolean", "description": "Shows if a new product is generated during the sales order import from all sales channels.", "example": true }, "channels": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "salesChannel": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "isActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "useIndividualSalesChannelSettings": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isStockNumberSyncActive": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "isRemainingQuantity": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "suggestedRetailPrice": { "type": "string", "description": "Was earlier called shopPriceDisplay. Only used by some online shops. For more information have a look into our handbook." }, "suggestedStockQuantity": { "type": "string", "description": "Sets the suggested stock quantity for the sales channel.", "example": "100" }, "deliveryTime": { "type": "string", "description": "Shows the delivery time.", "example": "1 week" }, "createNewProductDuringImport": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] } } } } }, "example": { "description": "This is a product description.", "meta": { "title": "Product Title", "description": "Detailed product description.", "keywords": "keyword1, keyword2, keyword3" }, "isStockNumberSyncActive": true, "isSoldOut": false, "isRemainingQuantity": true, "suggestedRetailPrice": "99.99", "isVisible": true } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "mainVariant": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a main variant of this product", "nullable": true, "example": { "id": "variant-12345" } }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2024-09-23T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists information from all products": { "value": { "data": [ { "id": "1", "uuid": "018a2690-647a-7a8b-b100-cfc11ab7d4e8", "name": "Screw M10x20", "description": "", "shortDescription": null, "number": "700001", "project": { "id": "1", "name": "Standard project" }, "merchandiseGroup": { "id": "2", "name": "Service" }, "categories": [ { "id": "1" } ], "standardSupplier": { "id": "7" }, "stockCount": 22, "stockStats": { "purchasedCount": null, "totalCount": "22.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "ean": "", "manufacturer": { "name": "", "number": "", "link": "" }, "customsTariffNumber": "", "isMatrixProduct": true, "options": [], "selectedOptions": [], "variants": [], "isVariant": false, "variantOf": null, "mainVariant": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "isDeleted": false, "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "isCustomProduct": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "salesChannel": { "description": "", "meta": { "title": "", "description": "", "keywords": "" }, "isStockNumberSyncActive": false, "isRemainingQuantity": false, "isSoldOut": false, "isVisible": true, "suggestedRetailPrice": "0.00" }, "unit": { "name": "abc" }, "updatedAt": "2024-04-15T13:10:58+02:00" }, { "id": "2", "uuid": "018a2690-647b-7970-97c8-e02df3a2ae1f", "name": "hex nut M10", "description": "", "shortDescription": null, "number": "700002", "project": { "id": "1", "name": "Standard project" }, "merchandiseGroup": null, "categories": [ { "id": "1" } ], "standardSupplier": { "id": "7" }, "stockCount": 93, "stockStats": { "purchasedCount": null, "totalCount": "93.0000", "availableCount": null, "inProductionCount": null }, "purchasePriceNet": null, "purchasePriceGross": null, "salesPriceNet": null, "salesPriceGross": null, "ean": "", "manufacturer": { "name": "", "number": "", "link": "" }, "customsTariffNumber": "", "isMatrixProduct": false, "options": [], "selectedOptions": [], "variants": [], "isVariant": false, "variantOf": null, "mainVariant": null, "thumbnailUrl": null, "thumbnailId": null, "tags": [], "freeFields": [], "countryOfOrigin": "DE", "regionOfOrigin": "", "internalComment": "", "isDeleted": false, "measurements": { "weight": { "value": 0, "unit": "kg" }, "netWeight": { "value": 0, "unit": "kg" }, "length": { "value": 0, "unit": "cm" }, "width": { "value": 0, "unit": "cm" }, "height": { "value": 0, "unit": "cm" } }, "minimumOrderQuantity": 0, "minimumStorageQuantity": 0, "salesTax": "reduced", "hasBatches": false, "serialNumbersMode": "disabled", "hasBestBeforeDate": false, "hasBillOfMaterials": false, "isAssembledJustInTime": false, "isProductionProduct": false, "isExternallyProduced": false, "allowPurchaseFromAllSuppliers": false, "isDisabled": false, "disabledReason": "", "hidePriceOnDocuments": false, "ageRating": null, "isStockItem": true, "isStockTakingDisabled": false, "isCustomProduct": false, "hideJustInTimeItemsOnDocuments": false, "isShippingCostsProduct": false, "discount": { "isDiscountProduct": false, "discountPercentage": 0 }, "salesChannel": { "description": "", "meta": { "title": "", "description": "", "keywords": "" }, "isStockNumberSyncActive": false, "isRemainingQuantity": false, "isSoldOut": false, "isVisible": true, "suggestedRetailPrice": "0.00" }, "unit": { "name": "" }, "updatedAt": "2024-03-27T15:13:25+01:00" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } }, "text/csv": { "schema": { "type": "string" } }, "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "description": "An object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "category": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "standardSupplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "nullable": true, "x-example-ignore": true, "description": "Nullable resource identifier" } }, "description": "Reference to a standard supplier for this product", "nullable": true, "example": { "id": "12345" } }, "name": { "type": "string", "description": "Name of the product.", "example": "Product one" }, "stockCount": { "x-description-missing": true, "type": "number", "example": 150 }, "number": { "type": "string", "description": "Number / SKU of the product.", "example": "SKU-0099" }, "description": { "type": "string", "nullable": true, "description": "Description of the product.", "example": "This is a high-quality product designed for everyday use." }, "internalComment": { "type": "string", "description": "Text only for internal information.", "example": "This product is seasonal and only available during the summer." }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "This is a high-quality product designed for everyday use." }, "thumbnailUrl": { "type": "string", "nullable": true, "description": "URL of the product's thumbnail.", "example": "https://example.com/images/product-thumbnail.jpg" }, "thumbnailId": { "type": "string", "nullable": true, "description": "ID of the product's thumbnail.", "example": "thumb-12345" }, "minimumOrderQuantity": { "type": "number", "description": "Numerical minimum order quantity of the product.", "example": 10 }, "minimumStorageQuantity": { "type": "number", "description": "Numerical minimum storage quantity of the product.", "example": 5 }, "allowPurchaseFromAllSuppliers": { "type": "boolean", "description": "Shows if the product can be purchased from all suppliers.", "example": true }, "hasBatches": { "type": "boolean", "description": "Shows if the product has batches.", "example": false }, "serialNumbersMode": { "type": "string", "description": "Shows one of the 4 different modes if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.", "example": "mandatory" }, "hasBestBeforeDate": { "type": "boolean", "description": "Shows if the product has a best before date.", "example": true }, "hasBillOfMaterials": { "type": "boolean", "description": "Shows if the product has a bill of materials.", "example": false }, "isAssembledJustInTime": { "type": "boolean", "description": "Shows if the product is assembled just in time.", "example": true }, "isProductionProduct": { "type": "boolean", "description": "Shows if the product is made in production.", "example": true }, "isExternallyProduced": { "type": "boolean", "description": "Shows if the product is externally produced.", "example": true }, "hidePriceOnDocuments": { "type": "boolean", "description": "Shows if the price is hidden on documents.", "example": false }, "ageRating": { "type": "string", "nullable": true, "description": "Shows if the product has an age rating. Currently only used for the shipping service provider DHL.", "example": "12+" }, "countryOfOrigin": { "type": "string", "pattern": "[A-Z]{2}", "nullable": true, "description": "Two-digit ISO country code for country of origin of the product.", "example": "DE" }, "unit": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } }, "description": "Shows the name of the product unit.", "example": { "name": "kilogram" } }, "textsAndDescriptions": { "type": "object", "description": "Contains localized text and descriptions for the product.", "properties": { "inCatalog": { "type": "boolean", "description": "Indicates if the product is included in the catalog.", "example": true }, "primaryLanguage": { "type": "object", "description": "Texts and descriptions in the primary language.", "properties": { "name": { "type": "string", "description": "Product name.", "example": "Product One" }, "shortDescription": { "type": "string", "nullable": true, "description": "Short description of the product.", "example": "Compact and lightweight product." }, "description": { "type": "string", "description": "Detailed product description.", "nullable": true, "example": "This is a high-quality product." }, "shopDescription": { "type": "string", "description": "Shop-specific description.", "example": "Perfect for daily use." }, "metaTitle": { "type": "string", "description": "SEO meta title.", "example": "Best Product for Everyday Use" }, "metaDescription": { "type": "string", "description": "SEO meta description.", "example": "Buy the best quality product online." }, "metaKeywords": { "type": "string", "description": "SEO keywords.", "example": "product, best quality, affordable" }, "catalogName": { "type": "string", "description": "Name in the catalog.", "example": "Premium Collection" }, "catalogText": { "type": "string", "description": "Text in the catalog.", "example": "Exclusive product from our latest collection." } } }, "english": { "type": "object", "description": "Texts and descriptions in English.", "properties": { "name": { "type": "string", "description": "Product name in English.", "example": "Product One" }, "shortDescription": { "type": "string", "description": "Short description in English.", "example": "Compact and lightweight product." }, "description": { "type": "string", "description": "Detailed product description.", "example": "High-quality product for all needs." }, "shopDescription": { "type": "string", "description": "Shop-specific description.", "example": "Great for everyday use." }, "metaTitle": { "type": "string", "description": "SEO meta title.", "example": "Top-Rated Product Online" }, "metaDescription": { "type": "string", "description": "SEO meta description.", "example": "Shop the best product at the best price." }, "metaKeywords": { "type": "string", "description": "SEO keywords.", "example": "best product, top quality, shop online" }, "catalogName": { "type": "string", "description": "Catalog name in English.", "example": "Exclusive Range" }, "catalogText": { "type": "string", "description": "Catalog text in English.", "example": "Premium product from our latest lineup." } } } }, "example": { "inCatalog": true, "primaryLanguage": { "name": "Produkt eins", "shortDescription": "Kurze Beschreibung des Produkts.", "description": "Dies ist eine detaillierte Produktbeschreibung.", "shopDescription": "Verkaufsbeschreibung für den Shop.", "metaTitle": "Produkt SEO-Titel", "metaDescription": "Meta-Beschreibung für das Produkt.", "metaKeywords": "Produkt, SEO, Keywords", "catalogName": "Produktkatalogname", "catalogText": "Detaillierter Katalogtext für das Produkt." }, "english": { "name": "Product One", "shortDescription": "Short description of the product.", "description": "This is a detailed product description.", "shopDescription": "Shop description for the product.", "metaTitle": "Product SEO Title", "metaDescription": "Meta description for the product.", "metaKeywords": "product, SEO, keywords", "catalogName": "Product Catalog Name", "catalogText": "Detailed catalog text for the product." } } }, "measurements": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "width": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "height": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "length": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float" }, "unit": { "type": "string", "enum": [ "cm" ], "description": "Currently only cm as unit allowed." } }, "example": { "value": 20, "unit": "cm" } }, "weight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } }, "netWeight": { "x-description-missing": true, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "number", "format": "float", "example": 10.5 }, "unit": { "type": "string", "enum": [ "kg" ], "description": "Currently only kg as unit allowed.", "example": "kg" } }, "example": { "value": 20, "unit": "kg" } } }, "example": { "width": { "value": 20, "unit": "cm" }, "height": { "value": 10, "unit": "cm" }, "length": { "value": 30, "unit": "cm" }, "weight": { "value": 2, "unit": "kg" }, "netWeight": { "value": 1.5, "unit": "kg" } } }, "isStockItem": { "type": "boolean", "description": "Shows if the product is a stock item.", "example": true }, "isStockTakingDisabled": { "type": "boolean", "description": "Shows if the product is used for stock taking.", "example": false }, "hideJustInTimeItemsOnDocuments": { "type": "boolean", "description": "Shows if the just in time items of the parts list are visible on documents.", "example": true }, "isDisabled": { "type": "boolean", "description": "Shows if the product is locked.", "example": false }, "disabledReason": { "type": "string", "nullable": true, "description": "Shows the reason why the product is locked when clicking into the product.", "example": "Out of stock" }, "salesTax": { "type": "string", "enum": [ "standard", "reduced", "free" ], "description": "Selection of three possible values for the sales tax of the product.", "example": "standard" }, "shopPriceDisplay": { "type": "string", "format": "float", "nullable": true, "description": "Only used by some online shops. For more information have a look into our handbook.", "example": "19.99" }, "ean": { "type": "string", "nullable": true, "description": "EAN of the product.", "example": "1234567890123" }, "manufacturerName": { "type": "string", "nullable": true, "description": "Name of the manufacturer.", "example": "Test Corp" }, "manufacturerNumber": { "type": "string", "nullable": true, "description": "Product number at the manufacturer.", "example": "MN-98765" }, "customsTariffNumber": { "type": "string", "nullable": true, "description": "Customs tariff number of the product.", "example": "1234.56.78" }, "regionOfOrigin": { "type": "string", "description": "Region where the product originates from.", "example": "04" }, "isShippingCostsProduct": { "type": "boolean", "description": "Determines if a product is used as a shipping costs product. For more information have a look into our handbook.", "example": true }, "discount": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "isDiscountProduct": { "type": "boolean", "description": "Determines if a product is used as a discount. For more information have a look into our handbook.", "example": false }, "discountPercentage": { "type": "number", "format": "float", "description": "Shows the discount value if the product is a discount. For more information have a look into our handbook.", "example": 15.5 } }, "example": { "isDiscountProduct": false, "discountPercentage": 15.5 } }, "stockTaking": { "type": "object", "additionalProperties": false, "description": "Contains settings for stock taking.", "properties": { "hasStockTakingValue": { "type": "boolean", "description": "Shows if the stock taking value should be used instead of the purchase price for stock taking." }, "stockTakingValue": { "type": "number", "format": "float", "description": "Shows the stock taking value for stock taking." } }, "example": { "hasStockTakingValue": true, "stockTakingValue": 100.75 } }, "calculatedPurchasePrice": { "type": "object", "additionalProperties": false, "description": "Contains settings for the calculated purchase price.", "properties": { "hasCalculatedPurchasePrice": { "type": "boolean", "description": "Shows if the calculatedPurchasePrice should be used." }, "price": { "description": "Money object with amount and currency. If no currency is set, EUR is returned.", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } }, "example": { "hasCalculatedPurchasePrice": false, "price": { "amount": "13.37", "currency": "EUR" } } }, "purchasePriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "purchasePriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceNet": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "salesPriceGross": { "description": "Optional Money object with amount and currency", "type": "object", "nullable": true, "additionalProperties": false, "example": { "amount": "13.37", "currency": "EUR" }, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "stockStats": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "purchasedCount": { "type": "string", "format": "float", "nullable": true }, "totalCount": { "type": "string", "format": "float", "nullable": true }, "availableCount": { "type": "string", "format": "float", "nullable": true }, "inProductionCount": { "type": "string", "format": "float", "nullable": true } }, "example": { "purchasedCount": "100.5", "totalCount": "500.75", "availableCount": "300.25", "inProductionCount": "50.0" } }, "freeFields": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true }, "value": { "type": "string" } } } }, "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+" }, "key": { "x-description-missing": true, "type": "string" }, "name": { "x-description-missing": true, "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "selectedOptions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "sort": { "type": "integer" } } } } } } }, "variants": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "options": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } }, "isVariant": { "description": "Shows if the product is a variant from another product.", "type": "boolean", "nullable": true, "example": true }, "variantOf": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a parent product", "nullable": true, "example": { "id": "parent-product-98765" } }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp of when the product was updated.", "example": "2023-09-23T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "example": { "data": [ { "id": "2", "name": "Coca Cola" }, { "id": "4", "name": "beer" }, { "id": "5", "name": "mate" } ], "extra": { "totalCount": 53841, "page": { "number": 1, "size": 3 } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsCategories": { "get": { "tags": [ "Product Category" ], "operationId": "productCategory.list", "summary": "Lists available products categories", "description": "Lists all available products categories.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the product category", "example": "Clothing" }, "parent": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } } } } } } }, "examples": { "Lists all product categories": { "value": { "data": [ { "id": "5", "name": "Candy", "parent": { "id": "3", "name": "Food" } }, { "id": "3", "name": "Food", "parent": null }, { "id": "4", "name": "Gardening", "parent": null }, { "id": "6", "name": "Plants", "parent": { "id": "4", "name": "Gardening" } }, { "id": "8", "name": "Repair", "parent": { "id": "2", "name": "Services" } }, { "id": "2", "name": "Services", "parent": null }, { "id": "7", "name": "Tools", "parent": { "id": "4", "name": "Gardening" } } ] } } } }, "application/vnd.xentral.hierarchy+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the product category", "example": "Clothing" }, "parent": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "children": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "parent": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "children": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "parent": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "children": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "parent": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "children": { "type": "array", "items": { "type": "object", "description": "Categories nested indefinitely." } } } } } } } } } } } } }, "description": "Nested categories." } } }, "examples": { "Lists all product categories in hierarchical order": { "value": { "data": [ { "id": "3", "name": "Food", "parent": null, "children": [ { "id": "5", "name": "Candy", "parent": { "id": "3", "name": "Food" }, "children": [] } ] }, { "id": "4", "name": "Gardening", "parent": null, "children": [ { "id": "6", "name": "Plants", "parent": { "id": "4", "name": "Gardening" }, "children": [] }, { "id": "7", "name": "Tools", "parent": { "id": "4", "name": "Gardening" }, "children": [] } ] }, { "id": "2", "name": "Services", "parent": null, "children": [ { "id": "8", "name": "Repair", "parent": { "id": "2", "name": "Services" }, "children": [] } ] } ] } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Product Category" ], "operationId": "productCategory.create", "summary": "Create new product category", "description": "Creates a new product category.", "parameters": [], "requestBody": { "description": "Product category create request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "parent": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "examples": { "create ProductCategory payload": { "value": { "name": "Computers", "parent": { "id": "1024" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsCategories/{id}": { "get": { "tags": [ "Product Category" ], "operationId": "productCategory.view", "summary": "View a single product category", "description": "Returns details of a single product category", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "example": { "id": "3", "name": "Clothing", "parent": null }, "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the product category", "example": "Clothing" }, "parent": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } } } } } }, "examples": { "Shows a single product category": { "value": { "data": { "id": "3", "name": "Food", "parent": null } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product Category" ], "operationId": "productCategory.update", "summary": "Update a single product category", "description": "Updates details of a single product category", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Product category update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "parent": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "examples": { "create ProductCategory payload": { "value": { "name": "Computers", "parent": { "id": "1024" } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product Category" ], "operationId": "productCategory.delete", "summary": "Delete a single product category", "description": "Deletes a single product", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsFreeFields": { "get": { "tags": [ "Product Free Field" ], "operationId": "productFreeField.list", "summary": "list of information about product free fields from company settings", "description": "Returns a list of information about product free fields from the company settings", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "name" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "x-description-missing": true, "example": { "id": "1", "name": "Net Weight" }, "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true, "description": "Name of the product free field", "example": "Net Weight" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all product free fields": { "value": { "data": [ { "id": "1", "name": "Other free field name 1" }, { "id": "2", "name": "Other free field name 2" }, { "id": "3", "name": "Other free field name 3" }, { "id": "4", "name": "Other free field name 4" }, { "id": "5", "name": "Other free field name 5" }, { "id": "6", "name": "Other free field name 6" }, { "id": "7", "name": "Other free field name 7" }, { "id": "8", "name": "Other free field name 8" }, { "id": "9", "name": "Other free field name 9" }, { "id": "10", "name": "Other free field name 10" } ], "extra": { "totalCount": 40, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product Free Field" ], "operationId": "productFreeField.updateMultiple", "summary": "update information of multiple product free fields from company settings", "description": "Updates details of multiple product free fields from company settings", "requestBody": { "description": "Product free field update multiple request payload", "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the product free field", "example": "Net Weight" } } } }, "examples": { "Update multiple product free fields": { "value": [ { "id": "5", "name": "My new product free field name" }, { "id": "8", "name": "My other new product free field name" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsFreeFields/{id}": { "get": { "tags": [ "Product Free Field" ], "operationId": "productFreeField.view", "summary": "view information about a single product free field from company settings", "description": "Returns details of a single product free field from company settings", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "example": { "id": "1", "name": "Net Weight" }, "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true, "description": "Name of the product free field", "example": "Net Weight" } } } } }, "examples": { "Shows a single product free field": { "value": { "data": { "id": "1", "name": "Other free field name 1" } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product Free Field" ], "operationId": "productFreeField.update", "summary": "update information about a single product free field from company settings", "description": "Updates details of a single product free field from company settings", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Product free field update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the product free field" } } }, "examples": { "Update product free field": { "value": { "name": "My new product free field name" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productMedia": { "post": { "tags": [ "Product Media" ], "operationId": "productMedia.create", "summary": "Create product media", "description": "Creates new product media", "requestBody": { "description": "Product media create request payload", "content": { "application/json": { "schema": { "type": "object", "properties": { "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "title": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "keyword": { "type": "string", "enum": [ "defaultImage", "printImage", "labelImage", "otherImage" ] }, "fileName": { "type": "string" }, "fileContent": { "type": "string", "description": "A base64 encoded image. Supported image formats JPEG, PNG", "format": "byte" } } }, "examples": { "Create product media": { "value": { "product": { "id": "52" }, "title": "Product image", "description": "Product image", "keyword": "defaultImage", "fileName": "sample.png", "fileContent": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product Media" ], "operationId": "productMedia.updateMultiple", "summary": "Update multiple product media", "description": "Updates multiple product media", "requestBody": { "description": "Product media update multiple request payload", "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "title": { "type": "string", "nullable": true, "example": "Vitra Eames Plastic Chair", "description": "The title of the media" }, "description": { "type": "string", "nullable": true, "example": "Front picture of the Vitra Eames Plastic Chair", "description": "The description of the media" }, "keyword": { "x-description-missing": true, "type": "string", "enum": [ "defaultImage", "printImage", "labelImage", "otherImage" ], "example": "defaultImage" }, "sort": { "x-description-missing": true, "type": "integer", "nullable": true, "example": 1 } } } }, "examples": { "Update multiple product media": { "value": [ { "id": "52", "title": "Product image", "description": "Product image", "keyword": "defaultImage", "sort": 1 }, { "id": "53", "title": "Second product image", "description": "Product image", "sort": 2 } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product Media" ], "operationId": "productMedia.deleteMultiple", "summary": "Delete multiple product media", "description": "Deletes a multiple product media", "requestBody": { "description": "Product media delete multiple request payload", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "examples": { "Delete multiple product media": { "value": [ { "id": "52" }, { "id": "53" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Product Media" ], "operationId": "productMedia.list", "summary": "List product media", "description": "Returns list of a product media", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "product" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "title": { "type": "string", "nullable": true, "description": "The title of the media", "example": "Vitra Eames Plastic Chair" }, "description": { "description": "The description of the media", "type": "string", "nullable": true, "example": "Front picture of the Vitra Eames Plastic Chair" }, "keyword": { "x-description-missing": true, "type": "string", "enum": [ "defaultImage", "printImage", "defaultGroupImage", "labelImage", "otherImage", "dataSheet", "certificateAttachment" ], "example": "defaultImage" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "currentVersion": { "x-description-missing": true, "example": { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "x-description-missing": true, "type": "integer", "example": 3 }, "url": { "x-description-missing": true, "type": "string", "example": "/api/productMedia/5/versions/3" }, "remark": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Initial Version" }, "filename": { "x-description-missing": true, "type": "string", "example": "test.png" }, "size": { "description": "The size of the image in bytes", "type": "integer", "example": 12345 }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-02-16T14:32:41+02:00", "description": "The date and time when the version was last updated." } } }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-02-16T14:32:41+02:00", "description": "The date and time when the media was last updated." } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all product media from all products": { "value": { "data": [ { "id": "5", "product": { "id": "1" }, "title": "", "description": "", "keyword": "defaultImage", "sort": 1, "currentVersion": { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "updatedAt": "2024-02-16T14:32:41+02:00" }, { "id": "8", "product": { "id": "2" }, "title": "", "description": "", "keyword": "defaultGroupImage", "sort": 1, "currentVersion": { "id": "20", "version": 2, "url": "/api/productMedia/8/versions/2", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "updatedAt": "2024-02-16T14:32:41+02:00" } ], "extra": { "page": { "number": 1, "size": 10 }, "totalCount": 2 } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productMedia/{id}": { "get": { "tags": [ "Product Media" ], "operationId": "productMedia.view", "summary": "View product media", "description": "Returns details of a single product media", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "example": { "id": "5", "product": { "id": "1" }, "title": "Vitra Eames Plastic Chair", "description": "Front picture of the Vitra Eames Plastic Chair", "keyword": "defaultImage", "sort": 1, "versions": [ { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" } ], "currentVersion": { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "updatedAt": "2024-02-16T14:32:41+02:00" }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Vitra Eames Plastic Chair" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Front picture of the Vitra Eames Plastic Chair" }, "keyword": { "x-description-missing": true, "type": "string", "enum": [ "defaultImage", "printImage", "defaultGroupImage", "labelImage", "otherImage", "dataSheet", "certificateAttachment" ], "example": "defaultImage" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "versions": { "type": "array", "items": { "x-description-missing": true, "example": { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "x-description-missing": true, "type": "integer", "example": 3 }, "url": { "x-description-missing": true, "type": "string", "example": "/api/productMedia/5/versions/3" }, "remark": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Initial Version" }, "filename": { "x-description-missing": true, "type": "string", "example": "test.png" }, "size": { "description": "The size of the image in bytes", "type": "integer", "example": 12345 }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-02-16T14:32:41+02:00", "description": "The date and time when the version was last updated." } } } }, "currentVersion": { "x-description-missing": true, "example": { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "x-description-missing": true, "type": "integer", "example": 3 }, "url": { "x-description-missing": true, "type": "string", "example": "/api/productMedia/5/versions/3" }, "remark": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Initial Version" }, "filename": { "x-description-missing": true, "type": "string", "example": "test.png" }, "size": { "description": "The size of the image in bytes", "type": "integer", "example": 12345 }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-02-16T14:32:41+02:00", "description": "The date and time when the version was last updated." } } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2024-02-16T14:32:41+02:00" } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Shows detailed information for a given product media": { "value": { "data": { "id": "6", "product": { "id": "1" }, "title": "", "description": "", "keyword": "printImage", "sort": 2, "versions": [ { "id": "15", "version": 1, "url": "/api/productMedia/6/versions/1", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, { "id": "16", "version": 2, "url": "/api/productMedia/6/versions/2", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" } ], "currentVersion": { "id": "16", "version": 2, "url": "/api/productMedia/6/versions/2", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "updatedAt": "2024-02-16T14:32:41+02:00" } } } } }, "image/*": { "schema": { "type": "string", "format": "binary" } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productMedia/{id}/versions": { "post": { "tags": [ "Product Media" ], "operationId": "productMedia.createVersion", "summary": "Create product media version", "description": "Creates new product media version", "requestBody": { "description": "Product media version create request payload", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "remark": { "type": "string", "nullable": true }, "fileName": { "type": "string" }, "fileContent": { "type": "string", "description": "A base64 encoded image. Supported image formats JPEG, PNG", "format": "byte" } } }, "examples": { "Create product media version": { "value": { "name": "Version 1", "remark": "Version 1", "fileName": "sample.png", "fileContent": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=" } } } } } }, "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productMedia/{id}/versions/{version}": { "get": { "tags": [ "Product Media" ], "operationId": "productMedia.viewVersion", "summary": "View product media version", "description": "Returns content or details of a single product media", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "version", "required": true, "description": "The resource's version.", "schema": { "type": "string", "pattern": "\\d+" } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "example": { "id": "17", "version": 3, "url": "/api/productMedia/5/versions/3", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "x-description-missing": true, "type": "integer", "example": 3 }, "url": { "x-description-missing": true, "type": "string", "example": "/api/productMedia/5/versions/3" }, "remark": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Initial Version" }, "filename": { "x-description-missing": true, "type": "string", "example": "test.png" }, "size": { "description": "The size of the image in bytes", "type": "integer", "example": 12345 }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-02-16T14:32:41+02:00", "description": "The date and time when the version was last updated." } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Shows information about a single product media version": { "value": { "data": { "id": "14", "version": 2, "url": "/api/productMedia/5/versions/2", "remark": "Initial Version", "filename": "test.png", "size": 12345, "updatedAt": "2024-02-16T14:32:41+02:00" } } } } }, "image/*": { "schema": { "type": "string", "format": "binary" } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product Media" ], "operationId": "productMedia.updateVersion", "summary": "Updates product media version", "description": "Updates product media", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "version", "required": true, "description": "The resource's version.", "schema": { "type": "string", "pattern": "\\d+" } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "forceCurrentVersion": { "oneOf": [ { "type": "boolean", "nullable": true }, { "type": "number", "nullable": true, "enum": [ 0, 1 ] }, { "type": "string", "nullable": true, "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] } } }, "examples": { "Update product media version": { "value": { "forceCurrentVersion": true } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product Media" ], "operationId": "productMedia.deleteVersion", "summary": "Delete product media version", "description": "Deletes a single product media version", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "version", "required": true, "description": "The resource's version.", "schema": { "type": "string", "pattern": "\\d+" } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsProperties": { "post": { "tags": [ "Product Property" ], "operationId": "productProperty.create", "summary": "Create products properties", "description": "Creates new products properties.", "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the product property.", "example": "Color" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } } }, "examples": { "Create product property": { "value": [ { "name": "Color", "project": { "id": "1" } } ] } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Product Property" ], "operationId": "productProperty.list", "summary": "List products properties", "description": "Lists available products properties.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of the product property.", "example": "Color" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } } } } }, "examples": { "Lists all product properties": { "value": { "data": [ { "id": "1", "name": "Color", "project": { "id": "0" } } ] } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product Property" ], "operationId": "productProperty.updateMultiple", "summary": "Update multiple products properties", "description": "Updates multiple products properties.", "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "minLength": 1, "description": "Name of the product property.", "example": "Color" } } } }, "examples": { "Update multiple product properties": { "value": [ { "id": "4", "name": "Color" }, { "id": "7", "name": "Size" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product Property" ], "operationId": "productProperty.deleteMultiple", "summary": "Delete multiple products properties", "description": "Deletes multiple products properties.", "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "examples": { "Delete multiple product properties": { "value": [ { "id": "4" }, { "id": "7" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsTags": { "get": { "tags": [ "Product Tag" ], "operationId": "productTag.list", "summary": "List products tags", "description": "Returns a collection with all products tags.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "name", "id" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "number", "description", "project", "purchasePriceNet", "purchasePriceGross", "salesPriceNet", "salesPriceGross", "ean", "manufacturerName", "manufacturerNumber", "customsTariffNumber" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all product tags": { "value": { "data": [ { "id": "1", "name": "Done", "color": "339966" }, { "id": "5", "name": "Prio", "color": "ff00ff" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Product Tag" ], "operationId": "productTag.create", "summary": "Create new product tag", "description": "Creates a new product tag.", "parameters": [], "requestBody": { "description": "Product tag create request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "pattern": "^[a-z0-9_-]{3,24}$" }, "name": { "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } }, "examples": { "Create product tag": { "value": { "key": "new-name", "name": "New name", "color": "#ff0000" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsTags/{id}": { "patch": { "tags": [ "Product Tag" ], "operationId": "productTag.update", "summary": "Update a single product tag", "description": "Updates details of a single product tag", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Product tag update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } }, "examples": { "Update product tag": { "value": { "name": "New name", "color": "#ff0000" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsMerchandiseGroups": { "get": { "tags": [ "Product Merchandise Group" ], "operationId": "productMerchandiseGroup.list", "summary": "Lists available products merchandise groups", "description": "Lists all available products merchandise groups.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Shows the name of the merchandise group.", "example": "Merchandise" }, "project": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "lastUsedProductNumber": { "type": "string", "description": "Shows the last used product number used by the merchandise group.", "example": "1000" }, "useMainProductNumberRange": { "type": "boolean", "description": "Shows if the product number is taken from the main product number range or not.", "example": true }, "revenue": { "description": "How products in this merchandise group are contributing to revenues on your chart of accounts.", "example": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "intraCommunityEuTaxText": "VAT free intra-community supply", "euStandard": "0", "euReduced": "0", "export": "0", "exportTaxText": "VAT free export" }, "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string", "description": "Shows the domestic standard tax rate of the Merchandise Group.", "example": "19" }, "domesticReduced": { "type": "string", "description": "Shows the domestic reduced tax rate of the Merchandise Group.", "example": "7" }, "domesticFree": { "type": "string", "description": "Shows the domestic free (tax free) tax rate of the Merchandise Group.", "example": "0" }, "intraCommunityEu": { "type": "string", "description": "Shows the intra-community EU tax rate of the Merchandise Group.", "example": "21" }, "intraCommunityEuTaxText": { "type": "string", "description": "A description for the intra-community EU tax rate of the Merchandise Group.", "example": "Tax rate in the european union" }, "euStandard": { "type": "string", "description": "Shows the EU standard tax rate of the Merchandise Group.", "example": "19" }, "euReduced": { "type": "string", "description": "Shows the EU reduced tax rate of the Merchandise Group.", "example": "7" }, "export": { "type": "string", "description": "Shows the export tax rate of the Merchandise Group.", "example": "21" }, "exportTaxText": { "type": "string", "description": "A description for the export tax rate of the Merchandise Group.", "example": "Sales tax applied for export products" } } }, "expenses": { "description": "How products in this merchandise group are contributing to expenses on your chart of accounts.", "example": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "euStandard": "0", "euReduced": "0", "import": "0" }, "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string", "description": "Shows the domestic standard tax rate of the Merchandise Group.", "example": "19" }, "domesticReduced": { "type": "string", "description": "Shows the domestic reduced tax rate of the Merchandise Group.", "example": "7" }, "domesticFree": { "type": "string", "description": "Shows the domestic free (tax free) tax rate of the Merchandise Group.", "example": "0" }, "intraCommunityEu": { "type": "string", "description": "Shows the intra-community EU tax rate of the Merchandise Group.", "example": "21" }, "euStandard": { "type": "string", "description": "Shows the EU standard tax rate of the Merchandise Group.", "example": "19" }, "euReduced": { "type": "string", "description": "Shows the EU reduced tax rate of the Merchandise Group.", "example": "7" }, "import": { "type": "string", "description": "Shows the import tax rate of the Merchandise Group.", "example": "21" } } } } } } } }, "examples": { "Lists all product merchandise groups": { "value": { "data": [ { "id": "2", "name": "Dienstleistungen", "project": { "id": "1", "name": "Standard Projekt" }, "lastUsedProductNumber": "", "useMainProductNumberRange": true, "revenue": { "domesticStandard": "", "domesticReduced": "", "domesticFree": "", "intraCommunityEu": "", "intraCommunityEuTaxText": "", "euStandard": "", "euReduced": "", "export": "", "exportTaxText": "" }, "expenses": { "domesticStandard": "", "domesticReduced": "", "domesticFree": "", "intraCommunityEu": "", "euStandard": "", "euReduced": "", "import": "" } }, { "id": "5", "name": "Fremdleistung", "project": null, "lastUsedProductNumber": "F1100", "useMainProductNumberRange": false, "revenue": { "domesticStandard": "", "domesticReduced": "", "domesticFree": "", "intraCommunityEu": "", "intraCommunityEuTaxText": "", "euStandard": "", "euReduced": "", "export": "", "exportTaxText": "" }, "expenses": { "domesticStandard": "", "domesticReduced": "", "domesticFree": "", "intraCommunityEu": "", "euStandard": "", "euReduced": "", "import": "" } } ] } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Product Merchandise Group" ], "operationId": "productMerchandiseGroup.create", "summary": "Create new product merchandise group", "description": "Creates a new product merchandise group.", "parameters": [], "requestBody": { "description": "Product merchandise group create request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Sets the name of the merchandise group." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "lastUsedProductNumber": { "type": "string", "description": "Sets the last used product number by the merchandise group." }, "useMainProductNumberRange": { "type": "boolean", "description": "Determines if the product number should be taken from the main product number range or not." }, "revenue": { "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string" }, "domesticReduced": { "type": "string" }, "domesticFree": { "type": "string" }, "intraCommunityEu": { "type": "string" }, "intraCommunityEuTaxText": { "type": "string" }, "euStandard": { "type": "string" }, "euReduced": { "type": "string" }, "export": { "type": "string" }, "exportTaxText": { "type": "string" } } }, "expenses": { "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string" }, "domesticReduced": { "type": "string" }, "domesticFree": { "type": "string" }, "intraCommunityEu": { "type": "string" }, "euStandard": { "type": "string" }, "euReduced": { "type": "string" }, "import": { "type": "string" } } } } }, "examples": { "Create product merchandise group": { "value": { "name": "My Merchandise Group", "project": { "id": "1" }, "lastUsedProductNumber": "1000", "useMainProductNumberRange": true, "revenue": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "intraCommunityEuTaxText": "VAT free intra-community supply", "euStandard": "0", "euReduced": "0", "export": "0", "exportTaxText": "VAT free export" }, "expenses": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "euStandard": "0", "euReduced": "0", "import": "0" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productsMerchandiseGroups/{id}": { "get": { "tags": [ "Product Merchandise Group" ], "operationId": "productMerchandiseGroup.view", "summary": "View a single product merchandise group", "description": "Returns details of a single product merchandise group", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "example": { "id": "1", "name": "Handelsware (100000)", "project": null, "lastUsedProductNumber": "100000", "useMainProductNumberRange": false, "revenue": { "domesticStandard": "21", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "21", "intraCommunityEuTaxText": "Tax rate in the european union", "euStandard": "21", "euReduced": "7", "export": "21", "exportTaxText": "Sales tax applied for export products" }, "expenses": { "domesticStandard": "21", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "21", "euStandard": "21", "euReduced": "7", "import": "21" } }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Shows the name of the merchandise group.", "example": "Merchandise" }, "project": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "lastUsedProductNumber": { "type": "string", "description": "Shows the last used product number by the merchandise group.", "example": "1000" }, "useMainProductNumberRange": { "type": "boolean", "description": "Shows if the product number is taken from the main product number range or not.", "example": true }, "revenue": { "description": "How products in this merchandise group are contributing to revenues on your chart of accounts.", "example": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "intraCommunityEuTaxText": "VAT free intra-community supply", "euStandard": "0", "euReduced": "0", "export": "0", "exportTaxText": "VAT free export" }, "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string" }, "domesticReduced": { "type": "string" }, "domesticFree": { "type": "string" }, "intraCommunityEu": { "type": "string" }, "intraCommunityEuTaxText": { "type": "string" }, "euStandard": { "type": "string" }, "euReduced": { "type": "string" }, "export": { "type": "string" }, "exportTaxText": { "type": "string" } } }, "expenses": { "description": "How products in this merchandise group are contributing to expenses on your chart of accounts.", "example": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "euStandard": "0", "euReduced": "0", "import": "0" }, "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string" }, "domesticReduced": { "type": "string" }, "domesticFree": { "type": "string" }, "intraCommunityEu": { "type": "string" }, "euStandard": { "type": "string" }, "euReduced": { "type": "string" }, "import": { "type": "string" } } } } } } }, "examples": { "Shows a single product merchandise group": { "value": { "data": { "id": "1", "name": "Handelsware (100000)", "project": null, "lastUsedProductNumber": "100000", "useMainProductNumberRange": false, "revenue": { "domesticStandard": "", "domesticReduced": "", "domesticFree": "", "intraCommunityEu": "", "intraCommunityEuTaxText": "", "euStandard": "", "euReduced": "", "export": "", "exportTaxText": "" }, "expenses": { "domesticStandard": "", "domesticReduced": "", "domesticFree": "", "intraCommunityEu": "", "euStandard": "", "euReduced": "", "import": "" } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Product Merchandise Group" ], "operationId": "productMerchandiseGroup.update", "summary": "Update a single product merchandise group", "description": "Updates details of a single product merchandise group", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Product merchandise group update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Sets the name of the merchandise group." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "lastUsedProductNumber": { "type": "string", "description": "Sets the last used product number by the merchandise group." }, "useMainProductNumberRange": { "type": "boolean", "description": "Determines if the product number should be taken from the main product number range or not." }, "revenue": { "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string" }, "domesticReduced": { "type": "string" }, "domesticFree": { "type": "string" }, "intraCommunityEu": { "type": "string" }, "intraCommunityEuTaxText": { "type": "string" }, "euStandard": { "type": "string" }, "euReduced": { "type": "string" }, "export": { "type": "string" }, "exportTaxText": { "type": "string" } } }, "expenses": { "type": "object", "additionalProperties": false, "properties": { "domesticStandard": { "type": "string" }, "domesticReduced": { "type": "string" }, "domesticFree": { "type": "string" }, "intraCommunityEu": { "type": "string" }, "euStandard": { "type": "string" }, "euReduced": { "type": "string" }, "import": { "type": "string" } } } } }, "examples": { "Update product merchandise group": { "value": { "name": "My Merchandise Group", "project": { "id": "1" }, "lastUsedProductNumber": "1000", "useMainProductNumberRange": true, "revenue": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "intraCommunityEuTaxText": "VAT free intra-community supply", "euStandard": "0", "euReduced": "0", "export": "0", "exportTaxText": "VAT free export" }, "expenses": { "domesticStandard": "19", "domesticReduced": "7", "domesticFree": "0", "intraCommunityEu": "0", "euStandard": "0", "euReduced": "0", "import": "0" } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Product Merchandise Group" ], "operationId": "productMerchandiseGroup.delete", "summary": "Delete a single product merchandise group", "description": "Deletes a single merchandise group", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/products/{id}/printLabel": { "post": { "tags": [ "Product Label" ], "operationId": "productLabel.print", "summary": "Print product label", "description": "Prints a product label for the given product.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Product label print", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "quantity": { "type": "integer" }, "printingLabel": { "type": "string", "description": "The name of the Label" }, "printer": { "type": "string", "description": "The name of the printer" } } }, "examples": { "Print Labels": { "value": { "quantity": 3, "printingLabel": "EAN", "printer": "Etikettendrucker" } } } } } }, "responses": { "200": { "description": "Print product label", "content": { "application/json": { "schema": { "type": "string", "format": "string" } } } }, "204": { "description": "Operation completed successfully, no response body" }, "403": { "description": "Unable to authorize the client" } } }, "get": { "tags": [ "Product Label" ], "operationId": "productLabel.download", "summary": "Download product label as pdf", "description": "Downloads a product label for the given product as pdf.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Product label download", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "quantity": { "type": "integer" }, "printingLabel": { "type": "string", "description": "The name of the Label" } } } } } }, "responses": { "200": { "description": "Download product label", "content": { "application/pdf": { "schema": { "type": "string", "format": "string" } } } }, "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" } } } }, "/api/v1/productions": { "get": { "tags": [ "Production" ], "operationId": "productions.list", "summary": "List Productions", "description": "List Productions", "parameters": [ { "name": "filter", "in": "query", "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "date", "createdAt", "updatedAt", "status", "salesOrderId", "projectId" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } } } ] } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "date", "createdAt", "updatedAt" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Productions list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "description": "An entity of production response", "type": "object", "additionalProperties": false, "required": [ "id", "documentNumber", "bodyOutroduction", "date", "dateDelivery", "dateProvision", "dateProduction", "dateProductionEnd", "status", "customer", "project", "salesOrder", "internalDesignation", "preferredWarehouse", "reservationType", "retrievalType", "explodeSublists", "functionalTest", "displayWorkingStepTexts", "createSerialNumbers", "captureComponentSerialnumbers", "internalComment", "completed", "finalRemark", "customerCheckOk", "depletingOk", "partialProductionNumber", "partialProductionOf", "stockingOk", "stockOk", "log" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "type": "string", "description": "documentNumber", "example": "DOC-123456" }, "bodyOutroduction": { "type": "string", "description": "BodyOutroduction of the production", "example": "This is the conclusion section of the production document." }, "date": { "type": "string", "format": "date", "description": "Production Date", "example": "2024-09-18" }, "dateDelivery": { "type": "string", "format": "date", "nullable": true, "description": "Production Delivery Date", "example": "2024-09-25" }, "dateProvision": { "type": "string", "format": "date", "nullable": true, "description": "Provision Date", "example": "2024-09-20" }, "dateProduction": { "type": "string", "format": "date", "nullable": true, "description": "Production Date", "example": "2024-09-21" }, "dateProductionEnd": { "type": "string", "format": "date", "nullable": true, "description": "Production End Date", "example": "2024-09-22" }, "status": { "type": "string", "description": "Production Status", "example": "In Progress" }, "customer": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Customer of the production", "example": { "id": "17" } }, "project": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Project of the production", "example": { "id": "17" } }, "salesOrder": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Sales Order of the production", "example": { "id": "17" } }, "internalDesignation": { "type": "string", "description": "Internal Designation of the production", "example": "Batch A-123" }, "preferredWarehouse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Preferred Warehouse of the production", "example": { "id": "17" } }, "reservationType": { "type": "string", "description": "Reservation Type of the production", "example": "Standard" }, "retrievalType": { "type": "string", "description": "Retrieval Type of the production", "example": "Automated" }, "explodeSublists": { "type": "boolean", "description": "Explode Sublists of the production", "example": true }, "functionalTest": { "type": "boolean", "description": "Functional Test of the production", "example": true }, "displayWorkingStepTexts": { "type": "boolean", "description": "Display Working Step Texts of the production", "example": true }, "createSerialNumbers": { "type": "boolean", "description": "Create Serial Numbers of the production", "example": true }, "captureComponentSerialnumbers": { "type": "boolean", "description": "Capture Component Serialnumbers of the production", "example": true }, "internalComment": { "type": "string", "description": "Internal Comment of the production", "example": "Process is completed" }, "completed": { "type": "boolean", "description": "Completed of the production", "example": true }, "finalRemark": { "type": "string", "description": "Final Remark of the production", "example": "Production is done" }, "customerCheckOk": { "type": "boolean", "description": "Customer Check Ok of the production", "example": true }, "depletingOk": { "type": "boolean", "description": "Depleting Ok of the production", "example": true }, "partialProductionNumber": { "type": "integer", "description": "Partial Production Number of the production", "example": 121 }, "partialProductionOf": { "type": "integer", "description": "Partial Production of the production", "example": 1 }, "stockingOk": { "type": "boolean", "description": "Stocking Ok of the production", "example": true }, "stockOk": { "type": "boolean", "description": "Stock Ok of the production", "example": true }, "log": { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date", "example": "2024-09-18" }, "createdBy": { "type": "object", "properties": { "id": { "type": "string", "example": "USR123456" }, "name": { "type": "string", "example": "John Doe" } } } }, "example": { "createdAt": "2024-09-18", "createdBy": { "id": "USR123456", "name": "John Doe" } }, "description": "log of the production" } }, "example": { "id": "17", "documentNumber": "DOC-123456", "bodyOutroduction": "This is the conclusion section of the production document.", "date": "2024-09-18", "dateDelivery": "2024-09-25", "dateProvision": "2024-09-20", "dateProduction": "2024-09-21", "dateProductionEnd": "2024-09-22", "status": "In Progress", "customer": { "id": "17" }, "project": { "id": "17" }, "salesOrder": { "id": "17" }, "internalDesignation": "Batch A-123", "preferredWarehouse": { "id": "17" }, "reservationType": "Standard", "retrievalType": "Automated", "explodeSublists": true, "functionalTest": true, "displayWorkingStepTexts": true, "createSerialNumbers": true, "captureComponentSerialnumbers": true, "internalComment": "Process is completed", "completed": true, "finalRemark": "Production is done", "customerCheckOk": true, "depletingOk": true, "partialProductionNumber": 121, "partialProductionOf": 1, "stockingOk": true, "stockOk": true, "log": { "createdAt": "2024-09-18", "createdBy": { "id": "USR123456", "name": "John Doe" } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } }, "example": { "data": [ { "id": "1", "documentNumber": "", "bodyOutroduction": "", "date": "2024-03-13", "dateDelivery": null, "dateProvision": null, "dateProduction": null, "dateProductionEnd": null, "status": "released", "customer": null, "project": { "id": "1" }, "salesOrder": null, "internalDesignation": "", "preferredWarehouse": null, "reservationType": "abschluss", "retrievalType": "sammel", "explodeSublists": true, "functionalTest": false, "displayWorkingStepTexts": true, "createSerialNumbers": true, "captureComponentSerialnumbers": false, "internalComment": "", "completed": false, "finalRemark": "", "customerCheckOk": true, "depletingOk": false, "partialProductionNumber": 0, "partialProductionOf": 0, "stockingOk": false, "stockOk": true, "log": { "createdAt": "2024-03-13", "createdBy": { "id": "1", "name": "admin" } } }, { "id": "2", "documentNumber": "2024-400000", "bodyOutroduction": "bodyOutroduction", "date": "2024-03-14", "dateDelivery": "2024-03-15", "dateProvision": null, "dateProduction": null, "dateProductionEnd": null, "status": "released", "customer": { "id": "2" }, "project": { "id": "1" }, "salesOrder": { "id": "2" }, "internalDesignation": "", "preferredWarehouse": { "id": "12" }, "reservationType": "abschluss", "retrievalType": "sammel", "explodeSublists": true, "functionalTest": false, "displayWorkingStepTexts": true, "createSerialNumbers": true, "captureComponentSerialnumbers": false, "internalComment": "This is internal comment ", "completed": false, "finalRemark": "", "customerCheckOk": true, "depletingOk": false, "partialProductionNumber": 0, "partialProductionOf": 0, "stockingOk": false, "stockOk": true, "log": { "createdAt": "2024-03-14", "createdBy": { "id": "1", "name": "admin" } } } ], "extra": { "totalCount": 20, "page": { "number": 1, "size": 2 } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/productions/{id}": { "get": { "tags": [ "Production" ], "operationId": "productions.view", "summary": "View Production", "description": "View a production", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Productions view based on id", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "An entity of production response", "type": "object", "additionalProperties": false, "required": [ "id", "documentNumber", "bodyOutroduction", "date", "dateDelivery", "dateProvision", "dateProduction", "dateProductionEnd", "status", "customer", "project", "salesOrder", "internalDesignation", "preferredWarehouse", "reservationType", "retrievalType", "explodeSublists", "functionalTest", "displayWorkingStepTexts", "createSerialNumbers", "captureComponentSerialnumbers", "internalComment", "completed", "finalRemark", "customerCheckOk", "depletingOk", "partialProductionNumber", "partialProductionOf", "stockingOk", "stockOk", "log" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "type": "string", "description": "documentNumber", "example": "DOC-123456" }, "bodyOutroduction": { "type": "string", "description": "BodyOutroduction of the production", "example": "This is the conclusion section of the production document." }, "date": { "type": "string", "format": "date", "description": "Production Date", "example": "2024-09-18" }, "dateDelivery": { "type": "string", "format": "date", "nullable": true, "description": "Production Delivery Date", "example": "2024-09-25" }, "dateProvision": { "type": "string", "format": "date", "nullable": true, "description": "Provision Date", "example": "2024-09-20" }, "dateProduction": { "type": "string", "format": "date", "nullable": true, "description": "Production Date", "example": "2024-09-21" }, "dateProductionEnd": { "type": "string", "format": "date", "nullable": true, "description": "Production End Date", "example": "2024-09-22" }, "status": { "type": "string", "description": "Production Status", "example": "In Progress" }, "customer": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Customer of the production", "example": { "id": "17" } }, "project": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Project of the production", "example": { "id": "17" } }, "salesOrder": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Sales Order of the production", "example": { "id": "17" } }, "internalDesignation": { "type": "string", "description": "Internal Designation of the production", "example": "Batch A-123" }, "preferredWarehouse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "nullable": true, "description": "Preferred Warehouse of the production", "example": { "id": "17" } }, "reservationType": { "type": "string", "description": "Reservation Type of the production", "example": "Standard" }, "retrievalType": { "type": "string", "description": "Retrieval Type of the production", "example": "Automated" }, "explodeSublists": { "type": "boolean", "description": "Explode Sublists of the production", "example": true }, "functionalTest": { "type": "boolean", "description": "Functional Test of the production", "example": true }, "displayWorkingStepTexts": { "type": "boolean", "description": "Display Working Step Texts of the production", "example": true }, "createSerialNumbers": { "type": "boolean", "description": "Create Serial Numbers of the production", "example": true }, "captureComponentSerialnumbers": { "type": "boolean", "description": "Capture Component Serialnumbers of the production", "example": true }, "internalComment": { "type": "string", "description": "Internal Comment of the production", "example": "Process is completed" }, "completed": { "type": "boolean", "description": "Completed of the production", "example": true }, "finalRemark": { "type": "string", "description": "Final Remark of the production", "example": "Production is done" }, "customerCheckOk": { "type": "boolean", "description": "Customer Check Ok of the production", "example": true }, "depletingOk": { "type": "boolean", "description": "Depleting Ok of the production", "example": true }, "partialProductionNumber": { "type": "integer", "description": "Partial Production Number of the production", "example": 121 }, "partialProductionOf": { "type": "integer", "description": "Partial Production of the production", "example": 1 }, "stockingOk": { "type": "boolean", "description": "Stocking Ok of the production", "example": true }, "stockOk": { "type": "boolean", "description": "Stock Ok of the production", "example": true }, "log": { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date", "example": "2024-09-18" }, "createdBy": { "type": "object", "properties": { "id": { "type": "string", "example": "USR123456" }, "name": { "type": "string", "example": "John Doe" } } } }, "example": { "createdAt": "2024-09-18", "createdBy": { "id": "USR123456", "name": "John Doe" } }, "description": "log of the production" } }, "example": { "id": "17", "documentNumber": "DOC-123456", "bodyOutroduction": "This is the conclusion section of the production document.", "date": "2024-09-18", "dateDelivery": "2024-09-25", "dateProvision": "2024-09-20", "dateProduction": "2024-09-21", "dateProductionEnd": "2024-09-22", "status": "In Progress", "customer": { "id": "17" }, "project": { "id": "17" }, "salesOrder": { "id": "17" }, "internalDesignation": "Batch A-123", "preferredWarehouse": { "id": "17" }, "reservationType": "Standard", "retrievalType": "Automated", "explodeSublists": true, "functionalTest": true, "displayWorkingStepTexts": true, "createSerialNumbers": true, "captureComponentSerialnumbers": true, "internalComment": "Process is completed", "completed": true, "finalRemark": "Production is done", "customerCheckOk": true, "depletingOk": true, "partialProductionNumber": 121, "partialProductionOf": 1, "stockingOk": true, "stockOk": true, "log": { "createdAt": "2024-09-18", "createdBy": { "id": "USR123456", "name": "John Doe" } } } } }, "example": { "data": { "id": "1", "documentNumber": "", "bodyOutroduction": "", "date": "2024-03-13", "dateDelivery": null, "dateProvision": null, "dateProduction": null, "dateProductionEnd": null, "status": "created", "customer": null, "project": { "id": "1" }, "salesOrder": null, "internalDesignation": "", "preferredWarehouse": null, "reservationType": "abschluss", "retrievalType": "sammel", "explodeSublists": true, "functionalTest": false, "displayWorkingStepTexts": true, "createSerialNumbers": true, "captureComponentSerialnumbers": false, "internalComment": "", "completed": false, "finalRemark": "", "customerCheckOk": true, "depletingOk": false, "partialProductionNumber": 0, "partialProductionOf": 0, "stockingOk": false, "stockOk": true, "log": { "createdAt": "2024-03-13", "createdBy": { "id": "1", "name": "admin" } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/purchaseOrders": { "get": { "tags": [ "Purchase Order" ], "operationId": "purchaseOrder.list", "summary": "Lists available purchase orders", "description": "Lists all available purchase orders.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "status", "date", "supplier", "documentNumber", "project", "createdAt", "updatedAt", "salesOrderConfirmationReference", "suppliersOfferReference" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "date", "project", "status", "documentNumber" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "description": "List information of the purchase order.", "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "date": { "type": "string", "format": "date", "description": "Date of the purchase order.", "example": "2024-09-24" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "status": { "type": "string", "description": "Current status of the purchase order.", "example": "Pending" }, "documentNumber": { "type": "string", "description": "Document number of the purchase order.", "example": "DOC-2024-4567" }, "supplier": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string" }, "customerNumberAtSupplier": { "type": "string" }, "honorific": { "type": "string", "description": "Honorific of the billing address." }, "name": { "type": "string", "description": "Name of the billing address." }, "department": { "type": "string", "description": "Department of the billing address." }, "subDepartment": { "type": "string", "description": "Subdepartment of the billing address." }, "extraAddressLine": { "type": "string", "description": "Extra address line of the billing address." }, "street": { "type": "string", "description": "Street of the billing address." }, "zipCode": { "type": "string", "description": "Zip code of the billing address." }, "city": { "type": "string", "description": "City of the billing address." }, "state": { "type": "string", "description": "State of the billing address." }, "country": { "type": "string", "description": "Country of the billing address." }, "contactPerson": { "type": "string", "description": "Contact person of the billing address." }, "telephone": { "type": "string", "description": "Telephone of the billing address." }, "telefax": { "type": "string", "description": "Telefax of the billing address." }, "email": { "type": "string", "description": "E-mail of the billing address." } }, "example": { "id": "supplier-12345", "number": "S-2024-001", "customerNumberAtSupplier": "CUST-001", "honorific": "Mr.", "name": "John Doe Enterprises", "department": "Procurement", "subDepartment": "Supplier Relations", "extraAddressLine": "Attn: Accounts Payable", "street": "123 Main St.", "zipCode": "10115", "city": "Berlin", "state": "Berlin", "country": "Germany", "contactPerson": "Jane Smith", "telephone": "+49 30 123456", "telefax": "+49 30 654321", "email": "contact@johndoenterprises.com" }, "description": "Information about the supplier of the purchase order." }, "requestForQuotation": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "bodyIntroduction": { "type": "string", "description": "Text above the position table in the PDF.", "example": "Welcome to our product catalog. Please find the details below." }, "bodyOutroduction": { "type": "string", "description": "Text below the position table in the PDF.", "example": "Thank you for reviewing our offerings. We look forward to your order." }, "salesOrderConfirmationReference": { "type": "string", "description": "Reference of the sales order confirmation.", "example": "SO123456789" }, "isConfirmationRequested": { "type": "boolean", "description": "Shows if a confirmation is requested.", "example": true }, "suppliersOfferReference": { "type": "string", "description": "Offer reference of the supplier.", "example": "SUP-REF-2024-001" }, "internalDesignation": { "type": "string", "description": "Internal designation of the purchase order.", "example": "PO-INV-2024-001" }, "language": { "type": "object", "additionalProperties": false, "description": "Language of the purchase order.", "properties": { "iso2": { "type": "string", "pattern": "[A-Z]{2}", "default": "DE" } }, "example": { "iso2": "DE" } }, "isConfirmed": { "type": "boolean", "description": "Shows if the purchase order is confirmed.", "example": false }, "confirmedVia": { "type": "string", "description": "Shows via the purchase order was confirmed.", "example": "email" }, "financials": { "type": "object", "additionalProperties": false, "description": "Financial information about the purchase order.", "properties": { "paymentMethod": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "total": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "paymentTerms": { "type": "object", "additionalProperties": false, "description": "Information about payment terms of the purchase order.", "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "number" }, "paymentTargetDiscountDays": { "type": "number" }, "paymentTargetDiscountAmount": { "type": "number", "format": "float" }, "isPaymentTargetDiscountApplied": { "type": "boolean" } } }, "costCenter": { "type": "string", "description": "The assigned cost center for the purchase order." }, "tax": { "type": "object", "additionalProperties": false, "description": "Tax information of the purchase order.", "properties": { "taxation": { "type": "string" }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string" } } } }, "example": { "paymentMethod": { "id": "1337" }, "total": { "amount": "1500.00", "currency": "EUR" }, "paymentTerms": { "paymentTargetDiscount": 5, "paymentTargetDays": 30, "paymentTargetDiscountDays": 10, "paymentTargetDiscountAmount": 75, "isPaymentTargetDiscountApplied": true }, "costCenter": "CC-2024-001", "tax": { "taxation": "Domestic", "vatId": "DE123456789", "taxDisplay": "Gross" } } }, "delivery": { "type": "object", "additionalProperties": false, "description": "Delivery information of the purchase order.", "properties": { "deliveryTerms": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "hasDifferentDeliveryAddress": { "type": "boolean" }, "deliveryAddress": { "type": "object", "additionalProperties": false, "description": "Delivery address of the purchase order.", "properties": { "honorific": { "type": "string" }, "name": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "extraAddressLine": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "contactPerson": { "type": "string" } } }, "dates": { "type": "object", "additionalProperties": false, "description": "Delivery dates of the purchase order.", "properties": { "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true }, "confirmedDeliveryDate": { "type": "string", "format": "date", "nullable": true } } } }, "example": { "deliveryTerms": { "id": "1337" }, "hasDifferentDeliveryAddress": true, "deliveryAddress": { "honorific": "Mr.", "name": "John Doe", "department": "Sales", "subDepartment": "International Sales", "extraAddressLine": "Suite 200", "street": "Main Street 123", "zipCode": "10115", "city": "Berlin", "state": "Berlin", "country": "Germany", "contactPerson": "Jane Smith" }, "dates": { "desiredDeliveryDate": "2024-10-15", "confirmedDeliveryDate": "2024-10-14" } } }, "formatting": { "type": "object", "additionalProperties": false, "properties": { "hideLetterHead": { "type": "boolean" }, "hidePrices": { "type": "boolean" }, "hideProductNumbers": { "type": "boolean" }, "showLongProductNumbers": { "type": "boolean" }, "hideProductDescriptions": { "type": "boolean" }, "showOwnProductNumberInColumn": { "type": "boolean" } }, "example": { "hideLetterHead": true, "hidePrices": false, "hideProductNumbers": true, "showLongProductNumbers": false, "hideProductDescriptions": true, "showOwnProductNumberInColumn": true }, "description": "Formatting settings for the PDF of a purchase order." }, "internalComment": { "type": "string", "description": "Internal Comment about the purchase order.", "example": "Please prioritize this order due to customer request." }, "liabilitiesInfo": { "type": "string", "description": "Information for liabilities.", "example": "This purchase order includes liabilities that must be addressed within 30 days." } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Purchase Order" ], "operationId": "purchaseOrder.create", "summary": "Create new purchase order", "description": "Creates a new purchase order.", "parameters": [], "requestBody": { "description": "Purchase order create request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "date": { "type": "string", "format": "date", "description": "Date of the purchase order." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "honorific": { "type": "string" }, "name": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "extraAddressLine": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "contactPerson": { "type": "string" }, "telephone": { "type": "string" }, "telefax": { "type": "string" }, "email": { "type": "string" } } }, "requestForQuotation": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "bodyIntroduction": { "type": "string", "description": "Text above the position table in the PDF." }, "bodyOutroduction": { "type": "string", "description": "Text below the position table in the PDF." }, "salesOrderConfirmationReference": { "type": "string", "description": "Reference of the sales order confirmation." }, "isConfirmationRequested": { "type": "boolean", "description": "Shows if a confirmation is requested." }, "suppliersOfferReference": { "type": "string", "description": "Offer reference of the supplier." }, "internalDesignation": { "type": "string", "description": "Internal designation of the purchase order." }, "language": { "type": "object", "additionalProperties": false, "description": "Language of the purchase order.", "properties": { "iso2": { "type": "string", "pattern": "[A-Z]{2}", "default": "DE" } }, "example": { "iso2": "DE" } }, "isConfirmed": { "type": "boolean", "description": "Shows if the purchase order is confirmed." }, "confirmedVia": { "type": "string", "enum": [ "Internet", "E-Mail", "Telephone", "Telefax", "Letter", "Other" ], "default": "Internet", "description": "Determines how the purchase order was confirmed." }, "financials": { "type": "object", "additionalProperties": false, "description": "Financial information about the purchase order.", "properties": { "paymentMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "paymentTerms": { "type": "object", "additionalProperties": false, "description": "Information about payment terms of the purchase order.", "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "number" }, "paymentTargetDiscountDays": { "type": "number" }, "paymentTargetDiscountAmount": { "type": "number", "format": "float" }, "isPaymentTargetDiscountApplied": { "type": "boolean" } } }, "costCenter": { "type": "string", "description": "The assigned cost center for the purchase order." }, "tax": { "type": "object", "additionalProperties": false, "description": "Tax information of the purchase order.", "properties": { "taxation": { "type": "string", "enum": [ "Domestic", "EU delivery", "Import", "Tax free domestic" ], "default": "Domestic" }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string", "enum": [ "Automatic", "Net", "Gross" ], "default": "Automatic" } } }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "delivery": { "type": "object", "additionalProperties": false, "description": "Delivery information of the purchase order.", "properties": { "deliveryTerms": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "hasDifferentDeliveryAddress": { "type": "boolean" }, "deliveryAddress": { "type": "object", "additionalProperties": false, "properties": { "honorific": { "type": "string" }, "name": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "extraAddressLine": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "contactPerson": { "type": "string" } } }, "dates": { "type": "object", "additionalProperties": false, "properties": { "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true, "description": "Desired delivery date of the purchase order." }, "confirmedDeliveryDate": { "type": "string", "format": "date", "nullable": true, "description": "Confirmed delivery date of the purchase order." } } } } }, "formatting": { "type": "object", "additionalProperties": false, "description": "Formatting settings for the PDF of a purchase order.", "properties": { "hideLetterHead": { "type": "boolean" }, "hidePrices": { "type": "boolean" }, "hideProductNumbers": { "type": "boolean" }, "showLongProductNumbers": { "type": "boolean" }, "hideProductDescriptions": { "type": "boolean" }, "showOwnProductNumberInColumn": { "type": "boolean" } } }, "internalComment": { "type": "string", "description": "Internal comment about the purchase order." }, "liabilitiesInfo": { "type": "string", "description": "Information for liabilities." }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "name": { "type": "string" }, "description": { "type": "string" }, "quantity": { "type": "number", "format": "float" }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "tax": { "type": "object", "additionalProperties": false, "description": "Tax information of the purchase order position.", "properties": { "vatCategory": { "type": "string", "enum": [ "standard", "reduced", "free" ] }, "taxText": { "type": "string" }, "rate": { "type": "number", "format": "float" } } } } } } } }, "examples": {} } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/purchaseOrders/{id}": { "get": { "tags": [ "Purchase Order" ], "operationId": "purchaseOrder.view", "summary": "View a single purchase order", "description": "Returns details of a single purchase order", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "description": "View information of the purchase order.", "properties": { "data": { "type": "object", "additionalProperties": false, "x-description-ignore": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "date": { "type": "string", "format": "date", "description": "Date of the purchase order.", "example": "2023-09-18" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "status": { "type": "string", "description": "Current status of the purchase order.", "example": "Pending" }, "documentNumber": { "type": "string", "description": "Document number of the purchase order.", "example": "PO-2023-001" }, "supplier": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string" }, "customerNumberAtSupplier": { "type": "string" }, "honorific": { "type": "string", "description": "Honorific of the billing address." }, "name": { "type": "string", "description": "Name of the billing address." }, "department": { "type": "string", "description": "Department of the billing address." }, "subDepartment": { "type": "string", "description": "Subdepartment of the billing address." }, "extraAddressLine": { "type": "string", "description": "Extra address line of the billing address." }, "street": { "type": "string", "description": "Street of the billing address." }, "zipCode": { "type": "string", "description": "Zip code of the billing address." }, "city": { "type": "string", "description": "City of the billing address." }, "state": { "type": "string", "description": "State of the billing address." }, "country": { "type": "string", "description": "Country of the billing address." }, "contactPerson": { "type": "string", "description": "Contact person of the billing address." }, "telephone": { "type": "string", "description": "Telephone of the billing address." }, "telefax": { "type": "string", "description": "Telefax of the billing address." }, "email": { "type": "string", "description": "E-mail of the billing address." } }, "example": { "id": "supplier-12345", "number": "S-2024-001", "customerNumberAtSupplier": "CUST-001", "honorific": "Mr.", "name": "John Doe Enterprises", "department": "Procurement", "subDepartment": "Supplier Relations", "extraAddressLine": "Attn: Accounts Payable", "street": "123 Main St.", "zipCode": "10115", "city": "Berlin", "state": "Berlin", "country": "Germany", "contactPerson": "Jane Smith", "telephone": "+49 30 123456", "telefax": "+49 30 654321", "email": "contact@johndoenterprises.com" }, "description": "Information about the supplier of the purchase order." }, "requestForQuotation": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "bodyIntroduction": { "type": "string", "description": "Text above the position table in the PDF.", "example": "Thank you for your order! Please find the details below." }, "bodyOutroduction": { "type": "string", "description": "Text below the position table in the PDF.", "example": "If you have any questions, feel free to contact us!" }, "salesOrderConfirmationReference": { "type": "string", "description": "Reference of the sales order confirmation.", "example": "CONF-2024-00123" }, "isConfirmationRequested": { "type": "boolean", "description": "Shows if a confirmation is requested.", "example": true }, "suppliersOfferReference": { "type": "string", "description": "Offer reference of the supplier.", "example": "OFFER-2024-XYZ" }, "internalDesignation": { "type": "string", "description": "Internal designation of the purchase order.", "example": "PO-2024-001" }, "language": { "type": "object", "additionalProperties": false, "description": "Language of the purchase order.", "properties": { "iso2": { "type": "string", "pattern": "[A-Z]{2}", "default": "DE" } }, "example": { "iso2": "DE" } }, "isConfirmed": { "type": "boolean", "description": "Shows if the purchase order is confirmed.", "example": true }, "confirmedVia": { "type": "string", "description": "Shows via the purchase order was confirmed.", "example": "Email" }, "financials": { "type": "object", "additionalProperties": false, "description": "Financial information about the purchase order.", "properties": { "paymentMethod": { "type": "object", "nullable": true, "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "ID of the payment method used for the purchase order." }, "total": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "paymentTerms": { "type": "object", "additionalProperties": false, "description": "Information about payment terms of the purchase order.", "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "number" }, "paymentTargetDiscountDays": { "type": "number" }, "paymentTargetDiscountAmount": { "type": "number", "format": "float" }, "isPaymentTargetDiscountApplied": { "type": "boolean" } } }, "costCenter": { "type": "string", "description": "The assigned cost center for the purchase order." }, "tax": { "type": "object", "additionalProperties": false, "description": "Tax information of the purchase order.", "properties": { "taxation": { "type": "string" }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string" } } } }, "example": { "paymentMethod": { "id": "1337" }, "total": { "amount": "1500.00", "currency": "EUR" }, "paymentTerms": { "paymentTargetDiscount": 5, "paymentTargetDays": 30, "paymentTargetDiscountDays": 10, "paymentTargetDiscountAmount": 75, "isPaymentTargetDiscountApplied": true }, "costCenter": "CC-2024-001", "tax": { "taxation": "Domestic", "vatId": "DE123456789", "taxDisplay": "Gross" } } }, "delivery": { "type": "object", "additionalProperties": false, "description": "Delivery information of the purchase order.", "properties": { "deliveryTerms": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "hasDifferentDeliveryAddress": { "type": "boolean" }, "deliveryAddress": { "type": "object", "additionalProperties": false, "description": "Delivery address of the purchase order.", "properties": { "honorific": { "type": "string" }, "name": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "extraAddressLine": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "contactPerson": { "type": "string" } } }, "dates": { "type": "object", "additionalProperties": false, "description": "Delivery dates of the purchase order.", "properties": { "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true }, "confirmedDeliveryDate": { "type": "string", "format": "date", "nullable": true } } } }, "example": { "deliveryTerms": { "id": "1337" }, "hasDifferentDeliveryAddress": true, "deliveryAddress": { "honorific": "Mr.", "name": "John Doe", "department": "Sales", "subDepartment": "International Sales", "extraAddressLine": "Suite 200", "street": "Main Street 123", "zipCode": "10115", "city": "Berlin", "state": "Berlin", "country": "Germany", "contactPerson": "Jane Smith" }, "dates": { "desiredDeliveryDate": "2024-10-15", "confirmedDeliveryDate": "2024-10-14" } } }, "formatting": { "type": "object", "additionalProperties": false, "properties": { "hideLetterHead": { "type": "boolean" }, "hidePrices": { "type": "boolean" }, "hideProductNumbers": { "type": "boolean" }, "showLongProductNumbers": { "type": "boolean" }, "hideProductDescriptions": { "type": "boolean" }, "showOwnProductNumberInColumn": { "type": "boolean" } }, "example": { "hideLetterHead": false, "hidePrices": true, "hideProductNumbers": false, "showLongProductNumbers": true, "hideProductDescriptions": false, "showOwnProductNumberInColumn": true }, "description": "Formatting settings for the PDF of a purchase order." }, "internalComment": { "type": "string", "description": "Internal Comment about the purchase order.", "example": "Review before final approval." }, "liabilitiesInfo": { "type": "string", "description": "Information for liabilities.", "example": "Total liabilities amount to $50,000, including loans and credit obligations." }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "description": "Positions of the purchase order.", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "name": { "type": "string" }, "description": { "type": "string" }, "quantity": { "type": "number", "format": "float" }, "delivered": { "type": "number", "format": "float" }, "salesOrderPosition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "integer" }, "salesOrder": { "type": "object", "properties": { "id": { "type": "string", "format": "integer" } } } }, "nullable": true }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "tax": { "type": "object", "additionalProperties": false, "description": "Tax information of the purchase order position.", "properties": { "vatCategory": { "type": "string", "enum": [ "standard", "reduced", "free", "custom" ], "description": "Shows the vat category of the position. If an individual tax rate exists, custom will be returned." }, "taxText": { "type": "string" }, "rate": { "type": "number", "format": "float" } } } } } }, "log": { "type": "object", "additionalProperties": false, "description": "Log information of the purchase order.", "properties": { "createdAt": { "type": "string", "format": "date-time", "nullable": true }, "isSent": { "type": "boolean" }, "sentAt": { "type": "string", "format": "date-time", "nullable": true }, "sentBy": { "type": "string" }, "sentVia": { "type": "string" } }, "example": { "createdAt": "2023-09-23T14:30:00Z", "isSent": true, "sentAt": "2023-09-24T10:15:00Z", "sentBy": "Alice Johnson", "sentVia": "Email" } } }, "example": { "id": "PO-2024-00123", "date": "2024-09-24", "project": { "id": "1337" }, "status": "Pending", "documentNumber": "PO-2024-00123", "supplier": { "id": "SUP-2024-ABC123", "name": "Muster GmbH", "street": "Hauptstraße 12", "zipCode": "10115", "city": "Berlin", "country": "Germany", "contactPerson": "Max Mustermann", "email": "max.mustermann@muster.de" }, "isConfirmationRequested": true, "suppliersOfferReference": "ANGEBOT-2024-XYZ", "internalDesignation": "Internes Projekt PO", "language": { "iso2": "DE" }, "isConfirmed": true, "confirmedVia": "E-Mail", "financials": { "paymentMethod": { "id": "ZAHLUNG-001" }, "total": { "amount": "15000", "currency": "EUR" }, "paymentTerms": { "paymentTargetDays": 30, "paymentTargetDiscount": 5, "paymentTargetDiscountDays": 10 } }, "delivery": { "deliveryTerms": { "id": "LIEFERUNG-001" }, "deliveryAddress": { "name": "Lagerhaus A", "street": "Industriestraße 8", "zipCode": "10317", "city": "Berlin", "country": "Germany" } }, "internalComment": "Dringende Bestellung, bitte beschleunigen.", "positions": [ { "id": "POS-001", "product": { "id": "PROD-2024-001" }, "quantity": 10, "delivered": 20, "salesOrderPosition": { "id": "2", "salesOrder": { "id": "1234" } }, "price": { "amount": "500", "currency": "EUR" } } ] } } } } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Purchase Order" ], "operationId": "purchaseOrder.update", "summary": "Update existing purchase order", "description": "Updates an existing purchase order as long as no writing protection is active. When the writing protection is active only isConfirmed, confirmedVia, confirmedDeliveryDate and salesOrderConfirmationReference can be updated.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Purchase order update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "date": { "type": "string", "format": "date", "description": "Date of the purchase order." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "honorific": { "type": "string" }, "name": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "extraAddressLine": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "contactPerson": { "type": "string" }, "telephone": { "type": "string" }, "telefax": { "type": "string" }, "email": { "type": "string" } } }, "requestForQuotation": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "bodyIntroduction": { "type": "string", "description": "Text above the position table in the PDF." }, "bodyOutroduction": { "type": "string", "description": "Text below the position table in the PDF." }, "salesOrderConfirmationReference": { "type": "string", "description": "Reference of the sales order confirmation. Can be updated even if the write protection is active.", "example": "SO-123456" }, "isConfirmationRequested": { "type": "boolean", "description": "Shows if a confirmation is requested." }, "suppliersOfferReference": { "type": "string", "description": "Offer reference of the supplier." }, "internalDesignation": { "type": "string", "description": "Internal designation of the purchase order." }, "language": { "type": "object", "additionalProperties": false, "description": "Language of the purchase order.", "properties": { "iso2": { "type": "string", "pattern": "[A-Z]{2}", "default": "DE" } }, "example": { "iso2": "DE" } }, "isConfirmed": { "type": "boolean", "description": "Shows if the purchase order is confirmed. Can be updated even if the write protection is active." }, "confirmedVia": { "type": "string", "enum": [ "Internet", "E-Mail", "Telephone", "Telefax", "Letter", "Other" ], "default": "Internet", "description": "Determines how the purchase order was confirmed. Can be updated even if the write protection is active." }, "financials": { "type": "object", "additionalProperties": false, "description": "Financial information about the purchase order.", "properties": { "paymentMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "paymentTerms": { "type": "object", "additionalProperties": false, "description": "Information about payment terms of the purchase order.", "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "number" }, "paymentTargetDiscountDays": { "type": "number" }, "paymentTargetDiscountAmount": { "type": "number", "format": "float" }, "isPaymentTargetDiscountApplied": { "type": "boolean" } } }, "costCenter": { "type": "string", "description": "The assigned cost center for the purchase order." }, "tax": { "type": "object", "additionalProperties": false, "description": "Tax information of the purchase order.", "properties": { "taxation": { "type": "string", "enum": [ "Domestic", "EU delivery", "Import", "Tax free domestic" ], "default": "Domestic" }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string", "enum": [ "Automatic", "Net", "Gross" ], "default": "Automatic" } } }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "delivery": { "type": "object", "additionalProperties": false, "description": "Delivery information of the purchase order.", "properties": { "deliveryTerms": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "hasDifferentDeliveryAddress": { "type": "boolean" }, "deliveryAddress": { "type": "object", "additionalProperties": false, "properties": { "honorific": { "type": "string" }, "name": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "extraAddressLine": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "contactPerson": { "type": "string" } } }, "dates": { "type": "object", "additionalProperties": false, "properties": { "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true, "description": "Desired delivery date of the purchase order." }, "confirmedDeliveryDate": { "type": "string", "format": "date", "nullable": true, "description": "Confirmed delivery date of the purchase order. Can be updated even if the write protection is active." } } } } }, "formatting": { "type": "object", "additionalProperties": false, "description": "Formatting settings for the PDF of a purchase order.", "properties": { "hideLetterHead": { "type": "boolean" }, "hidePrices": { "type": "boolean" }, "hideProductNumbers": { "type": "boolean" }, "showLongProductNumbers": { "type": "boolean" }, "hideProductDescriptions": { "type": "boolean" }, "showOwnProductNumberInColumn": { "type": "boolean" } } }, "internalComment": { "type": "string", "description": "Internal comment about the purchase order." }, "liabilitiesInfo": { "type": "string", "description": "Information for liabilities." }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "product": { "type": "object", "description": "Reference to position Product, only one value is allowed at a time", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "sku": { "type": "string", "example": "SKU1" }, "externalReferenceNumber": { "type": "string", "example": "REF2" } } }, "name": { "type": "string" }, "description": { "type": "string" }, "quantity": { "type": "number", "format": "float" }, "delivered": { "type": "number", "format": "float" }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "tax": { "type": "object", "additionalProperties": false, "description": "Tax information of the purchase order position.", "properties": { "vatCategory": { "type": "string", "enum": [ "standard", "reduced", "free" ] }, "taxText": { "type": "string" }, "rate": { "type": "number", "format": "float" } } }, "isDeleted": { "type": "boolean" } } } } } }, "examples": { "example": { "value": { "date": "2024-01-01", "project": { "id": "1001" }, "supplier": { "id": "2001", "honorific": "", "name": "Supplier 1", "department": "", "subDepartment": "", "extraAddressLine": "", "street": "ExampleStreet 5", "zipCode": "", "city": "", "state": "", "country": "", "contactPerson": "", "telephone": "1234567890", "telefax": "", "email": "" }, "requestForQuotation": { "id": "6002" }, "bodyIntroduction": "", "bodyOutroduction": "", "salesOrderConfirmationReference": "", "isConfirmationRequested": false, "internalDesignation": "", "language": { "iso2": "DE" }, "suppliersOfferReference": "", "isConfirmed": false, "confirmedVia": "Internet", "financials": { "paymentMethod": { "id": "4002" }, "paymentTerms": { "paymentTargetDiscount": 0, "paymentTargetDays": 0, "paymentTargetDiscountDays": 0, "paymentTargetDiscountAmount": 0, "isPaymentTargetDiscountApplied": false }, "costCenter": "", "tax": { "taxation": "Domestic", "vatId": "", "taxDisplay": "Automatic" }, "currency": "EUR" }, "delivery": { "deliveryTerms": { "id": "7002" }, "hasDifferentDeliveryAddress": true, "deliveryAddress": { "honorific": "", "name": "Delivery Address Name", "department": "", "subDepartment": "", "extraAddressLine": "", "street": "", "zipCode": "", "city": "", "state": "", "country": "", "contactPerson": "" }, "dates": { "desiredDeliveryDate": null, "confirmedDeliveryDate": null } }, "formatting": { "hideLetterHead": false, "hidePrices": false, "hideProductNumbers": false, "showLongProductNumbers": false, "hideProductDescriptions": false, "showOwnProductNumberInColumn": false }, "internalComment": "", "liabilitiesInfo": "", "positions": [] } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/purchaseOrders/{id}/goodsReceipts": { "post": { "tags": [ "Goods Receipt" ], "operationId": "purchaseOrder.goodsReceipt.create", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "summary": "Create a new goods receipt for a purchase order", "description": "Creates a new goods receipt for a purchase order.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "date": { "type": "string", "format": "date", "example": "2024-09-24" }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "product": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "quantity": { "type": "number", "format": "double", "example": 10 }, "purchaseOrderPosition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "stockMovements": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "quantity": { "type": "number", "format": "double", "example": 5 }, "warehouse": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "storageLocation": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "qualityControlAttributes": { "type": "object", "additionalProperties": false, "properties": { "batch": { "type": "string", "example": "BATCH-1234" }, "bestBeforeDate": { "type": "string", "format": "date", "example": "2025-12-31" }, "serialNumbers": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "number": { "type": "string", "example": "SN-123456" } } } } } } } } } } } } } }, "examples": { "example": { "value": { "date": "2024-09-24", "positions": [ { "product": { "id": "product-1" }, "quantity": 10, "purchaseOrderPosition": { "id": "purchase-order-position-1" }, "stockMovements": [ { "quantity": 5, "warehouse": { "id": "warehouse-1" }, "storageLocation": { "id": "storage-location-1" }, "qualityControlAttributes": { "batch": "BATCH-1234", "bestBeforeDate": "2025-12-31", "serialNumbers": [ { "number": "SN-123456" } ] } } ] } ] } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/purchaseOrders/{id}/actions/cancel": { "patch": { "tags": [ "Purchase Order" ], "operationId": "purchaseOrder.actions.cancel", "summary": "Cancels a purchase order", "description": "Cancels the purchase order", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/purchaseOrders/{id}/actions/release": { "patch": { "tags": [ "Purchase Order" ], "operationId": "purchaseOrder.actions.release", "summary": "Releases a purchase order", "description": "Releases the purchase order", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "*/*": { "schema": { "type": "string", "enum": [ "" ], "nullable": true }, "examples": { "example": { "value": "" } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/purchasePrices": { "post": { "tags": [ "Purchase Price" ], "operationId": "purchasePrice.create", "summary": "Create purchase price", "description": "Creates new purchase price", "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "product", "fromQuantity", "price", "validFrom", "expiresAt" ], "properties": { "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Price of the product", "example": { "amount": 7.3, "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "x-description-missing": true, "type": "number", "format": "float", "example": 7.3 }, "currency": { "x-description-missing": true, "type": "string", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "example": "EUR" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" } } }, "examples": { "Create purchase price": { "value": { "product": { "id": "18" }, "supplier": { "id": "194" }, "isStandardSupplier": true, "supplierDesignation": "Pillow 20x20", "supplierItemNumber": "4992042-20", "fromQuantity": 50, "packageAmount": 10, "validFrom": "2021-01-01", "expiresAt": null, "price": { "amount": 7.3, "currency": "EUR" } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "product", "fromQuantity", "price", "validFrom", "expiresAt" ], "properties": { "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" }, "additionalInformation": { "description": "Purchase Price", "example": { "supplierStockLevel": 73, "supplierStockDate": "2024-11-01", "safetyStockLevel": 10, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 12, "currentDeliveryTimeUnit": "weeks" }, "type": "object", "additionalProperties": false, "nullable": true, "properties": { "supplierStockLevel": { "type": "number", "x-description-missing": true, "example": 7 }, "supplierStockDate": { "type": "string", "x-description-missing": true, "format": "date", "example": "2024-11-01" }, "safetyStockLevel": { "type": "number", "x-description-missing": true, "example": 7 }, "standardDeliveryTime": { "type": "number", "x-description-missing": true, "example": 3 }, "standardDeliveryTimeUnit": { "type": "string", "x-description-missing": true, "enum": [ "days", "weeks" ], "example": "days" }, "currentDeliveryTime": { "type": "number", "x-description-missing": true, "example": 6 }, "currentDeliveryTimeUnit": { "type": "string", "x-description-missing": true, "enum": [ "days", "weeks" ], "example": "days" } } }, "internalComment": { "type": "string", "nullable": true, "description": "Internal Comment", "example": "Test" } } }, "examples": { "Create purchase price": { "value": { "product": { "id": "18" }, "supplier": { "id": "194" }, "isStandardSupplier": true, "supplierDesignation": "Pillow 20x20", "supplierItemNumber": "4992042-20", "fromQuantity": 50, "packageAmount": 10, "validFrom": "2021-01-01", "expiresAt": null, "price": { "amount": "7.30", "currency": "EUR" }, "additionalInformation": { "supplierStockLevel": 10000, "supplierStockDate": "2024-06-30", "safetyStockLevel": 2000, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 2, "currentDeliveryTimeUnit": "weeks" }, "internalComment": "internalComment1234" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Purchase Price" ], "operationId": "purchasePrice.list", "summary": "List purchase prices", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "product", "supplier", "currency", "fromQuantity", "isValidAt" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "description": "Returns list of a purchase prices", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "x-description-missing": true, "type": "object", "additionalProperties": false, "example": { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": 12.92, "currency": "EUR" }, "validFrom": null, "expiresAt": "2024-12-12" }, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "type": "boolean", "example": true, "description": "Sets the supplier to be the standard supplier for this product" }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Price of the product", "example": { "amount": 7.3, "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "x-description-missing": true, "type": "number", "format": "float", "example": 7.3 }, "currency": { "x-description-missing": true, "type": "string", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "example": "EUR" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all purchase prices": { "value": { "data": [ { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "supplierItemNumber": "", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": 12.92, "currency": "EUR" }, "validFrom": null, "expiresAt": null }, { "id": "2", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "supplierItemNumber": "", "fromQuantity": 10, "packageAmount": 1, "price": { "amount": 10.45, "currency": "EUR" }, "validFrom": null, "expiresAt": "2024-04-10" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "x-description-missing": true, "type": "object", "additionalProperties": false, "example": { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": "12.92", "currency": "EUR" }, "internalComment": "Test1", "validFrom": null, "expiresAt": "2024-12-12" }, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "x-description-missing": true, "type": "boolean", "example": true }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "internalComment": { "type": "string", "nullable": true, "description": "Internal Comment", "example": "Test" }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all purchase prices": { "value": { "data": [ { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "supplierItemNumber": "", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": "12.92000000", "currency": "EUR" }, "validFrom": null, "expiresAt": null }, { "id": "2", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "supplierItemNumber": "", "fromQuantity": 10, "packageAmount": 1, "price": { "amount": "10.45000000", "currency": "EUR" }, "validFrom": null, "expiresAt": "2024-04-10" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Purchase Price" ], "operationId": "purchasePrice.updateMultiple", "summary": "Update multiple purchase prices", "description": "Updates multiple purchase prices", "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Price of the product", "example": { "amount": 7.3, "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "x-description-missing": true, "type": "number", "format": "float", "example": 7.3 }, "currency": { "x-description-missing": true, "type": "string", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "example": "EUR" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" } } } }, "examples": { "Update multiple purchase prices": { "value": [ { "id": "194", "price": { "amount": 7.3, "currency": "EUR" } }, { "id": "199", "price": { "amount": 10.3, "currency": "EUR" } } ] } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" }, "additionalInformation": { "description": "Purchase Price", "example": { "supplierStockLevel": 73, "supplierStockDate": "2024-11-01", "safetyStockLevel": 10, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 12, "currentDeliveryTimeUnit": "weeks" }, "type": "object", "additionalProperties": false, "nullable": true, "properties": { "supplierStockLevel": { "type": "number", "x-description-missing": true, "example": 7 }, "supplierStockDate": { "type": "string", "x-description-missing": true, "format": "date", "example": "2024-11-01" }, "safetyStockLevel": { "type": "number", "x-description-missing": true, "example": 7 }, "standardDeliveryTime": { "type": "number", "x-description-missing": true, "example": 3 }, "standardDeliveryTimeUnit": { "type": "string", "x-description-missing": true, "enum": [ "days", "weeks" ], "example": "days" }, "currentDeliveryTime": { "type": "number", "x-description-missing": true, "example": 6 }, "currentDeliveryTimeUnit": { "type": "string", "x-description-missing": true, "enum": [ "days", "weeks" ], "example": "days" } } }, "internalComment": { "type": "string", "nullable": true, "description": "Internal Comment", "example": "Test" } } } }, "examples": { "Update multiple purchase prices": { "value": [ { "id": "194", "price": { "amount": "7.3", "currency": "EUR" }, "additionalInformation": { "supplierStockLevel": 105, "supplierStockDate": "2024-02-11", "safetyStockLevel": 5000, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 2, "currentDeliveryTimeUnit": "weeks" }, "internalComment": "Test" }, { "id": "199", "price": { "amount": "10.3", "currency": "EUR" }, "additionalInformation": { "supplierStockLevel": 105, "supplierStockDate": "2024-02-11", "safetyStockLevel": 5000, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "weeks", "currentDeliveryTime": 2, "currentDeliveryTimeUnit": "days" }, "internalComment": "Test" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/purchasePrices/{id}": { "get": { "tags": [ "Purchase Price" ], "operationId": "purchasePrice.view", "summary": "View purchase price", "description": "Returns details of a single purchase price", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "example": { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": 12.92, "currency": "EUR" }, "validFrom": null, "expiresAt": "2024-12-12" }, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "type": "boolean", "example": true, "description": "Sets the supplier to be the standard supplier for this product" }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Price of the product", "example": { "amount": 7.3, "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "x-description-missing": true, "type": "number", "format": "float", "example": 7.3 }, "currency": { "x-description-missing": true, "type": "string", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "example": "EUR" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Shows a single purchase price": { "value": { "data": { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "supplierItemNumber": "", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": 12.92, "currency": "EUR" }, "validFrom": null, "expiresAt": "2024-12-12" } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "example": { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": "12.92", "currency": "EUR" }, "internalComment": "Test1", "validFrom": null, "expiresAt": "2024-12-12" }, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "x-description-missing": true, "type": "boolean", "example": true }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "internalComment": { "type": "string", "nullable": true, "description": "Internal Comment", "example": "Test" }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Shows a single purchase price": { "value": { "data": { "id": "1", "product": { "id": "5" }, "supplier": { "id": "7" }, "isStandardSupplier": false, "supplierDesignation": "123456", "supplierItemNumber": "", "fromQuantity": 1, "packageAmount": 1, "price": { "amount": "12.92000000", "currency": "EUR" }, "validFrom": null, "expiresAt": "2024-12-12" } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Purchase Price" ], "operationId": "purchasePrice.update", "summary": "Update purchase price", "description": "Updates details of a single purchase price", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Price of the product", "example": { "amount": 7.3, "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "x-description-missing": true, "type": "number", "format": "float", "example": 7.3 }, "currency": { "x-description-missing": true, "type": "string", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "example": "EUR" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" } } }, "examples": { "Update Purchase Price": { "value": { "validFrom": "2023-12-01", "fromQuantity": 1, "price": { "amount": 24.2, "currency": "EUR" } } } } }, "application/vnd.xentral.default.v2-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "supplier": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Reference to a supplier for this price", "example": { "id": "194" }, "nullable": true }, "isStandardSupplier": { "description": "Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'", "example": "'true'", "oneOf": [ { "type": "boolean" }, { "type": "number", "enum": [ 0, 1 ] }, { "type": "string", "enum": [ "true", "false", "True", "False", "TRUE", "FALSE" ] } ] }, "supplierDesignation": { "type": "string", "nullable": true, "description": "The designation of the supplier", "example": "Xentral" }, "supplierItemNumber": { "type": "string", "nullable": true, "description": "Supplier item number", "example": "4992042-20" }, "fromQuantity": { "type": "number", "format": "float", "description": "Minimum quantity for this price", "example": 1 }, "packageAmount": { "type": "number", "format": "float", "nullable": true, "description": "Amount of items in a package", "example": 10 }, "price": { "description": "Price of the product", "example": { "amount": 7.3, "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "x-description-missing": true, "type": "number", "format": "float", "example": 7.3 }, "currency": { "x-description-missing": true, "type": "string", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "example": "EUR" } } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Date from which the price is valid", "example": "2023-12-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Date until which the price is valid", "example": "2024-12-12" }, "additionalInformation": { "description": "Purchase Price", "example": { "supplierStockLevel": 73, "supplierStockDate": "2024-11-01", "safetyStockLevel": 10, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 12, "currentDeliveryTimeUnit": "weeks" }, "type": "object", "additionalProperties": false, "nullable": true, "properties": { "supplierStockLevel": { "type": "number", "x-description-missing": true, "example": 7 }, "supplierStockDate": { "type": "string", "x-description-missing": true, "format": "date", "example": "2024-11-01" }, "safetyStockLevel": { "type": "number", "x-description-missing": true, "example": 7 }, "standardDeliveryTime": { "type": "number", "x-description-missing": true, "example": 3 }, "standardDeliveryTimeUnit": { "type": "string", "x-description-missing": true, "enum": [ "days", "weeks" ], "example": "days" }, "currentDeliveryTime": { "type": "number", "x-description-missing": true, "example": 6 }, "currentDeliveryTimeUnit": { "type": "string", "x-description-missing": true, "enum": [ "days", "weeks" ], "example": "days" } } }, "internalComment": { "type": "string", "nullable": true, "description": "Internal Comment", "example": "Test" } } }, "examples": { "Update Purchase Price": { "value": { "validFrom": "2023-12-01", "fromQuantity": 1, "price": { "amount": 24.2, "currency": "EUR" }, "additionalInformation": { "supplierStockLevel": 105, "supplierStockDate": "2024-02-11", "safetyStockLevel": 5000, "standardDeliveryTime": 3, "standardDeliveryTimeUnit": "days", "currentDeliveryTime": 2, "currentDeliveryTimeUnit": "weeks" }, "internalComment": "Test" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Purchase Price" ], "operationId": "purchasePrice.delete", "summary": "Delete purchase price", "description": "Deletes a single purchase price", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/projects": { "get": { "tags": [ "Project" ], "operationId": "Project.list", "summary": "List projects", "description": "Returns a collection of projects", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "search", "id", "name", "keyName", "description", "currency", "normalTaxRate", "reducedTaxRate", "storageProcess", "pickingProcess" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "keyName", "description", "currency", "normalTaxRate", "reducedTaxRate", "storageProcess", "pickingProcess" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "x-description-missing": true, "type": "string", "example": "Berlin Project" }, "keyName": { "x-description-missing": true, "type": "string", "example": "BER_PROJ_001" }, "description": { "x-description-missing": true, "type": "string", "example": "A project based in Berlin focusing on software development and integration." }, "currency": { "x-description-missing": true, "type": "string", "example": "EUR" }, "normalTaxRate": { "x-description-missing": true, "type": "number", "format": "float", "example": 13.3 }, "reducedTaxRate": { "x-description-missing": true, "type": "number", "format": "float", "example": 13.3 }, "storageProcess": { "x-description-missing": true, "type": "string", "enum": [ "none", "order", "orderPointOfSale" ], "example": "order" }, "pickingProcess": { "x-description-missing": true, "type": "string", "enum": [ "invoiceMail", "shipmentNote", "shipmentNoteScan", "shipmentNoteWarehouse", "shipmentNoteWarehouseScan", "twoLevel" ], "example": "invoiceMail" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "properties": { "id": { "type": "string" }, "value": { "type": "string" } }, "required": [ "id", "value" ] }, "example": [ { "id": "1", "value": "test" }, { "id": "2", "value": "test1" }, { "id": "3", "value": "" } ] } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "example": { "data": [ { "id": "91", "name": "Standard - 1", "keyName": "STANDARD1", "description": "This is a standard project", "currency": "EUR", "normalTaxRate": 19, "reducedTaxRate": 7, "storageProcess": "none", "pickingProcess": "twoLevel", "freeFields": [ { "id": "1", "value": "test" }, { "id": "2", "value": "test1" }, { "id": "3", "value": "" }, { "id": "4", "value": "" }, { "id": "5", "value": "" }, { "id": "6", "value": "" }, { "id": "7", "value": "test7" }, { "id": "8", "value": "" }, { "id": "9", "value": "" }, { "id": "10", "value": "" } ] }, { "id": "92", "name": "Standard - 2", "keyName": "STANDARD2", "description": "This is a standard project", "currency": "CH", "normalTaxRate": 20, "reducedTaxRate": 10, "storageProcess": "order", "pickingProcess": "shipmentNote", "freeFields": [ { "id": "1", "value": "test" }, { "id": "2", "value": "test1" }, { "id": "3", "value": "" }, { "id": "4", "value": "" }, { "id": "5", "value": "" }, { "id": "6", "value": "" }, { "id": "7", "value": "test7" }, { "id": "8", "value": "" }, { "id": "9", "value": "" }, { "id": "10", "value": "" } ] } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/projects/{id}/posSettings": { "get": { "tags": [ "Project" ], "operationId": "Project.posSettings", "summary": "List POS settings for project", "description": "Returns a list of POS settings of a project", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "storageProcess": { "x-description-missing": true, "type": "string", "example": "Automated Storage" }, "adapterBoxId": { "x-description-missing": true, "type": "integer", "example": 5 }, "warehouse": { "x-description-missing": true, "type": "integer", "example": 5 }, "priceGroup": { "x-description-missing": true, "type": "integer", "example": 5 }, "cashRegister": { "x-description-missing": true, "type": "integer", "example": 5 }, "defaultCustomer": { "x-description-missing": true, "type": "integer", "example": 5 }, "allowAllCustomers": { "x-description-missing": true, "type": "boolean", "example": true }, "allowOnlyProjectItems": { "x-description-missing": true, "type": "boolean", "example": true }, "sumItems": { "x-description-missing": true, "type": "boolean", "example": true }, "discountItems": { "x-description-missing": true, "type": "integer", "example": 1 }, "createDeliveryNote": { "x-description-missing": true, "type": "boolean", "example": true }, "label1": { "x-description-missing": true, "type": "string", "example": "Shipping Label" }, "label2": { "x-description-missing": true, "type": "string", "example": "Return Label" }, "applyItemDescriptionToReceipts": { "x-description-missing": true, "type": "boolean", "example": true }, "displayNet": { "x-description-missing": true, "type": "boolean", "example": true }, "allowMultipleOrdersPerCashier": { "x-description-missing": true, "type": "boolean", "example": true }, "journalPdfDetailedView": { "x-description-missing": true, "type": "boolean", "example": true }, "hideIndividualBookings": { "x-description-missing": true, "type": "boolean", "example": true }, "monthlyReportsWithoutIndividualDays": { "x-description-missing": true, "type": "boolean", "example": true }, "hideCountingLog": { "x-description-missing": true, "type": "boolean", "example": true }, "hideSignatureBlock": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentBar": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentBarPaid": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentEc": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentEcPaid": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentCreditCard": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentCreditCardPaid": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentTransfer": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonPaymentTransferPaid": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonInvoice": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonReceipt": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonDiscountPercent": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonDiscountEuro": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonWithdrawal": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonDeposit": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonTipping": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonTippingCredit": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonOpenDrawer": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonLoadReceipts": { "x-description-missing": true, "type": "boolean", "example": true }, "buttonCancellation": { "x-description-missing": true, "type": "boolean", "example": true }, "cashierAutologout": { "x-description-missing": true, "type": "integer", "example": 5 }, "cashierAutologoutAfterPaymenet": { "x-description-missing": true, "type": "integer", "example": 5 }, "extendedAddressFields": { "x-description-missing": true, "type": "boolean", "example": true }, "compulsorySelectionPaymentMethod": { "x-description-missing": true, "type": "boolean", "example": true }, "preselectionOfSalutation": { "x-description-missing": true, "type": "string", "example": "Mr." }, "printerReceiptAfterCompletion": { "x-description-missing": true, "type": "string", "example": "Print receipt after transaction completion" }, "printerId": { "x-description-missing": true, "type": "integer", "example": 5 }, "printerNumberOfDeliveryNotes": { "x-description-missing": true, "type": "integer", "example": 5 }, "printerNumberOfInvoices": { "x-description-missing": true, "type": "integer", "example": 5 }, "printerNumberOfCreditNotes": { "x-description-missing": true, "type": "integer", "example": 5 }, "printerNumberOfDeliveryNoteDuplicates": { "x-description-missing": true, "type": "integer", "example": 5 }, "printerPrintReceiptWithInvoice": { "x-description-missing": true, "type": "boolean", "example": true }, "printerPrintQr": { "x-description-missing": true, "type": "boolean", "example": true }, "printerReceiptActive": { "x-description-missing": true, "type": "boolean", "example": true }, "printerReceiptCount": { "x-description-missing": true, "type": "integer", "example": 5 }, "printerReceiptLine1": { "x-description-missing": true, "type": "string", "example": "Thank you for your purchase!" }, "printerReceiptLine2": { "x-description-missing": true, "type": "string", "example": "Please come again." }, "printerReceiptLine3": { "x-description-missing": true, "type": "string", "example": "Please come again." }, "printerReceiptFreeField": { "x-description-missing": true, "type": "boolean", "example": true }, "printerReceiptQr": { "x-description-missing": true, "type": "boolean", "example": true }, "ownVatId": { "x-description-missing": true, "type": "string", "format": "float", "nullable": true, "example": "VAT12345678" } }, "example": { "storageProcess": "Automated Storage", "adapterBoxId": 5, "warehouse": 5, "priceGroup": 5, "cashRegister": 5, "defaultCustomer": 5, "allowAllCustomers": true, "allowOnlyProjectItems": true, "sumItems": true, "discountItems": 1, "createDeliveryNote": true, "label1": "Shipping Label", "label2": "Return Label", "applyItemDescriptionToReceipts": true, "displayNet": true, "allowMultipleOrdersPerCashier": true, "journalPdfDetailedView": true, "hideIndividualBookings": true, "monthlyReportsWithoutIndividualDays": true, "hideCountingLog": true, "hideSignatureBlock": true, "buttonPaymentBar": true, "buttonPaymentBarPaid": true, "buttonPaymentEc": true, "buttonPaymentEcPaid": true, "buttonPaymentCreditCard": true, "buttonPaymentCreditCardPaid": true, "buttonPaymentTransfer": true, "buttonPaymentTransferPaid": true, "buttonInvoice": true, "buttonReceipt": true, "buttonDiscountPercent": true, "buttonDiscountEuro": true, "buttonWithdrawal": true, "buttonDeposit": true, "buttonTipping": true, "buttonTippingCredit": true, "buttonOpenDrawer": true, "buttonLoadReceipts": true, "buttonCancellation": true, "cashierAutologout": 5, "cashierAutologoutAfterPaymenet": 5, "extendedAddressFields": true, "compulsorySelectionPaymentMethod": true, "preselectionOfSalutation": "Mr.", "printerReceiptAfterCompletion": "Print receipt after transaction completion", "printerId": 5, "printerNumberOfDeliveryNotes": 5, "printerNumberOfInvoices": 5, "printerNumberOfCreditNotes": 5, "printerNumberOfDeliveryNoteDuplicates": 5, "printerPrintReceiptWithInvoice": true, "printerPrintQr": true, "printerReceiptActive": true, "printerReceiptCount": 5, "printerReceiptLine1": "Thank you for your purchase!", "printerReceiptLine2": "Please come again.", "printerReceiptLine3": "Please come again.", "printerReceiptFreeField": true, "printerReceiptQr": true, "ownVatId": "VAT12345678" } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/returns": { "post": { "tags": [ "Return" ], "operationId": "return.create", "summary": "Create a return", "description": "Creates a new return.", "requestBody": { "description": "Request payload for return creation", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "salesOrder" ], "properties": { "date": { "type": "string", "format": "date", "nullable": true, "example": "2023-03-16" }, "salesOrder": { "type": "object", "additionalProperties": false, "required": [ "id", "positions" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "quantity", "returnReason" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double", "example": 14 }, "returnReason": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } } } } } }, "shippingMethod": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "nullable": true, "example": "2" } } } } }, "examples": { "Create a return from a return": { "value": { "date": "2023-10-16", "salesOrder": { "id": "155", "positions": [ { "id": "345", "quantity": 1, "returnReason": { "id": "1" } }, { "id": "346", "quantity": 3, "returnReason": { "id": "2" } } ] }, "shippingMethod": { "id": "2" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "415": { "description": "Resource representation send in the request is not supported." } } }, "get": { "tags": [ "Return" ], "operationId": "return.list", "summary": "List returns", "description": "Lists existing returns", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "oneOf": [ { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "documentNumber", "customerId", "salesOrderId", "updatedAt", "createdAt" ] }, "op": { "type": "string", "enum": [ "equals", "in", "greaterThan", "notEquals", "isOnOrBefore", "isOnOrAfter", "notIn", "contains" ] }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } } } ] } } ], "responses": { "200": { "description": "A list of returns", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "date", "documentNumber", "tags", "customer", "salesOrder", "status" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "date": { "type": "string", "nullable": true, "format": "date", "example": "2023-03-16", "description": "Date of creation of the Return order" }, "status": { "type": "string", "enum": [ "unknown", "open", "canceled", "completed", "sent", "created", "announced", "released", "checked", "done" ], "description": "Status of the Return order", "example": "completed" }, "documentNumber": { "type": "string", "nullable": true, "example": "2023-000001", "description": "Internal identification of the Return order" }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customer": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "number" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "example": "K-000001", "nullable": true } }, "description": "Customer linked to the Return order", "example": { "id": "1", "number": "K-000001" } }, "shippingMethod": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "example": "DHL", "nullable": true } }, "description": "Customer linked to the Return order", "example": { "id": "1", "name": "DHL" } }, "project": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "example": "DHL", "nullable": true } }, "description": "Customer linked to the Return order", "example": { "id": "1", "name": "DHL" } }, "progress": { "type": "string", "nullable": true, "example": "2023-000001", "description": "Internal identification of the Return order" }, "bodyOutroduction": { "type": "string", "nullable": true, "example": "2023-000001", "description": "Internal identification of the Return order" }, "internalComment": { "type": "string", "nullable": true, "example": "2023-000001", "description": "Internal identification of the Return order" } } }, "description": "Data representation of a list of Return orders", "example": [ { "id": "1", "date": "2023-03-16", "documentNumber": "2023-000001", "tags": [], "customer": { "id": "1", "number": "K-000001" }, "salesOrder": { "id": "1" }, "status": "completed", "progress": "checked", "shippingMethod": { "id": "1", "name": "DHL" }, "project": { "id": "1", "name": "Standard Projekt" }, "bodyOutroduction": "testfreitest", "internalComment": "testintern" } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/returns/{id}": { "get": { "tags": [ "Return" ], "operationId": "return.view", "summary": "View return", "description": "Return details of an existing return", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "One return.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "id", "date", "salesOrder", "positions" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "date": { "type": "string", "nullable": true, "format": "date", "example": "2023-03-16", "description": "Date of creation of the Return order" }, "status": { "type": "string", "enum": [ "unknown", "open", "canceled", "completed", "sent", "created", "announced", "released", "checked", "done" ], "description": "Status of the Return order", "example": "completed" }, "progress": { "type": "string", "enum": [ "announced", "received", "checked", "done" ], "description": "Proress of the Return order", "example": "announced" }, "documentNumber": { "type": "string", "nullable": true, "example": "2023-000001", "description": "Internal identification of the Return order" }, "bodyOutroduction": { "type": "string", "description": "Free text for return note", "example": "Freitext" }, "internalComment": { "type": "string", "description": "Internal comment about the return.", "example": "Internal comment" }, "shippingMethod": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "description": "Shipping method used for the return note", "example": { "id": 1 } }, "project": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "description": "Project of return", "example": { "id": 2, "name": "B2C" } }, "salesOrder": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "quantity", "returnReason", "product", "salesOrderPosition" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double", "example": 14.5 }, "salesOrderPosition": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "product": { "type": "object", "additionalProperties": false, "required": [ "id", "number", "name" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "example": "SKU-700010" }, "name": { "type": "string", "example": "Product name" } } }, "returnReason": { "type": "object", "required": [ "designation" ], "properties": { "designation": { "type": "string", "nullable": true, "example": "Damaged" } } } } }, "description": "Items included within the Return order", "example": [ { "id": "1", "quantity": 3, "salesOrderPosition": { "id": "1" }, "product": { "id": "1", "number": "SKU-700010", "name": "Product name" }, "returnReason": { "designation": "Damaged" } } ] } }, "description": "Representation of a Return order", "example": { "id": "1", "date": "2023-03-16", "salesOrder": { "id": "1" }, "positions": [ { "id": "1", "quantity": 3, "salesOrderPosition": { "id": "1" }, "product": { "id": "1", "number": "SKU-700010", "name": "Product name" }, "returnReason": { "designation": "Damaged" } } ] } } } } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/returns/{id}/documents": { "post": { "tags": [ "Return" ], "operationId": "return.createDocument", "summary": "Create return document", "description": "Creates new return document", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order document create request payload", "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "keyword": { "type": "string", "enum": [ "otherFile", "coverPage", "attachment" ] }, "fileName": { "type": "string" }, "fileContent": { "type": "string", "description": "A base64 encoded document. Supported formats PDF", "format": "byte" } } }, "examples": { "Create product media": { "value": { "title": "Sales order document", "description": "Sales order document", "keyword": "otherFile", "fileName": "sample.pdf", "fileContent": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Return" ], "operationId": "return.updateMultiple", "summary": "Update multiple return documents", "description": "Updates multiple return documents", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order documents update multiple request payload", "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Update" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Document updated" }, "keyword": { "x-description-missing": true, "type": "string", "enum": [ "otherFile", "coverPage", "attachment" ], "example": "otherFile" }, "sort": { "x-description-missing": true, "type": "integer", "nullable": true, "example": 1 } } } }, "examples": { "Update multiple return documents": { "value": [ { "id": "52", "title": "Sales order document", "description": "Sales order document", "keyword": "attachment", "sort": 1 }, { "id": "53", "title": "Second return document", "description": "Second return document", "sort": 2 } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Return" ], "operationId": "return.deleteMultiple", "summary": "Delete multiple return documents", "description": "Deletes a multiple return documents", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order documents delete multiple request payload", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "examples": { "Delete multiple return documents": { "value": [ { "id": "52" }, { "id": "53" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Return" ], "operationId": "return.listDocument", "summary": "View return document list", "description": "Returns a list of given return documents", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "currentFileVersionId", "fileName" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "entity": { "x-description-missing": true, "type": "string", "example": "Return entity" }, "entityId": { "x-description-missing": true, "type": "integer", "example": 1 }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Return title" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "List of return document" }, "keyword": { "x-description-missing": true, "type": "string", "nullable": true, "example": "attachment" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "currentVersion": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "type": "integer" }, "remark": { "type": "string", "nullable": true }, "filename": { "type": "string" }, "size": { "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "integer" }, "unit": { "type": "string", "enum": [ "byte" ], "description": "Currently only byte as unit allowed." } } }, "updatedAt": { "type": "string", "format": "date-time" } }, "example": { "id": "45", "version": 2, "remark": "Updated document", "filename": "return_invoice_2024.pdf", "size": { "value": 1024, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2024-09-18T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/returns/{id}/documents/{documentId}": { "get": { "tags": [ "Return" ], "operationId": "return.viewDocument", "summary": "View return document", "description": "Returns details of a single return document", "parameters": [ { "name": "documentId", "in": "path", "description": "ID of document", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "entity": { "x-description-missing": true, "type": "string", "example": "Return entity" }, "entityId": { "x-description-missing": true, "type": "integer", "example": 12 }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Return title" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "List of return document" }, "keyword": { "x-description-missing": true, "type": "string", "nullable": true, "example": "attachment" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "versions": { "type": "array", "items": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "type": "integer" }, "remark": { "type": "string", "nullable": true }, "filename": { "type": "string" }, "size": { "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "integer" }, "unit": { "type": "string", "enum": [ "byte" ], "description": "Currently only byte as unit allowed." } } }, "updatedAt": { "type": "string", "format": "date-time" } }, "example": { "id": "45", "version": 2, "remark": "Updated document", "filename": "return_invoice_2024.pdf", "size": { "value": 1024, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } } }, "currentVersion": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "type": "integer" }, "remark": { "type": "string", "nullable": true }, "filename": { "type": "string" }, "size": { "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "integer" }, "unit": { "type": "string", "enum": [ "byte" ], "description": "Currently only byte as unit allowed." } } }, "updatedAt": { "type": "string", "format": "date-time" } }, "example": { "id": "45", "version": 2, "remark": "Updated document", "filename": "return_invoice_2024.pdf", "size": { "value": 1024, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2024-09-18T14:30:00Z" } }, "example": { "id": "17", "entity": "Return entity", "entityId": 12, "title": "Return title", "description": "List of return document", "keyword": "attachment", "sort": 1, "versions": [ { "id": "abc123", "version": 1, "remark": "Initial version of the document.", "filename": "document_v1.pdf", "size": { "value": 210, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } ], "currentVersion": { "id": "abc123", "version": 1, "remark": "Initial version of the document.", "filename": "document_v1.pdf", "size": { "value": 210, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" }, "updatedAt": "2024-09-18T14:30:00Z" } } } } }, "image/*": { "schema": { "type": "string", "format": "binary" } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/returns/{id}/actions/release": { "post": { "tags": [ "Return" ], "operationId": "return.actions.release", "summary": "Release a return", "description": "Releases a return.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." } } } }, "/api/v1/returns/{id}/goodsReceipts": { "post": { "tags": [ "Goods Receipt" ], "operationId": "return.goodsReceipt.create", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "summary": "Create a new goods receipt for a return", "description": "Creates a new goods receipt for a return.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "date": { "type": "string", "format": "date", "example": "2024-09-18" }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "product": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "quantity": { "type": "number", "format": "double", "example": 10.5 }, "returnPosition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "stockMovements": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "quantity": { "type": "number", "format": "double", "example": 5 }, "warehouse": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "storageLocation": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } }, "qualityControlAttributes": { "type": "object", "additionalProperties": false, "properties": { "quantity": { "type": "number", "format": "double", "example": 2.5 }, "batch": { "type": "string", "example": "Batch-123" }, "bestBeforeDate": { "type": "string", "format": "date", "example": "2025-01-01" }, "serialNumbers": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "number": { "type": "string", "example": "SN-123456789" } } } } } } } } } } } } } }, "examples": { "example": { "value": { "date": "2024-09-18", "positions": [ { "product": { "id": "product-1" }, "quantity": 10.5, "returnPosition": { "id": "return-1" }, "stockMovements": [ { "quantity": 5, "warehouse": { "id": "17" }, "storageLocation": { "id": "location-1" }, "qualityControlAttributes": { "quantity": 2.5, "batch": "Batch-123", "bestBeforeDate": "2025-01-01", "serialNumbers": [ { "number": "SN-123456789" } ] } } ] } ] } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/returnReasons": { "get": { "tags": [ "Return Reason" ], "operationId": "returnReason.list", "summary": "List of return reasons", "description": "Returns a list of return reasons", "parameters": [ { "name": "project", "style": "deepObject", "in": "query", "schema": { "type": "object", "additionalProperties": false, "description": "Project to optionally filter by", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, { "name": "language", "in": "query", "schema": { "type": "string", "description": "Language code, 2-letter ISO code." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "designation", "description", "language", "project" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "designation": { "type": "string", "example": "Broken packaging", "description": "Designation of the return reason" }, "description": { "type": "string", "example": "The boxes have been ripped off during transit", "description": "Description of the return reason" }, "language": { "type": "string", "example": "DE", "description": "Language in which the return reason is written" }, "project": { "type": "object", "required": [ "id" ], "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "description": "Project for the return reason", "example": { "id": "1" } } } }, "description": "Data representation of a list of return reasons", "example": [ { "id": "1", "designation": "Broken packaging", "description": "The boxes have been ripped off during transit", "language": "DE", "project": { "id": "1" } } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v1/salesOrders": { "get": { "tags": [ "Sales Order" ], "operationId": "salesOrder.list", "summary": "List sales orders", "description": "Returns a collection with all sales orders.", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "documentNumber" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "orderDate", "status", "documentNumber", "transactionNumber", "externalOrderNumber", "customerOrderNumber", "externalOrderId", "customerId", "customerNumber", "email", "zipCode", "shippingEmail", "shippingZip", "isBeingEdited", "subsequentDelivery", "shippingDateOk", "creditLimitOk", "shippingLockOk", "prepaidOk", "postageOk", "customerCheckOk", "vatOk", "stockOk", "internalComment", "shippingMethod", "autoShipping", "fastLane", "gln", "shippingGln", "project", "paymentMethod", "country", "phoneNumber", "shippingCountry", "desiredDeliveryDate" ] }, "op": { "type": "string", "enum": [ "greaterThan", "lessThan", "equals", "notEquals", "in", "notIn" ] }, "value": { "oneOf": [ { "type": "string", "description": "For dates use format: 2023-01-26T10:42:42+01:00 and encode as url. Valid statuses are created,released,canceled,completed.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "type": "string", "description": "Internal identification associated with a Sales Order", "example": "SO-1234" }, "isBeingEdited": { "type": "boolean", "description": "Indicates if the Sales Order is currently being edited", "example": false }, "shippingDateOk": { "type": "boolean", "description": "Indicates if the shipping date is ok", "example": false }, "creditLimitOk": { "type": "boolean", "description": "Indicates if the credit limit is ok", "example": false }, "subsequentDelivery": { "type": "boolean", "description": "Indicates if the Sales Order is a subsequent delivery", "example": false }, "shippingLockOk": { "type": "boolean", "description": "Indicates if the shipping lock is ok", "example": false }, "postageOk": { "type": "boolean", "description": "Indicates if the postage is ok", "example": false }, "customerCheckOk": { "type": "boolean", "description": "Indicates if the customer check is ok", "example": false }, "vatOk": { "type": "boolean", "description": "Indicates if the VAT is ok", "example": false }, "stockOk": { "type": "boolean", "description": "Indicates if the stock is ok", "example": false }, "prepaidOk": { "type": "boolean", "description": "Indicates if the prepaid status is ok", "example": false }, "externalOrderNumber": { "type": "string", "description": "External identification associated with a Sales Order", "example": "ESO-1234" }, "transactionNumber": { "type": "string", "description": "Transaction number associated with a Sales Order", "example": "transaction1" }, "customerOrderNumber": { "type": "string", "description": "Customer order associated with a Sales Order", "example": "customerOrder1" }, "externalOrderId": { "type": "string", "description": "External ID associated with a Sales Order", "example": "10" }, "bodyOutroduction": { "type": "string", "description": "Ending description message for Sales Order", "example": "Additional info" }, "date": { "type": "string", "format": "date", "description": "Date of creation of a Sales Order", "example": "2025-01-01" }, "netSales": { "type": "number", "format": "float", "description": "Net sales amount of the Sales Order", "example": 100 }, "total": { "type": "number", "format": "float", "description": "Total amount of the Sales Order", "example": 100 }, "desiredDeliveryDate": { "type": "string", "format": "date", "description": "Date of creation desired delivery date", "nullable": true, "example": "2025-01-01" }, "reservationDate": { "type": "string", "format": "date", "description": "Date of reservation", "nullable": true, "example": "2025-01-01" }, "desiredDeliveryDateAsCalendarWeek": { "type": "boolean", "description": "Indicating whether a calendar week should be printed on documents or the actual date) is readable and editable via API", "example": false }, "editor": { "type": "string", "description": "Creator of the Sales Order", "example": "Administrator1" }, "sales": { "type": "object", "description": "Represents a sales representative with associated attributes.", "additionalProperties": false, "properties": { "id": { "type": "number", "nullable": true }, "name": { "type": "string", "nullable": true } }, "example": { "id": 17, "name": "Jonas Tilles" } }, "status": { "type": "string", "enum": [ "completed", "created", "released", "canceled", "unknown" ], "description": "Status of the Sales Order", "example": "completed" }, "customer": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "nullable": true } }, "description": "Customer linked to a Sales Order", "example": { "id": "1" } }, "comment": { "type": "string", "description": "Comment included in the Sales Order", "example": "Comment" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "language": { "type": "object", "additionalProperties": false, "required": [ "iso2" ], "properties": { "iso2": { "type": "string", "description": "ISO 639-1 Code", "nullable": true } }, "description": "Language information for a Sales Order", "example": { "iso2": "DE" } }, "log": { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date-time", "nullable": true }, "createdBy": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } } } }, "description": "Logging information for the Sales Order", "example": { "createdAt": "2023-12-01 00:00:00", "createdBy": { "id": "1", "name": "User 1" } } }, "financials": { "type": "object", "additionalProperties": false, "required": [ "paymentMethod", "currency" ], "properties": { "paymentMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "currency": { "type": "string" }, "costCenter": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "number" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "nullable": true } }, "example": { "id": "1", "number": "1234" } }, "billingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "country" ], "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "title": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "fax": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "phoneNumber": { "type": "string" }, "salutation": { "type": "string" }, "email": { "type": "string", "format": "email" } } }, "tax": { "type": "object", "additionalProperties": false, "properties": { "taxation": { "type": "string", "enum": [ "domestic", "eu", "export", "taxfreedomestic" ] }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string", "enum": [ "gross", "net", "auto" ] }, "noTaxInfoText": { "type": "boolean" }, "normalTaxRate": { "type": "number", "format": "float" }, "reducedTaxRate": { "type": "number", "format": "float" } } }, "paymentTerms": { "type": "object", "additionalProperties": false, "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "integer", "format": "int64" }, "paymentTargetDiscountDays": { "type": "integer", "format": "int64" } } } }, "description": "Financial information for a Sales Order", "example": { "paymentMethod": { "id": "3" }, "currency": "EUR" } }, "delivery": { "allOf": [ { "type": "object", "properties": { "autoShipping": { "type": "boolean" }, "fastLane": { "type": "boolean" }, "shippingCosts": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "shippingCostProduct", "quantity" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "shippingCostProduct": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When importing a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When importing a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } } }, "storageCountry": { "type": "string", "nullable": true, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use storageCountry for external fulfillment without delivery notes to set the country of fulfillment. If using delivery notes, do not use storageCountry." }, "preferredWarehouse": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "nullable": false } }, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use preferredWarehouse for fulfillment with delivery notes to define which warehouse should be used." }, "shippingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "city", "country", "zipCode", "street" ], "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "department": { "type": "string" }, "contactPerson": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "email": { "type": "string", "format": "email" } } } } }, { "type": "object", "properties": { "email": { "type": "string", "format": "email" }, "conditions": { "type": "string" } } } ], "description": "Delivery information for the Sales Order", "example": { "autoShipping": true, "fastLane": true, "shippingMethod": { "id": "1" }, "shippingCosts": [ { "id": "1", "quantity": 3, "shippingCostProduct": { "id": "1" } } ], "email": "user.email@email.org", "conditions": "none" } } } }, "description": "Response data containing list of Sales Orders", "example": [ { "id": "1", "documentNumber": "SO1", "externalOrderNumber": "ES01", "transactionNumber": "transaction1", "customerOrderNumber": "customerOrder1", "externalOrderId": "10", "bodyOutroduction": "body", "date": "2024-01-01", "netSales": 620, "total": 737.8, "desiredDeliveryDate": "2022-12-05", "reservationDate": "2022-12-05", "desiredDeliveryDateAsCalendarWeek": false, "editor": "Administrator1", "sales": { "id": 17, "name": "Jonas Tilles" }, "status": "created", "isBeingEdited": false, "subsequentDelivery": false, "shippingDateOk": true, "creditLimitOk": true, "shippingLockOk": true, "prepaidOk": true, "postageOk": true, "customerCheckOk": true, "vatOk": true, "stockOk": true, "customer": { "id": "1" }, "comment": "Additional comments", "project": { "id": "1" }, "language": { "iso2": "DE" }, "log": { "createdAt": "2023-12-01 00:00:00", "createdBy": { "id": "1", "name": "User 1" } }, "financials": { "paymentMethod": { "id": "3" }, "currency": "EUR", "costCenter": { "id": "1", "number": "1234" }, "billingAddress": { "type": "mr", "name": "John Doe", "department": "", "subDepartment": "", "street": "Musterstrasse 6", "zipCode": "12345", "city": "Musterdorf", "state": "", "country": "DE", "title": "", "contactPerson": "", "addressSupplement": "", "fax": "0821123456790", "email": "info@xentral.com", "salutation": "", "gln": "", "phoneNumber": "0123456789" } }, "delivery": { "autoShipping": true, "fastLane": true, "shippingCosts": [ { "id": "1", "quantity": 3, "shippingCostProduct": { "id": "1" } } ], "preferredWarehouse": { "id": "1" }, "storageCountry": "DE", "email": "user.email@email.org", "conditions": "none" } } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } }, "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "type": "string", "description": "Internal identification associated with a Sales Order", "example": "SO-1234" }, "date": { "type": "string", "description": "Date of creation of a Sales Order", "example": "2025-01-01" }, "status": { "type": "string", "enum": [ "completed", "created", "released", "canceled", "unknown" ], "description": "Status of the Sales Order", "example": "completed" } }, "description": "Minimal representation of a Sales Order", "example": { "id": "1", "documentNumber": "SO1", "date": "2025-01-01", "status": "completed" } }, "description": "Response data containing list with minimal information of Sales Orders", "example": [ { "id": "1", "documentNumber": "SO1", "date": "2025-01-01", "status": "completed" } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/salesOrders/actions/import": { "post": { "tags": [ "Sales Order" ], "operationId": "salesOrder.import", "summary": "Import sales order", "description": "Import a sales order from external marketplace", "requestBody": { "description": "Sales order import request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "date", "customer", "project", "financials", "delivery", "positions" ], "properties": { "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true }, "reservationDate": { "type": "string", "format": "date", "nullable": true }, "desiredDeliveryDateAsCalendarWeek": { "type": "boolean", "description": "Flag indicating whether a calendar week should be printed on documents" }, "editor": { "type": "string", "description": "Creator of the Sales Order" }, "salesRepresentativeId": { "type": "integer", "description": "The ID of the sales representative" }, "date": { "type": "string", "format": "date" }, "externalOrderNumber": { "type": "string", "description": "Customer-facing sales order number in the originating shop system / platform (e.g. Shopify, Amazon, etc)" }, "externalOrderId": { "type": "string", "description": "technical sales order ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync status updates & tracking info back to the originating shop / platform" }, "transactionNumber": { "type": "string", "description": "transaction number typically used to identify payment transactions in the originating shop system / platforms (e.g. Shopify, Amazon, etc). This ID is typically used for financial reconciliation of payment transactions with sales orders / invoices in Xentral." }, "customerOrderNumber": { "type": "string", "description": "Purchase Order number from the customer’s purchase order system, typically used in B2B context." }, "autoCreateDocuments": { "type": "string", "enum": [ "deliveryNote+invoice", "deliveryNote", "invoice" ], "description": "Sets documents created by autoshippment." }, "vatCheck": { "type": "boolean", "description": "Sets whether the provided VAT-ID has been checked already and is considered valid." }, "bodyIntroduction": { "type": "string", "description": "Text displayed on the PDF print-out above the positions table. Rich-Text capable." }, "bodyOutroduction": { "type": "string", "description": "Text displayed on the PDF print-out below the positions table. Rich-Text capable." }, "internalDesignation": { "type": "string", "description": "Internal designation which is also displayed as grey text in the sales order list in the application. Unformatted string only." }, "comment": { "type": "string", "description": "Internal comment. Rich-Text capable." }, "tags": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "customer": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesChannel": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "language": { "type": "object", "additionalProperties": false, "required": [ "iso2" ], "properties": { "iso2": { "type": "string", "description": "ISO 639-1 Code", "nullable": true } }, "description": "Language information for a Sales Order", "example": { "iso2": "DE" } }, "financials": { "type": "object", "additionalProperties": false, "required": [ "paymentMethod", "currency" ], "properties": { "paymentMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "currency": { "type": "string" }, "costCenter": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "number" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "nullable": true } }, "example": { "id": "1", "number": "1234" } }, "billingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "country" ], "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "title": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "fax": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "phoneNumber": { "type": "string" }, "salutation": { "type": "string" }, "email": { "type": "string", "format": "email" } } }, "tax": { "type": "object", "additionalProperties": false, "properties": { "taxation": { "type": "string", "enum": [ "domestic", "eu", "export", "taxfreedomestic" ] }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string", "enum": [ "gross", "net", "auto" ] }, "noTaxInfoText": { "type": "boolean" }, "normalTaxRate": { "type": "number", "format": "float" }, "reducedTaxRate": { "type": "number", "format": "float" } } }, "paymentTerms": { "type": "object", "additionalProperties": false, "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "integer", "format": "int64" }, "paymentTargetDiscountDays": { "type": "integer", "format": "int64" } } } }, "description": "Financial information for a Sales Order", "example": { "paymentMethod": { "id": "3" }, "currency": "EUR" } }, "delivery": { "allOf": [ { "type": "object", "properties": { "autoShipping": { "type": "boolean" }, "fastLane": { "type": "boolean" }, "shippingCosts": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "shippingCostProduct", "quantity" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "shippingCostProduct": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When importing a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When importing a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } } }, "storageCountry": { "type": "string", "nullable": true, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use storageCountry for external fulfillment without delivery notes to set the country of fulfillment. If using delivery notes, do not use storageCountry." }, "preferredWarehouse": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "nullable": false } }, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use preferredWarehouse for fulfillment with delivery notes to define which warehouse should be used." }, "shippingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "city", "country", "zipCode", "street" ], "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "department": { "type": "string" }, "contactPerson": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "email": { "type": "string", "format": "email" } } } } }, { "type": "object", "required": [ "shippingMethod" ], "properties": { "shippingMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "deliveryTerms": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, { "type": "object", "properties": { "storageCountry": { "type": "string", "nullable": true, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use storageCountry for external fulfillment without delivery notes to set the country of fulfillment. If using delivery notes, do not use storageCountry." } } }, { "type": "object", "properties": { "preferredWarehouse": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "nullable": false } }, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use preferredWarehouse for fulfillment with delivery notes to define which warehouse should be used." } } } ] }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "product", "quantity" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "product": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When editing/creating a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When editing/creating a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" }, "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true }, "desiredDeliveryDateAsCalendarWeek": { "type": "boolean", "description": "Flag indicating whether a calendar week should be printed on documents" } } } }, "discountPositions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "discountProduct", "quantity" ], "properties": { "quantity": { "type": "number", "format": "double" }, "discountProduct": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When editing/creating a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When editing/creating a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "value": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } } }, "setTotalAmount": { "type": "object", "nullable": true, "properties": { "isActive": { "type": "boolean", "description": "isActive" }, "maximumDifferenceToCalculatedSum": { "type": "number", "format": "float", "description": "maximumDifferenceToCalculatedSum" }, "totalGrossAmountFromExternal": { "type": "number", "format": "float", "description": "totalGrossAmountFromExternal" } } } } }, "examples": { "Import sales order": { "value": { "date": "2023-12-01", "desiredDeliveryDate": "2023-11-11", "reservationDate": "2023-11-12", "editor": "Administrator1", "desiredDeliveryDateAsCalendarWeek": false, "salesRepresentativeId": 1, "externalOrderNumber": "120013", "externalOrderId": "453894034", "customer": { "id": "394" }, "project": { "id": "4" }, "salesChannel": { "id": "3" }, "language": { "iso2": "de" }, "financials": { "paymentMethod": { "id": "1" }, "currency": "EUR", "billingAddress": { "type": "mrs", "name": "Jane Doe", "street": "Musterstraße 1", "zipCode": "12345", "city": "Musterstadt", "country": "DE" }, "tax": { "taxation": "domestic", "taxDisplay": "gross" } }, "delivery": { "autoShipping": true, "fastLane": false, "shippingAddress": { "type": "mrs", "name": "Jane Doe", "street": "Musterstraße 1", "zipCode": "12345", "city": "Musterstadt", "country": "DE" }, "shippingMethod": { "id": "4" }, "shippingCosts": [ { "shippingCostProduct": { "id": "453" }, "quantity": 1 } ], "storageCountry": "DE" }, "positions": [ { "product": { "id": "241" }, "quantity": 1, "price": { "amount": "10.00", "currency": "EUR" }, "tax": { "taxText": "19% MwSt.", "vatCategory": "normal" }, "webId": "2395028", "desiredDeliveryDate": "2027-07-17", "desiredDeliveryDateAsCalendarWeek": true }, { "product": { "id": "494" }, "quantity": 4, "price": { "amount": "20.00", "currency": "EUR" }, "discount": 10, "tax": { "taxText": "7% MwSt.", "vatCategory": "reduced" }, "webId": "2395029", "desiredDeliveryDate": "2028-07-17", "desiredDeliveryDateAsCalendarWeek": true } ], "setTotalAmount": { "isActive": true, "maximumDifferenceToCalculatedSum": 0.05, "totalGrossAmountFromExternal": 170.34 } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." } } } }, "/api/v1/salesOrders/{id}/actions/dispatch": { "post": { "tags": [ "Sales Order" ], "operationId": "salesOrder.actions.dispatch", "summary": "Dispatch a released sales order", "description": "Dispatch a released sales order, if it fulfills all requirements", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/salesOrders/{id}/actions/cancel": { "post": { "tags": [ "Sales Order" ], "operationId": "salesOrder.actions.cancel", "summary": "Cancel a sales order", "description": "Cancels a sales order. Only sales orders in status 'created' or 'completed' can be canceled. For draft sales orders use the delete endpoint.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order documents delete multiple request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "notifyCustomer": { "type": "boolean", "nullable": true } } }, "examples": { "Cancel sales order with notification email sent to customer": { "value": { "notifyCustomer": true } } } }, "application/x-www-form-urlencoded": { "examples": { "Cancel sales order without body": { "value": {} } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/salesOrders/{id}": { "get": { "tags": [ "Sales Order" ], "operationId": "salesOrder.view", "summary": "View sales order", "description": "Returns details of a sales order", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "type": "string", "description": "Internal identification associated with a Sales Order", "example": "SO-1234" }, "externalOrderNumber": { "type": "string", "description": "External identification associated with a Sales Order", "example": "ESO-1234" }, "transactionNumber": { "type": "string", "description": "Transaction number associated with a Sales Order", "example": "transaction1" }, "customerOrderNumber": { "type": "string", "description": "Customer order associated with a Sales Order", "example": "customerOrder1" }, "externalOrderId": { "type": "string", "description": "External ID associated with a Sales Order", "example": "10" }, "salesChannel": { "description": "Represents a sales channel as a reference to another resource. This object can be null and contains an identifier and an optional name.", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "nullable": true } }, "example": { "id": "1337" } }, "bodyIntroduction": { "type": "string", "description": "Initial description message for Sales Order", "example": "Initial info" }, "bodyOutroduction": { "type": "string", "description": "Ending description message for Sales Order", "example": "Additional info" }, "internalDesignation": { "type": "string", "description": "Internal designation for Sales Order", "example": "InternalSO1" }, "date": { "type": "string", "format": "date", "description": "Date of creation of a Sales Order", "example": "2025-01-01" }, "earliestFulfillmentDate": { "type": "string", "format": "date", "nullable": true, "description": "Earliest Fulfillment Date", "example": "2024-01-01" }, "desiredDeliveryDate": { "type": "string", "format": "date", "nullable": true, "description": "Desired Delivery Date for the Sales Order", "example": "2025-01-01" }, "desiredDeliveryDateCw": { "type": "boolean", "description": "Flag indicating whether a calendar week should be printed on documents", "example": true }, "reservationDate": { "type": "string", "format": "date", "nullable": true, "description": "Reservation Date for the Sales Order", "example": "2025-01-01" }, "editor": { "type": "string", "description": "Creator of the Sales Order", "example": "Administrator1" }, "sales": { "type": "object", "description": "Represents a sales representative with associated attributes.", "additionalProperties": false, "properties": { "id": { "type": "number", "nullable": true }, "name": { "type": "string", "nullable": true } }, "example": { "id": 17, "name": "Jonas Tilles" } }, "status": { "type": "string", "enum": [ "completed", "created", "released", "canceled", "unknown" ], "description": "Status of the Sales Order", "example": "completed" }, "customer": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "nullable": true } }, "description": "Customer linked to a Sales Order", "example": { "id": "1" } }, "comment": { "type": "string", "description": "Comment included in the Sales Order", "example": "Comment" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "language": { "type": "object", "additionalProperties": false, "required": [ "iso2" ], "properties": { "iso2": { "type": "string", "description": "ISO 639-1 Code", "nullable": true } }, "description": "Language information for a Sales Order", "example": { "iso2": "DE" } }, "autoCreateDocuments": { "type": "string", "enum": [ "deliveryNote+invoice", "deliveryNote", "invoice" ], "description": "Sets documents created by autoshippment.", "example": "deliveryNote+invoice" }, "log": { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date-time", "nullable": true, "example": "2023-12-01T00:00:00Z" }, "createdBy": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "example": "User 1" }, "email": { "type": "string", "format": "email", "example": "user1@example.com" } } } }, "description": "Logging information for the Sales Order", "example": { "createdAt": "2023-12-01T00:00:00Z", "createdBy": { "id": "1", "name": "User 1" } } }, "financials": { "type": "object", "additionalProperties": false, "required": [ "paymentMethod", "currency" ], "properties": { "paymentMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "currency": { "type": "string" }, "costCenter": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "number" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "nullable": true } }, "example": { "id": "1", "number": "1234" } }, "billingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "country" ], "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "title": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "fax": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "phoneNumber": { "type": "string" }, "salutation": { "type": "string" }, "email": { "type": "string", "format": "email" } } }, "tax": { "type": "object", "additionalProperties": false, "properties": { "taxation": { "type": "string", "enum": [ "domestic", "eu", "export", "taxfreedomestic" ] }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string", "enum": [ "gross", "net", "auto" ] }, "noTaxInfoText": { "type": "boolean" }, "normalTaxRate": { "type": "number", "format": "float" }, "reducedTaxRate": { "type": "number", "format": "float" } } }, "paymentTerms": { "type": "object", "additionalProperties": false, "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "integer", "format": "int64" }, "paymentTargetDiscountDays": { "type": "integer", "format": "int64" } } } }, "description": "Financial information for a Sales Order", "example": { "paymentMethod": { "id": "3" }, "currency": "EUR" } }, "delivery": { "allOf": [ { "type": "object", "properties": { "autoShipping": { "type": "boolean" }, "fastLane": { "type": "boolean" }, "shippingCosts": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "shippingCostProduct", "quantity" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "shippingCostProduct": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When importing a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When importing a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } } }, "storageCountry": { "type": "string", "nullable": true, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use storageCountry for external fulfillment without delivery notes to set the country of fulfillment. If using delivery notes, do not use storageCountry." }, "preferredWarehouse": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "nullable": false } }, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use preferredWarehouse for fulfillment with delivery notes to define which warehouse should be used." }, "shippingAddress": { "type": "object", "additionalProperties": false, "required": [ "name", "city", "country", "zipCode", "street" ], "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "department": { "type": "string" }, "contactPerson": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "email": { "type": "string", "format": "email" } } } } }, { "type": "object", "required": [ "shippingMethod" ], "properties": { "shippingMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "deliveryTerms": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "email": { "type": "string", "format": "email", "example": "user.email@email.org" }, "conditions": { "type": "string", "example": "none" }, "preferredWarehouse": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "nullable": true } }, "description": "Only use preferredWarehouse OR storageCountry. You cannot use both at the same time. Use preferredWarehouse for fulfillment with delivery notes to define which warehouse should be used." }, "storageCountry": { "type": "string", "nullable": true, "description": "storageCountry", "example": "DE" } } } ], "description": "Delivery information for the Sales Order", "example": { "autoShipping": true, "fastLane": true, "shippingMethod": { "id": "1" }, "shippingCosts": [ { "id": "1", "quantity": 3, "shippingCostProduct": { "id": "1" } } ], "preferredWarehouse": { "id": "2" }, "storageCountry": "DE", "email": "user.email@email.org", "conditions": "none" } }, "tags": { "type": "array", "items": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "type": "string", "nullable": true }, "title": { "type": "string", "nullable": true } } }, "description": "Tags associated with the Sales Order", "example": [ { "id": "1" } ] }, "netSales": { "type": "object", "additionalProperties": false, "description": "This contains amount with currency.", "properties": { "amount": { "type": "string", "format": "float", "description": "The total net sales amount.", "example": "0.00" }, "currency": { "type": "string", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "The currency of the net sales amount.", "example": "USD" } }, "required": [ "amount", "currency" ], "example": { "amount": "0.00", "currency": "USD" } }, "total": { "type": "object", "description": "This contains total with currency", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float", "description": "The total amount including taxes and fees.", "example": "737.80" }, "currency": { "type": "string", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "The currency of the total amount.", "example": "EUR" } }, "required": [ "amount", "currency" ], "example": { "amount": "737.80", "currency": "EUR" } }, "positions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "quantity", "sort", "product", "hasChildren", "parent" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "sort": { "type": "integer", "example": 12 }, "hasChildren": { "type": "boolean", "description": "Whether a position has children", "example": false }, "parent": { "type": "string", "pattern": "\\d+", "nullable": true, "description": "An id reference to the parent of the current position, null when position is not a child", "example": "1430" }, "comment": { "type": "string" }, "product": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "effectiveVatRate": { "type": "number", "format": "float", "description": "The final VAT on a position. Calculated based on other fields. Only supported on the view endpoint and is always returned" }, "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When importing a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When importing a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "netRevenueSingle": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float", "nullable": true }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "netRevenueTotal": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float", "nullable": true }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "grossRevenueSingle": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float", "nullable": true }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "grossRevenueTotal": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float", "nullable": true }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } }, "description": "Items included within the Sales Order" } }, "description": "Representation of a Sales Order", "example": { "id": "1", "documentNumber": "SO1", "externalOrderNumber": "ES01", "transactionNumber": "transaction1", "customerOrderNumber": "customerOrder1", "externalOrderId": "10", "salesChannel": { "id": "1" }, "bodyIntroduction": "intro", "bodyOutroduction": "outro", "internalDesignation": "InternalSO1", "date": "2024-01-01", "status": "created", "customer": { "id": "1" }, "comment": "Additional comments", "project": { "id": "1" }, "language": { "iso2": "DE" }, "log": { "createdAt": "2023-12-01T00:00:00Z", "createdBy": { "id": "1", "name": "User 1", "email": "user1@example.com" } }, "financials": { "paymentMethod": { "id": "3" }, "currency": "EUR", "costCenter": { "id": "1", "number": "1234" } }, "delivery": { "autoShipping": true, "fastLane": true, "shippingMethod": { "id": "1" }, "shippingCosts": [ { "id": "1", "quantity": 3, "shippingCostProduct": { "id": "1" } } ], "preferredWarehouse": { "id": "2" }, "storageCountry": "DE", "email": "user.email@email.org", "conditions": "none" }, "tags": [ { "id": "1" } ], "netSales": { "amount": "620.00", "currency": "EUR" }, "total": { "amount": "737.80", "currency": "EUR" }, "positions": [ { "id": "1402", "sort": 12, "hasChildren": false, "parent": null, "product": { "id": "1" }, "quantity": 5 } ] } } } } }, "application/vnd.xentral.minimal+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "documentNumber": { "type": "string", "description": "Internal identification associated with a Sales Order", "example": "SO-1234" }, "date": { "type": "string", "description": "Date of creation of a Sales Order", "example": "2025-01-01" }, "status": { "type": "string", "enum": [ "completed", "created", "released", "canceled", "unknown" ], "description": "Status of the Sales Order", "example": "completed" } }, "description": "Minimal representation of a Sales Order", "example": { "id": "1", "documentNumber": "SO1", "date": "2025-01-01", "status": "completed" } } } } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Sales Order" ], "operationId": "salesOrder.update", "summary": "Update existing sales order", "description": "CAUTION: Positions not specified in the payload will be DELETED. Please pass the ids along if you need them to be preserved.

The sales order edit endpoint allows for updating an existing sales order. When updating, any positions not included in the positions payload will be implicitly deleted from the order. This ensures that the positions list in the payload accurately reflects the desired state of the sales order after the update.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order edit request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "date": { "type": "string", "format": "date" }, "earliestFulfillmentDate": { "type": "string", "format": "date", "nullable": true }, "externalOrderNumber": { "type": "string", "description": "Customer-facing sales order number in the originating shop system / platform (e.g. Shopify, Amazon, etc)" }, "externalOrderId": { "type": "string", "description": "technical sales order ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync status updates & tracking info back to the originating shop / platform" }, "transactionNumber": { "type": "string", "description": "transaction number typically used to identify payment transactions in the originating shop system / platforms (e.g. Shopify, Amazon, etc). This ID is typically used for financial reconciliation of payment transactions with sales orders / invoices in Xentral." }, "customerOrderNumber": { "type": "string", "description": "Purchase Order number from the customer’s purchase order system, typically used in B2B context." }, "autoCreateDocuments": { "type": "string", "enum": [ "deliveryNote+invoice", "deliveryNote", "invoice" ], "description": "Sets documents created by autoshippment." }, "bodyIntroduction": { "type": "string", "description": "Text displayed on the PDF print-out above the positions table. Rich-Text capable." }, "bodyOutroduction": { "type": "string", "description": "Text displayed on the PDF print-out below the positions table. Rich-Text capable." }, "internalDesignation": { "type": "string", "description": "Internal designation which is also displayed as grey text in the sales order list in the application. Unformatted string only." }, "comment": { "type": "string", "description": "Internal comment. Rich-Text capable." }, "tags": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "customer": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "salesChannel": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "language": { "type": "object", "additionalProperties": false, "required": [ "iso2" ], "properties": { "iso2": { "type": "string", "description": "ISO 639-1 Code", "nullable": true } }, "description": "Language information for a Sales Order", "example": { "iso2": "DE" } }, "financials": { "type": "object", "additionalProperties": false, "properties": { "paymentMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "currency": { "type": "string" }, "costCenter": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id", "number" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "number": { "type": "string", "nullable": true } }, "example": { "id": "1", "number": "1234" } }, "billingAddress": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "contactPerson": { "type": "string" }, "department": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "salutation": { "type": "string" }, "email": { "type": "string", "format": "email" } } }, "tax": { "type": "object", "additionalProperties": false, "properties": { "taxation": { "type": "string", "enum": [ "domestic", "eu", "export", "taxfreedomestic" ] }, "vatId": { "type": "string" }, "taxDisplay": { "type": "string", "enum": [ "gross", "net", "auto" ] }, "noTaxInfoText": { "type": "boolean" }, "normalTaxRate": { "type": "number", "format": "float" }, "reducedTaxRate": { "type": "number", "format": "float" } } }, "paymentTerms": { "type": "object", "additionalProperties": false, "properties": { "paymentTargetDiscount": { "type": "number", "format": "float" }, "paymentTargetDays": { "type": "integer", "format": "int64" }, "paymentTargetDiscountDays": { "type": "integer", "format": "int64" } } } }, "description": "Financial information for a Sales Order to update", "example": { "paymentMethod": { "id": "3" }, "currency": "EUR" } }, "delivery": { "type": "object", "additionalProperties": false, "properties": { "autoShipping": { "type": "boolean" }, "fastLane": { "type": "boolean" }, "shippingCosts": { "type": "array", "items": { "type": "object", "description": "CAUTION: shipping cost positions not included in the payload will be DELETED.
If you want to retain specific shipping cost positions, please provide their ids.


Any parameters or retained shipping cost position objects that are not provided in the payload remain unchanged.

If you don't include the shippingCosts parameter at all, all existing shipping cost positions will remain unchanged.", "anyOf": [ { "type": "object", "additionalProperties": false, "required": [ "shippingCostProduct", "quantity" ], "properties": { "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "shippingCostProduct": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When importing a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When importing a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } }, { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "shippingCostProduct": { "type": "object", "additionalProperties": false, "description": "Whenever a Sales Order Position is being updated, the product used in it cannot be updated. If a different product wants to be used, the position will need to be removed and a new one using the new product will need to be created.", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When importing a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When importing a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } } ] } }, "storageCountry": { "type": "string", "nullable": true, "description": "Use storageCountry for external fulfillment without delivery notes to set the country of fulfillment. If using delivery notes, do not use storageCountry." }, "preferredWarehouse": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "nullable": false } }, "description": "Use preferredWarehouse for fulfillment with delivery notes to define which warehouse should be used." }, "shippingAddress": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "mr", "mrs", "company", "other" ] }, "name": { "type": "string" }, "department": { "type": "string" }, "contactPerson": { "type": "string" }, "subDepartment": { "type": "string" }, "street": { "type": "string" }, "zipCode": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "addressSupplement": { "type": "string" }, "gln": { "type": "string" }, "email": { "type": "string", "format": "email" } } }, "shippingMethod": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "deliveryTerms": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "positions": { "type": "array", "description": "CAUTION: Positions not included in the payload will be DELETED.
If you want to retain specific positions, please provide their ids.


Any parameters of retained position objects that are not provided in the payload remain unchanged.

If you don't include the positions parameter at all, all existing positions will remain unchanged.", "items": { "type": "object", "anyOf": [ { "type": "object", "additionalProperties": false, "required": [ "product", "quantity" ], "properties": { "quantity": { "type": "number", "format": "float" }, "comment": { "type": "string" }, "product": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When editing/creating a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When editing/creating a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" }, "desiredDeliveryDate": { "type": "string", "format": "date", "description": "Date of creation desired delivery date", "nullable": true, "example": "2025-01-01" }, "desiredDeliveryDateAsCalendarWeek": { "type": "boolean", "description": "Indicating whether a calendar week should be printed on documents or the actual date) is readable and editable via API", "example": false } } }, { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "comment": { "type": "string" }, "product": { "type": "object", "additionalProperties": false, "description": "Whenever a Sales Order Position is being updated, the product used in it cannot be updated. If a different product wants to be used, the position will need to be removed and a new one using the new product will need to be created.", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When editing/creating a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When editing/creating a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "price": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "discount": { "type": "number", "format": "float", "description": "percentage discount to be applied to the position, expressed as a decimal value (0.15 = 15% discount)" }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" }, "desiredDeliveryDate": { "type": "string", "format": "date", "description": "Date of creation desired delivery date", "nullable": true, "example": "2025-01-01" }, "desiredDeliveryDateAsCalendarWeek": { "type": "boolean", "description": "Indicating whether a calendar week should be printed on documents or the actual date) is readable and editable via API", "example": false } } } ] } }, "discountPositions": { "type": "array", "description": "CAUTION: Discount positions not included in the payload will be DELETED.
If you want to retain specific discount positions, please provide their ids.


Any parameters or retained discount position objects that are not provided in the payload remain unchanged.

If you don't include the discountPositions parameter at all, all existing discount positions will remain unchanged.", "items": { "type": "object", "anyOf": [ { "type": "object", "additionalProperties": false, "required": [ "discountProduct", "quantity" ], "properties": { "quantity": { "type": "number", "format": "double" }, "discountProduct": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "required": [ "taxText" ], "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When editing/creating a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When editing/creating a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "value": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } }, { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "quantity": { "type": "number", "format": "double" }, "discountProduct": { "type": "object", "additionalProperties": false, "description": "Whenever a Sales Order Position is being updated, the product used in it cannot be updated. If a different product wants to be used, the position will need to be removed and a new one using the new product will need to be created.", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "freeFields": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "value" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "type": "string" } } } }, "number": { "type": "string", "nullable": true } } }, "tax": { "type": "object", "properties": { "vatCategory": { "type": "string", "nullable": true, "enum": [ "reduced", "normal", "exempt" ], "description": "VAT category. When editing/creating a position only one of `rate` or `vatCategory` must be used.", "example": "reduced" }, "rate": { "type": "number", "format": "float", "example": 0.5, "nullable": true, "description": "VAT rate. When editing/creating a position only one of `rate` or `vatCategory` must be used." }, "taxText": { "type": "string", "example": "Tax Text", "nullable": true, "description": "Tax Text" } } }, "value": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "string", "format": "float" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } }, "webId": { "type": "string", "description": "technical position ID in the originating shop system / platform (e.g. Shopify, Amazon, etc). This ID is used to sync info back to the originating shop / platform" } } } ] } }, "vatCheck": { "type": "boolean", "description": "Text displayed on the PDF." } } }, "examples": { "Update sales order": { "value": { "date": "2023-12-01", "earliestFulfillmentDate": "2022-12-05", "externalOrderNumber": "120013", "externalOrderId": "453894034", "customer": { "id": "394" }, "project": { "id": "4" }, "salesChannel": { "id": "3" }, "language": { "iso2": "de" }, "financials": { "paymentMethod": { "id": "1" }, "currency": "EUR", "billingAddress": { "type": "mrs", "name": "Jane Doe", "street": "Musterstraße 1", "zipCode": "12345", "city": "Musterstadt", "country": "DE" }, "tax": { "taxation": "domestic", "taxDisplay": "gross" } }, "delivery": { "autoShipping": true, "fastLane": false, "shippingAddress": { "type": "mrs", "name": "Jane Doe", "street": "Musterstraße 1", "zipCode": "12345", "city": "Musterstadt", "country": "DE" }, "shippingMethod": { "id": "4" }, "storageCountry": "DE", "shippingCosts": [ { "shippingCostProduct": { "id": "453" }, "quantity": 1 } ] }, "positions": [ { "product": { "id": "241" }, "quantity": 1, "price": { "amount": "10.00", "currency": "EUR" }, "tax": { "taxText": "19% MwSt.", "vatCategory": "normal" }, "webId": "2395028", "desiredDeliveryDate": "2023-11-11", "desiredDeliveryDateAsCalendarWeek": false }, { "product": { "id": "494" }, "quantity": 4, "price": { "amount": "20.00", "currency": "EUR" }, "discount": 10, "tax": { "taxText": "7% MwSt.", "vatCategory": "reduced" }, "webId": "2395029", "desiredDeliveryDate": "2023-11-11", "desiredDeliveryDateAsCalendarWeek": false } ], "vatCheck": false } }, "Update sales order with different positions": { "value": { "date": "2023-12-01", "earliestFulfillmentDate": "2022-12-05", "externalOrderNumber": "120013", "customer": { "id": "394" }, "project": { "id": "4" }, "salesChannel": { "id": "3" }, "language": { "iso2": "de" }, "financials": { "paymentMethod": { "id": "1" }, "currency": "EUR", "billingAddress": { "type": "mrs", "name": "Jane Doe", "street": "Musterstraße 1", "zipCode": "12345", "city": "Musterstadt", "country": "DE" }, "tax": { "taxation": "domestic", "taxDisplay": "gross" } }, "delivery": { "autoShipping": true, "fastLane": false, "shippingAddress": { "type": "mrs", "name": "Jane Doe", "street": "Musterstraße 1", "zipCode": "12345", "city": "Musterstadt", "country": "DE" }, "shippingMethod": { "id": "4" }, "preferredWarehouse": { "id": "1" }, "shippingCosts": [ { "id": "2", "shippingCostProduct": { "name": "update shipping Cost Product" }, "quantity": 1 } ] }, "positions": [ { "id": "1", "quantity": 1, "price": { "amount": "10.00", "currency": "EUR" }, "tax": { "taxText": "19% MwSt.", "vatCategory": "normal" }, "webId": "2395028", "desiredDeliveryDate": "2023-11-11", "desiredDeliveryDateAsCalendarWeek": false }, { "product": { "id": "494" }, "quantity": 4, "price": { "amount": "20.00", "currency": "EUR" }, "discount": 10, "tax": { "taxText": "7% MwSt.", "vatCategory": "reduced" }, "webId": "2395029", "desiredDeliveryDate": "2023-11-11", "desiredDeliveryDateAsCalendarWeek": false } ], "discountPositions": [ { "id": "3", "quantity": 1 } ] } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." } } }, "delete": { "tags": [ "Sales Order" ], "operationId": "salesOrder.delete", "summary": "Delete draft sales order", "description": "Deletes a sales order in draft status", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/salesOrders/{id}/documents": { "post": { "tags": [ "Sales Order" ], "operationId": "salesOrder.createDocument", "summary": "Create sales order document", "description": "Creates new sales order document", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order document create request payload", "content": { "application/json": { "schema": { "type": "object", "properties": { "title": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "keyword": { "type": "string", "enum": [ "otherFile", "coverPage", "attachment" ] }, "fileName": { "type": "string" }, "fileContent": { "type": "string", "description": "A base64 encoded document. Supported formats PDF", "format": "byte" } } }, "examples": { "Create product media": { "value": { "title": "Sales order document", "description": "Sales order document", "keyword": "otherFile", "fileName": "sample.pdf", "fileContent": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Sales Order" ], "operationId": "salesOrder.updateMultiple", "summary": "Update multiple sales order documents", "description": "Updates multiple sales order documents", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order documents update multiple request payload", "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Other file" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "New file" }, "keyword": { "x-description-missing": true, "type": "string", "enum": [ "otherFile", "coverPage", "attachment" ], "example": "otherFile" }, "sort": { "x-description-missing": true, "type": "integer", "nullable": true, "example": 1 } } } }, "examples": { "Update multiple sales order documents": { "value": [ { "id": "52", "title": "Sales order document", "description": "Sales order document", "keyword": "attachment", "sort": 1 }, { "id": "53", "title": "Second sales order document", "description": "Second sales order document", "sort": 2 } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Sales Order" ], "operationId": "salesOrder.deleteMultiple", "summary": "Delete multiple sales order documents", "description": "Deletes a multiple sales order documents", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Sales order documents delete multiple request payload", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, "examples": { "Delete multiple sales order documents": { "value": [ { "id": "52" }, { "id": "53" } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Sales Order" ], "operationId": "salesOrder.listDocument", "summary": "View sales order document list", "description": "Returns a list of given sales order documents", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "currentFileVersionId", "fileName" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "entity": { "x-description-missing": true, "type": "string", "example": "salesOrder" }, "entityId": { "x-description-missing": true, "type": "integer", "example": 1 }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Updated document" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Sales order document" }, "keyword": { "x-description-missing": true, "type": "string", "nullable": true, "example": "attachment" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "currentVersion": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "type": "integer", "example": 1 }, "remark": { "type": "string", "nullable": true, "example": "Initial version" }, "filename": { "type": "string", "example": "invoice_2024.pdf" }, "size": { "example": { "value": 210, "unit": "byte" }, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "integer" }, "unit": { "type": "string", "enum": [ "byte" ], "description": "Currently only byte as unit allowed." } } }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-09-18T14:30:00Z" } }, "example": { "id": "17", "version": 1, "remark": "Initial version", "filename": "invoice_2024.pdf", "size": { "value": 210, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2024-09-18T14:30:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/salesOrders/{id}/documents/{documentId}": { "get": { "tags": [ "Sales Order" ], "operationId": "salesOrder.viewDocument", "summary": "View sales order document", "description": "Returns details of a single sales order document", "parameters": [ { "name": "documentId", "in": "path", "description": "ID of document", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "entity": { "x-description-missing": true, "type": "string", "example": "salesOrder" }, "entityId": { "x-description-missing": true, "type": "integer", "example": 12 }, "title": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Order search" }, "description": { "x-description-missing": true, "type": "string", "nullable": true, "example": "Search in order" }, "keyword": { "x-description-missing": true, "type": "string", "nullable": true, "example": "attachment" }, "sort": { "x-description-missing": true, "type": "integer", "example": 1 }, "versions": { "type": "array", "items": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "type": "integer", "example": 1 }, "remark": { "type": "string", "nullable": true, "example": "Initial version" }, "filename": { "type": "string", "example": "invoice_2024.pdf" }, "size": { "example": { "value": 210, "unit": "byte" }, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "integer" }, "unit": { "type": "string", "enum": [ "byte" ], "description": "Currently only byte as unit allowed." } } }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-09-18T14:30:00Z" } }, "example": { "id": "17", "version": 1, "remark": "Initial version", "filename": "invoice_2024.pdf", "size": { "value": 210, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } } }, "currentVersion": { "x-description-missing": true, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "version": { "type": "integer", "example": 1 }, "remark": { "type": "string", "nullable": true, "example": "Initial version" }, "filename": { "type": "string", "example": "invoice_2024.pdf" }, "size": { "example": { "value": 210, "unit": "byte" }, "type": "object", "additionalProperties": false, "required": [ "value", "unit" ], "properties": { "value": { "type": "integer" }, "unit": { "type": "string", "enum": [ "byte" ], "description": "Currently only byte as unit allowed." } } }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-09-18T14:30:00Z" } }, "example": { "id": "17", "version": 1, "remark": "Initial version", "filename": "invoice_2024.pdf", "size": { "value": 210, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } }, "updatedAt": { "x-description-missing": true, "type": "string", "format": "date-time", "example": "2024-09-18T14:30:00Z" } }, "example": { "id": "17", "entity": "salesOrder", "entityId": 12, "title": "Order search", "description": "Search in order", "keyword": "attachment", "sort": 1, "versions": [ { "id": "17", "version": 1, "remark": "Initial version", "filename": "invoice_2024.pdf", "size": { "value": 210, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" } ], "currentVersion": { "id": "17", "version": 1, "remark": "Initial version", "filename": "invoice_2024.pdf", "size": { "value": 210, "unit": "byte" }, "updatedAt": "2024-09-18T14:30:00Z" }, "updatedAt": "2024-09-18T14:30:00Z" } } } } }, "image/*": { "schema": { "type": "string", "format": "binary" } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/salesPrices": { "post": { "tags": [ "Sales Price" ], "operationId": "salesPrice.create", "summary": "Create sales price", "description": "Creates new sales price", "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "product" ], "properties": { "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Sets the starting date of the sales price being valid." }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Sets the expiration date of the sales price." }, "amount": { "oneOf": [ { "type": "number", "format": "float", "description": "Float or int, greater than zero" }, { "type": "string", "format": "float", "description": "Numeric value greater than zero" } ] }, "packageAmount": { "type": "number", "format": "float", "nullable": true }, "customer": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customerGroup": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "examples": { "Create sales price": { "value": { "product": { "id": "14" }, "validFrom": "2023-12-01", "amount": 1, "price": { "amount": "24.20", "currency": "EUR" } } }, "Create sales price with float as string for amount": { "value": { "product": { "id": "14" }, "validFrom": "2023-12-01", "amount": "10.5", "price": { "amount": "24.20", "currency": "EUR" } } }, "Create customer-specific sales price": { "value": { "product": { "id": "14" }, "customer": { "id": "35" }, "amount": 10.5, "price": { "amount": "24.20", "currency": "EUR" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Sales Price" ], "operationId": "salesPrice.list", "summary": "List sales prices", "description": "Returns list of a sales prices", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "id", "productId", "customerId", "groupId", "currency", "amount", "isValidAt", "targetCountry", "validFrom", "expiresAt" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "price", "amount" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "x-description-missing": true, "example": { "id": "1", "product": { "id": "12" }, "customer": null, "customerGroup": null, "amount": 1, "packageAmount": null, "price": { "amount": "62.00000000", "currency": "EUR", "amountGross": "73.78000000", "taxRate": { "rate": "19.00", "type": "normal", "source": "project tax rate" } }, "validFrom": null, "expiresAt": null }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Shows the starting date of the sales price being valid.", "example": "2023-01-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Shows the expiration date of the sales price.", "example": "2023-01-01" }, "amount": { "type": "number", "format": "float", "description": "Amount of the product required for the sales price.", "example": 3 }, "packageAmount": { "x-description-missing": true, "type": "number", "format": "float", "nullable": true, "example": 3 }, "customer": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customerGroup": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "price": { "description": "Price object with amount, amount gross, currency and tax rate", "type": "object", "additionalProperties": false, "example": { "amount": "24.20", "amountGross": "28.80", "currency": "EUR", "taxRate": { "rate": "19.00", "type": "normal", "source": "project tax rate" } }, "properties": { "amount": { "type": "string", "format": "float" }, "amountGross": { "type": "string", "format": "float", "nullable": true }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "description": "Currency matches one of currency values as specified in ISO-4217." }, "taxRate": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "string", "format": "float" }, "type": { "type": "string" }, "source": { "type": "string" } } } } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Lists all sales prices": { "value": { "data": [ { "id": "1", "product": { "id": "12" }, "customer": null, "customerGroup": null, "amount": 1, "packageAmount": null, "price": { "amount": "62.00000000", "currency": "EUR", "amountGross": "73.78000000", "taxRate": { "rate": "19.00", "type": "normal", "source": "project tax rate" } }, "validFrom": null, "expiresAt": null }, { "id": "2", "product": { "id": "1" }, "customer": { "id": "7" }, "customerGroup": null, "amount": 1, "packageAmount": null, "price": { "amount": "0.16000000", "currency": "EUR", "amountGross": "0.17120000", "taxRate": { "rate": "7.00", "type": "reduced", "source": "project tax rate" } }, "validFrom": "2024-04-01", "expiresAt": "2024-04-30" } ], "extra": { "totalCount": 2, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Sales Price" ], "operationId": "salesPrice.updateMultiple", "summary": "Update multiple sales prices", "description": "Updates multiple sales prices", "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "validFrom": { "type": "string", "format": "date", "nullable": true, "example": "2023-12-01", "description": "Sets the starting date of the sales price being valid." }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "example": "2023-12-01", "description": "Sets the expiration date of the sales price." }, "amount": { "oneOf": [ { "type": "number", "format": "float", "description": "Float or int, greater than zero" }, { "type": "string", "format": "float", "description": "Numeric value greater than zero" } ] }, "packageAmount": { "x-description-missing": true, "type": "number", "format": "float", "example": 3, "nullable": true }, "customer": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customerGroup": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } } }, "examples": { "Update Multiple Sales Prices with different types for amount": { "value": [ { "id": "14", "validFrom": "2023-12-01", "amount": 1, "packageAmount": 6, "price": { "amount": "24.20", "currency": "EUR" } }, { "id": "16", "validFrom": "2023-12-01", "amount": 10.5, "packageAmount": 1, "price": { "amount": "19.24", "currency": "EUR" } }, { "id": "16", "validFrom": "2023-12-01", "amount": "22.5", "packageAmount": 1, "price": { "amount": "55.55", "currency": "EUR" } } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/salesPrices/{id}": { "get": { "tags": [ "Sales Price" ], "operationId": "salesPrice.view", "summary": "View sales price", "description": "Returns details of a single sales price", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "x-description-missing": true, "example": { "id": "1", "product": { "id": "12" }, "customer": null, "customerGroup": null, "amount": 1, "packageAmount": null, "price": { "amount": "62.00000000", "currency": "EUR", "amountGross": "73.78000000", "taxRate": { "rate": "19.00", "type": "normal", "source": "project tax rate" } }, "validFrom": null, "expiresAt": null }, "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Shows the starting date of the sales price being valid.", "example": "2023-01-01" }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Shows the expiration date of the sales price.", "example": "2023-01-01" }, "amount": { "type": "number", "format": "float", "description": "Amount of the product required for the sales price.", "example": 3 }, "packageAmount": { "x-description-missing": true, "type": "number", "format": "float", "nullable": true, "example": 3 }, "customer": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customerGroup": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "price": { "description": "Price object with amount, amount gross, currency and tax rate", "type": "object", "additionalProperties": false, "example": { "amount": "24.20", "amountGross": "28.80", "currency": "EUR", "taxRate": { "rate": "19.00", "type": "normal", "source": "project tax rate" } }, "properties": { "amount": { "type": "string", "format": "float" }, "amountGross": { "type": "string", "format": "float", "nullable": true }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "PLN", "CHF", "USD", "GBP" ], "description": "Currency matches one of currency values as specified in ISO-4217." }, "taxRate": { "type": "object", "additionalProperties": false, "nullable": true, "properties": { "rate": { "type": "string", "format": "float" }, "type": { "type": "string" }, "source": { "type": "string" } } } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "examples": { "Shows a single sales price": { "value": { "data": { "id": "1", "product": { "id": "12" }, "customer": null, "customerGroup": null, "amount": 1, "packageAmount": null, "price": { "amount": "62.00000000", "currency": "EUR" }, "validFrom": null, "expiresAt": null } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Sales Price" ], "operationId": "salesPrice.update", "summary": "Update sales price", "description": "Updates details of a single sales price", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "validFrom": { "type": "string", "format": "date", "nullable": true, "description": "Sets the starting date of the sales price being valid." }, "expiresAt": { "type": "string", "format": "date", "nullable": true, "description": "Sets the expiration date of the sales price." }, "amount": { "oneOf": [ { "type": "number", "format": "float", "description": "Float or int, greater than zero" }, { "type": "string", "format": "float", "description": "Numeric value greater than zero" } ] }, "packageAmount": { "type": "number", "format": "float", "nullable": true }, "customer": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "customerGroup": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "price": { "description": "Money object with amount and currency", "example": { "amount": "13.37", "currency": "EUR" }, "type": "object", "additionalProperties": false, "properties": { "amount": { "description": "A string representing the amount", "type": "string", "format": "float", "example": "24.99" }, "currency": { "type": "string", "pattern": "[A-Z]{3}", "enum": [ "EUR", "USD", "JPY", "BGN", "CZK", "DKK", "GBP", "HUF", "PLN", "RON", "SEK", "CHF", "ISK", "NOK", "HRK", "RUB", "TRY", "AUD", "BRL", "CAD", "CNY", "HKD", "IDR", "ILS", "INR", "KRW", "MXN", "MYR", "NZD", "PHP", "SGD", "THB", "ZAR", "ARS", "CLP", "SAR", "AED" ], "description": "Currency matches one of currency values as specified in ISO-4217.", "example": "PLN" } } } } }, "examples": { "Update Sales Prices": { "value": { "validFrom": "2023-12-01", "amount": 1, "price": { "amount": "24.20", "currency": "EUR" } } }, "Update Sales Prices with float as string for amount": { "value": { "validFrom": "2023-12-01", "amount": "10.5", "price": { "amount": "24.20", "currency": "EUR" } } }, "Update Sales Prices with float for amount": { "value": { "validFrom": "2023-12-01", "amount": 10.5, "price": { "amount": "24.20", "currency": "EUR" } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Sales Price" ], "operationId": "salesPrice.delete", "summary": "Delete sales price", "description": "Deletes a single sales price", "requestBody": { "content": { "application/vnd.xentral.default.v1": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/warehouses/{warehouseId}/storageLocations/{storageLocationId}/items": { "get": { "tags": [ "Storage Item" ], "operationId": "storage_item.list", "parameters": [ { "name": "warehouseId", "in": "path", "description": "ID of warehouse", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "name": "storageLocationId", "in": "path", "description": "ID of storage location", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "summary": "Storage item list", "description": "This endpoint is only available as beta version and will introduce breaking changes without further notice or versioning. Returns all storage location items for the specified warehouse / location.", "responses": { "200": { "description": "Operation completed successfully. Note (only for application/vnd.xentral.default.v2-beta+json response content): support for products where a product is both serial number tracked AND batch/best before date tracked at the same time is limited. In case serial number tracking is set to \"Generate own\" in the product master data, the qualityControlAttribute quantities will be reported (a) for the serial numbers on shelf and (b) for the batch/bestBeforeDate records on shelf, thus potentially resulting in a double count in the total across all qualityControlAttribute->quantity values. The quantity on the product->quantity level reflects the correct quantity on shelf in any case.", "content": { "application/vnd.xentral.default.v1-beta+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "Representation of a list of Items in storage", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "product": { "description": "Information from the Product in storage", "required": [ "sku" ], "type": "object", "properties": { "sku": { "type": "string", "description": "SKU code of the item" } }, "example": { "sku": "ABC-12345-S-BL" } }, "quantity": { "type": "number", "description": "Quantity of the item to stock to storage location", "example": 5 }, "batches": { "type": "array", "items": { "type": "string" }, "description": "Batches of the items", "example": [ "Batch1" ] }, "bestBeforeDates": { "type": "array", "items": { "type": "string" }, "description": "Best before dates of the items", "example": [ "2023-01-01 00:00:00" ] }, "serialNumbers": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "string", "description": "The serial number of the items" } } }, "description": "The serial number list of the items", "example": [ { "number": "001" }, { "number": "002" } ] } } }, "example": [ { "id": "1", "product": { "sku": "ABC-12345-S-BL" }, "quantity": 3, "batches": [ "Batch1", "Batch2" ], "bestBeforeDates": [ "2025-01-01 00:00:00" ], "serialNumbers": [ { "number": "001" }, { "number": "002" }, { "number": "003" } ] } ] } } } }, "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "Representation of a list of Items in storage", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "productId": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "sku": { "type": "string", "description": "SKU code of the item", "example": "ABC-12345-S-BL" }, "quantity": { "type": "number", "description": "Quantity of the item to stock to storage location", "example": 5 }, "qualityControlAttributes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "quantity": { "type": "number", "description": "Quantity of the item to stock to storage location" }, "batch": { "type": "string", "nullable": true, "description": "Batch of the item" }, "bestBeforeDate": { "type": "string", "nullable": true, "description": "Best before date of the item" }, "serialNumbers": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "string", "description": "The serial numbers of the item" } } } } } }, "description": "List of Product unit specific quality properties", "example": [ { "quantity": 5, "batch": "Batch1", "bestBeforeDate": "2025-01-01 00:00:00", "serialNumbers": [ { "number": "001" } ] } ] } } }, "example": [ { "productId": "1", "sku": "ABC-12345-S-BL", "quantity": 5, "qualityControlAttributes": [ { "quantity": 5, "batch": "Batch1", "bestBeforeDate": "2025-01-01 00:00:00", "serialNumbers": [ { "number": "001" } ] } ] } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Storage Item" ], "operationId": "warehouse.stockItem", "parameters": [ { "name": "warehouseId", "in": "path", "description": "ID of warehouse", "required": true, "schema": { "type": "number" } }, { "name": "storageLocationId", "in": "path", "description": "ID of storage location", "required": true, "schema": { "type": "number" } } ], "requestBody": { "description": "Add item to Storage Location payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "product", "quantity" ], "properties": { "product": { "required": [ "sku" ], "type": "object", "properties": { "sku": { "type": "string", "description": "SKU code of the item" } } }, "quantity": { "type": "number", "description": "Quantity of the item to stock to storage location" }, "batch": { "type": "string", "description": "Batch to assign the stock update to" }, "bestBeforeDate": { "type": "string", "format": "date", "description": "Best Before Date to assign to the stock units added" }, "serialNumbers": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "string", "description": "The serial number of the item" } } } }, "reason": { "type": "string", "description": "Reason for adding to the stock" }, "project": { "required": [ "id" ], "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Id of the project" } } } } }, "examples": { "Add stock to storage location": { "value": { "product": { "sku": "10840" }, "quantity": 1 } }, "Add stock to storage location (batch and best before date)": { "value": { "product": { "sku": "10038" }, "quantity": 5, "batch": "123456", "bestBeforeDate": "2027-01-01" } }, "Add stock to storage location (serial numbers)": { "value": { "product": { "sku": "10440" }, "quantity": 3, "serialNumbers": [ { "number": "2000482" }, { "number": "2000483" }, { "number": "2000484" } ] } } } } } }, "summary": "Add item to Storage Location", "description": "Adds stock for a given item to a specific Storage Location.", "responses": { "200": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Storage Item" ], "operationId": "warehouse.retrieveItem", "parameters": [ { "name": "warehouseId", "in": "path", "description": "ID of warehouse", "required": true, "schema": { "type": "number" } }, { "name": "storageLocationId", "in": "path", "description": "ID of storage location", "required": true, "schema": { "type": "number" } } ], "requestBody": { "description": "Retrieve item from Storage Location payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "product", "quantity" ], "properties": { "product": { "required": [ "sku" ], "type": "object", "properties": { "sku": { "type": "string", "description": "SKU code of the item" } } }, "quantity": { "type": "number", "description": "Quantity of the item to retrieve from storage location" }, "batch": { "type": "string", "description": "Batch to use" }, "bestBeforeDate": { "type": "string", "format": "date", "description": "Best Before Date to use" }, "serialNumbers": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "string", "description": "The serial number of the item" } } } }, "reason": { "type": "string", "description": "Reason for the retrieve" }, "project": { "required": [ "id" ], "type": "object", "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Id of the project" } } } } }, "examples": { "Retrieve stock from storage location": { "value": { "product": { "sku": "10840" }, "quantity": 1 } }, "Retrieve stock from storage location (batch and best before date)": { "value": { "product": { "sku": "10038" }, "quantity": 5, "batch": "123456", "bestBeforeDate": "2027-01-01" } }, "Retrieve stock from storage location (serial numbers)": { "value": { "product": { "sku": "10440" }, "quantity": 3, "serialNumbers": [ { "number": "2000482" }, { "number": "2000483" }, { "number": "2000484" } ] } } } } } }, "summary": "Retrieves item from Storage Location", "description": "Retrieves certain units of stock for a given item from a specific Storage Location.", "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/warehouses/{warehouseId}/storageLocations": { "get": { "tags": [ "Storage Location" ], "operationId": "storageLocation.list", "parameters": [ { "name": "warehouseId", "in": "path", "description": "ID of warehouse", "required": true, "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "storageLocationId", "designation" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } } ], "summary": "Storage location list", "description": "This endpoint is only available as beta version and will introduce breaking changes without further notice or versioning. Returns all storage locations for the specified warehouse.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "Representation of a list of Storage Locations", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "designation", "warehouse" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "warehouse": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "designation": { "type": "string", "description": "Designation of the Storage location", "example": "Main Storage Location 1" }, "description": { "type": "string", "description": "Description of the Storage location", "example": "Primary storage location" }, "project": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "sort": { "type": "integer", "description": "Sort order of the storage location", "example": 12 }, "isReplenishmentLocation": { "type": "boolean", "description": "Indicates if the location is for replenishment", "example": false }, "isConsumptionLocation": { "type": "boolean", "description": "Indicates if the location is for consumption", "example": true }, "isRestrictedLocation": { "type": "boolean", "description": "Indicates if the location is restricted", "example": false }, "productionAccess": { "type": "boolean", "description": "Indicates if the location has production access", "example": true }, "isPosLocation": { "type": "boolean", "description": "Indicates if the location is a point of sale location", "example": false }, "abcCategory": { "type": "string", "description": "ABC category of the storage location", "example": "A" }, "dimensions": { "type": "object", "additionalProperties": false, "description": "Dimensions of the storage location", "properties": { "length": { "type": "number", "description": "Length of the storage location", "example": 10.5, "format": "float" }, "width": { "type": "number", "description": "Width of the storage location", "example": 100, "format": "float" }, "height": { "type": "number", "description": "Height of the storage location", "format": "float", "example": 100 } }, "example": { "length": 10.5, "width": 100, "height": 100 } } } }, "example": [ { "id": "1", "warehouse": { "id": "1" }, "designation": "StorageLocation1", "description": "Storage Location Number 1", "project": { "id": "1" } } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/shippingMethods": { "get": { "tags": [ "Shipping Methods" ], "operationId": "shippingMethod.list", "summary": "List shipping methods", "description": "Lists existing shipping methods", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Shipping method list", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "module", "type", "designation", "project" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "module": { "type": "string", "description": "Module used by the given Shipping Method", "example": "glsapi" }, "type": { "type": "string", "description": "Type of the given Shipping Method", "example": "gls" }, "designation": { "type": "string", "description": "Description given to a particular Shipping Method", "example": "GLS International" }, "project": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "description": "Response data containing list of Shipping Methods", "example": [ { "id": "1", "module": "glsapi", "type": "gls", "designation": "GLS International", "project": { "id": "1" } } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Shipping Methods" ], "operationId": "shippingMethod.create", "summary": "Create Shipping Method", "description": "Creates new shipping method.", "requestBody": { "description": "Request body for creating or updating a shipping method.", "content": { "application/json": { "schema": { "type": "object", "properties": { "isActive": { "type": "boolean", "description": "Indicates if the shipping method is active.", "example": true }, "name": { "type": "string", "description": "The name of the shipping method.", "example": "New Carrier" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "carrier": { "type": "object", "description": "Details of the carrier providing the shipping service.", "properties": { "credentials": { "oneOf": [ { "type": "object", "properties": { "basic": { "type": "object", "properties": { "username": { "type": "string", "description": "Username used to authenticate at carrier's.", "example": "admin" }, "password": { "type": "string", "description": "Password used to authenticate at carrier's.", "example": "Password" } }, "required": [ "username", "password" ], "additionalProperties": false } }, "required": [ "basic" ], "additionalProperties": false, "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication." }, { "type": "object", "properties": { "bearer": { "type": "object", "properties": { "token": { "type": "string", "description": "API token used to authenticate at carrier's.", "example": "0191e008-3057-7090-8b72-8f5f31bd11ef" } }, "required": [ "token" ], "additionalProperties": false } }, "required": [ "bearer" ], "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication.", "additionalProperties": false }, { "type": "object", "properties": { "oauthClientCredentials": { "type": "object", "properties": { "tokenUrl": { "type": "string", "description": "URL used to exchange authorization codes or credentials for an access token at carrier's.", "example": "https://example.com/oauth/token" }, "username": { "type": "string", "description": "Username used to authenticate at carrier's.", "example": "admin" }, "password": { "type": "string", "description": "Password used to authenticate at carrier's.", "example": "Password" }, "audience": { "type": "string", "description": "Application or service that requests access to protected resources on behalf of itself.", "example": "Xentral" } }, "required": [ "tokenUrl", "username", "password" ], "additionalProperties": false } }, "required": [ "oauthClientCredentials" ], "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication.", "additionalProperties": false } ] }, "serviceUrl": { "type": "string", "example": "https://xentral.someUrl.com", "description": "The base URL at which the Carrier Service that you want to connect to can be reached." }, "extra": { "type": "object", "description": "Additional fields for the carrier or service.", "properties": { "field1": { "type": "string", "description": "An extra field for custom data.", "example": "value1" }, "field2": { "type": "string", "description": "Another extra field for custom data.", "example": "value2" } }, "example": { "extra": { "field1": "value1", "field2": "value2" } } }, "id": { "type": "string", "description": "The unique identifier of the carrier.", "example": "post-ch" }, "product": { "type": "object", "description": "A shipping product is a specific service offered by a carrier.", "properties": { "id": { "type": "string", "description": "The shipping product ID.", "example": "post-ch-express" } }, "example": { "product": { "id": "post-ch-express" } } }, "shipmentType": { "type": "string", "description": "A type of shipment: outbound or return.", "enum": [ "outbound", "return" ], "example": "outbound" } }, "example": { "carrier": { "credentials": { "basic": { "username": "your-username", "password": "your-password" } }, "serviceUrl": "https://api.example.com", "extra": { "field1": "value1", "field2": "value2" }, "id": "post-ch", "product": { "id": "post-ch-express", "shipmentType": "outbound" } } } }, "printers": { "type": "object", "description": "Details about the printers used for shipping labels and documents", "properties": { "label": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "document": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "parcel": { "type": "object", "properties": { "defaultDimensions": { "type": "object", "properties": { "length": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "cm" ] } } }, "width": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "cm" ] } } }, "height": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "cm" ] } } } } }, "minimumWeight": { "type": "object", "description": "The minimum weight of the parcel. If the weight of the parcel is less than this value, this value will be submitted to the carrier.", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "kg" ] } } } } }, "sender": { "type": "object", "properties": { "name": { "type": "string" }, "address": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "zip": { "type": "string" }, "country": { "type": "string" }, "email": { "type": "string" }, "phone": { "type": "string" } } } } }, "examples": { "example": { "summary": "Example of a shipping method request", "value": { "isActive": true, "name": "New Carrier", "project": { "id": "123" }, "carrier": { "credentials": { "basic": { "username": "your-username", "password": "your-password" } }, "serviceUrl": "https://api.example.com", "extra": { "field1": "value1", "field2": "value2" }, "id": "post-ch", "product": { "id": "post-ch-express" } }, "printers": { "label": { "id": "label-printer-1" }, "document": { "id": "document-printer-1" } }, "parcel": { "defaultDimensions": { "length": { "value": 10, "unit": "cm" }, "width": { "value": 10, "unit": "cm" }, "height": { "value": 10, "unit": "cm" } }, "minimumWeight": { "value": 1, "unit": "kg" } }, "sender": { "id": "sender-1", "name": "Sender Name" } } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/shippingMethods/{id}": { "get": { "tags": [ "Shipping Methods" ], "operationId": "shippingMethod.view", "summary": "View Shipping Method", "description": "Shows the details of a Shipping Method", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of the carrier", "enum": [ "genericCarrier" ], "example": "genericCarrier" }, "isActive": { "type": "boolean", "description": "Determines whether the shipping Method is currently active.", "example": true }, "name": { "type": "string", "example": "New generic Carrier", "description": "The human readable name you would like to give to this carrier" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "carrier": { "type": "object", "description": "Details of the carrier providing the shipping service.", "properties": { "credentials": { "oneOf": [ { "type": "object", "properties": { "basic": { "type": "object", "properties": { "username": { "type": "string", "description": "Username used to authenticate at carrier's.", "example": "admin" }, "password": { "type": "string", "description": "Password used to authenticate at carrier's.", "example": "Password" } }, "required": [ "username", "password" ], "additionalProperties": false } }, "required": [ "basic" ], "additionalProperties": false, "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication." }, { "type": "object", "properties": { "bearer": { "type": "object", "properties": { "token": { "type": "string", "description": "API token used to authenticate at carrier's.", "example": "0191e008-3057-7090-8b72-8f5f31bd11ef" } }, "required": [ "token" ], "additionalProperties": false } }, "required": [ "bearer" ], "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication.", "additionalProperties": false }, { "type": "object", "properties": { "oauthClientCredentials": { "type": "object", "properties": { "tokenUrl": { "type": "string", "description": "URL used to exchange authorization codes or credentials for an access token at carrier's.", "example": "https://example.com/oauth/token" }, "username": { "type": "string", "description": "Username used to authenticate at carrier's.", "example": "admin" }, "password": { "type": "string", "description": "Password used to authenticate at carrier's.", "example": "Password" }, "audience": { "type": "string", "description": "Application or service that requests access to protected resources on behalf of itself.", "example": "Xentral" } }, "required": [ "tokenUrl", "username", "password" ], "additionalProperties": false } }, "required": [ "oauthClientCredentials" ], "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication.", "additionalProperties": false } ] }, "serviceUrl": { "type": "string", "example": "https://xentral.someUrl.com", "description": "The base URL at which the Carrier Service that you want to connect to can be reached." }, "extra": { "type": "object", "description": "Additional fields for the carrier or service.", "properties": { "field1": { "type": "string", "description": "An extra field for custom data.", "example": "value1" }, "field2": { "type": "string", "description": "Another extra field for custom data.", "example": "value2" } }, "example": { "extra": { "field1": "value1", "field2": "value2" } } }, "id": { "type": "string", "description": "The unique identifier of the carrier.", "example": "post-ch" }, "product": { "type": "object", "description": "A shipping product is a specific service offered by a carrier.", "properties": { "id": { "type": "string", "description": "The shipping product ID.", "example": "post-ch-express" } }, "example": { "product": { "id": "post-ch-express" } } }, "shipmentType": { "type": "string", "description": "A type of shipment: outbound or return.", "enum": [ "outbound", "return" ], "example": "outbound" } }, "example": { "carrier": { "credentials": { "basic": { "username": "your-username", "password": "your-password" } }, "serviceUrl": "https://api.example.com", "extra": { "field1": "value1", "field2": "value2" }, "id": "post-ch", "product": { "id": "post-ch-express", "shipmentType": "outbound" } } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "put": { "tags": [ "Shipping Methods" ], "operationId": "shippingMethod.update", "summary": "Update Shipping Method", "description": "Updates a Shipping Method", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Request body for creating or updating a shipping method.", "content": { "application/json": { "schema": { "type": "object", "properties": { "isActive": { "type": "boolean", "description": "Indicates if the shipping method is active.", "example": true }, "name": { "type": "string", "description": "The name of the shipping method.", "example": "New Carrier" }, "project": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "carrier": { "type": "object", "description": "Details of the carrier providing the shipping service.", "properties": { "credentials": { "oneOf": [ { "type": "object", "properties": { "basic": { "type": "object", "properties": { "username": { "type": "string", "description": "Username used to authenticate at carrier's.", "example": "admin" }, "password": { "type": "string", "description": "Password used to authenticate at carrier's.", "example": "Password" } }, "required": [ "username", "password" ], "additionalProperties": false } }, "required": [ "basic" ], "additionalProperties": false, "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication." }, { "type": "object", "properties": { "bearer": { "type": "object", "properties": { "token": { "type": "string", "description": "API token used to authenticate at carrier's.", "example": "0191e008-3057-7090-8b72-8f5f31bd11ef" } }, "required": [ "token" ], "additionalProperties": false } }, "required": [ "bearer" ], "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication.", "additionalProperties": false }, { "type": "object", "properties": { "oauthClientCredentials": { "type": "object", "properties": { "tokenUrl": { "type": "string", "description": "URL used to exchange authorization codes or credentials for an access token at carrier's.", "example": "https://example.com/oauth/token" }, "username": { "type": "string", "description": "Username used to authenticate at carrier's.", "example": "admin" }, "password": { "type": "string", "description": "Password used to authenticate at carrier's.", "example": "Password" }, "audience": { "type": "string", "description": "Application or service that requests access to protected resources on behalf of itself.", "example": "Xentral" } }, "required": [ "tokenUrl", "username", "password" ], "additionalProperties": false } }, "required": [ "oauthClientCredentials" ], "description": "Credentials can be either basic, bearer or OAuth Client Credentials authentication.", "additionalProperties": false } ] }, "serviceUrl": { "type": "string", "example": "https://xentral.someUrl.com", "description": "The base URL at which the Carrier Service that you want to connect to can be reached." }, "extra": { "type": "object", "description": "Additional fields for the carrier or service.", "properties": { "field1": { "type": "string", "description": "An extra field for custom data.", "example": "value1" }, "field2": { "type": "string", "description": "Another extra field for custom data.", "example": "value2" } }, "example": { "extra": { "field1": "value1", "field2": "value2" } } }, "id": { "type": "string", "description": "The unique identifier of the carrier.", "example": "post-ch" }, "product": { "type": "object", "description": "A shipping product is a specific service offered by a carrier.", "properties": { "id": { "type": "string", "description": "The shipping product ID.", "example": "post-ch-express" } }, "example": { "product": { "id": "post-ch-express" } } }, "shipmentType": { "type": "string", "description": "A type of shipment: outbound or return.", "enum": [ "outbound", "return" ], "example": "outbound" } }, "example": { "carrier": { "credentials": { "basic": { "username": "your-username", "password": "your-password" } }, "serviceUrl": "https://api.example.com", "extra": { "field1": "value1", "field2": "value2" }, "id": "post-ch", "product": { "id": "post-ch-express", "shipmentType": "outbound" } } } }, "printers": { "type": "object", "description": "Details about the printers used for shipping labels and documents", "properties": { "label": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "document": { "description": "Reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } } } }, "parcel": { "type": "object", "properties": { "defaultDimensions": { "type": "object", "properties": { "length": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "cm" ] } } }, "width": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "cm" ] } } }, "height": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "cm" ] } } } } }, "minimumWeight": { "type": "object", "description": "The minimum weight of the parcel. If the weight of the parcel is less than this value, this value will be submitted to the carrier.", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "kg" ] } } } } }, "sender": { "type": "object", "properties": { "name": { "type": "string" }, "address": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "zip": { "type": "string" }, "country": { "type": "string" }, "email": { "type": "string" }, "phone": { "type": "string" } } } } }, "examples": { "example": { "summary": "Example of a shipping method request", "value": { "isActive": true, "name": "New Carrier", "project": { "id": "123" }, "carrier": { "credentials": { "basic": { "username": "your-username", "password": "your-password" } }, "serviceUrl": "https://api.example.com", "extra": { "field1": "value1", "field2": "value2" }, "id": "post-ch", "product": { "id": "post-ch-express" } }, "printers": { "label": { "id": "label-printer-1" }, "document": { "id": "document-printer-1" } }, "parcel": { "defaultDimensions": { "length": { "value": 10, "unit": "cm" }, "width": { "value": 10, "unit": "cm" }, "height": { "value": 10, "unit": "cm" } }, "minimumWeight": { "value": 1, "unit": "kg" } }, "sender": { "id": "sender-1", "name": "Sender Name" } } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "409": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v2/salesChannels": { "get": { "x-internal": false, "summary": "List all sales channels", "description": "Returns a collection with all sales channels.", "operationId": "salesChannel.list.v2", "tags": [ "Sales Channel" ], "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "page[number]", "in": "query", "description": "The page number to retrieve", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1 } }, { "name": "page[size]", "in": "query", "description": "The number of items per page", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 10 } } ], "responses": { "200": { "description": "A list of sales channels that the individual customer has integrated with Xentral.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "uuid" ], "properties": { "id": { "type": "string", "description": "The unique identifier of the sales channel", "example": "1301" }, "uuid": { "description": "UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1" }, "project": { "type": "object", "description": "The project ID this sales channel belongs to", "example": { "id": "1" }, "additionalProperties": false, "properties": { "id": { "type": "string" } } }, "moduleName": { "type": "string", "description": "The type of sales channel platform (e.g. Shopify, Amazon, etc.)", "enum": [ "shopify", "amazon", "shopware6", "woocommerce" ], "example": "shopify" }, "name": { "type": "string", "description": "The display name of the sales channel", "example": "Test Shopify #1" }, "stockExport": { "type": "boolean", "description": "Whether stock levels are automatically exported", "example": true }, "productExport": { "type": "boolean", "description": "Whether product data is automatically exported", "example": true }, "active": { "type": "boolean", "description": "Whether the sales channel is currently active", "example": true }, "createdAt": { "type": "string", "format": "date-time", "description": "The timestamp when the sales channel was created", "example": "2023-01-01T00:00:00Z" }, "updatedAt": { "type": "string", "format": "date-time", "description": "The timestamp when the sales channel was last updated", "example": "2023-01-02T00:00:00Z" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" } } } }, "/api/v2/settings/masterdata/addressCustomFields": { "get": { "tags": [ "Setting" ], "operationId": "settings.masterdata.address.customFields.list.v2", "summary": "List address custom fields", "description": "Fetches all configured address custom fields. Pagination is not necessary because of limit of such fields (20).", "responses": { "200": { "description": "List of address custom fields", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "type", "allowedValues" ], "description": "Address custom field object", "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string", "description": "Name of address custom field", "example": "Lead-Status" }, "type": { "type": "string", "enum": [ "single_line", "multi_line", "date", "checkbox", "select" ], "nullable": false, "description": "Value type of address custom field", "example": "select" }, "allowedValues": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "nullable": false, "example": "Contact" }, "value": { "type": "string", "nullable": false, "example": "ATTEMPTED_TO_CONTACT" } } } } } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "post": { "tags": [ "Setting" ], "operationId": "settings.masterdata.address.customFields.create.v1", "summary": "Create address custom field configuration", "description": "Creates a address custom field configuration.", "requestBody": { "description": "Request structure to create a address custom field configuration", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "nullable": false, "description": "Name of custom field", "example": "Hubspot deal status" }, "type": { "type": "string", "enum": [ "single_line", "multi_line", "date", "checkbox", "select" ], "nullable": false, "example": "date" }, "allowedValues": { "type": "array", "nullable": true, "items": { "type": "object", "additionalProperties": false, "nullable": true, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "nullable": false, "example": "Contact" }, "value": { "type": "string", "nullable": false, "example": "ATTEMPTED_TO_CONTACT" } } } } } }, "examples": { "Create singleline custom field": { "value": { "name": "Lead Number", "type": "single_line" } }, "Create select custom field": { "value": { "name": "Lead-Status", "type": "select", "allowedValues": [ { "label": "Attempts to contact", "value": "ATTEMPTED_TO_CONTACT" }, { "label": "Open Deal", "value": "OPEN_DEAL" } ] } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "409": { "description": "Request conflict with the current state of the target resource", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } } ] } } } }, "415": { "description": "Resource representation send in the request is not supported." }, "423": { "description": "All address custom fields are already in use" } } } }, "/api/v1/accounting/datev/csvExport/invoicesAndCreditNotes": { "post": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.csvExport.invoicesAndCreditNotes", "summary": "Execute the accounting CSV export for invoices and credit notes", "description": "Execute the accounting CSV export for invoices and credit notes.", "requestBody": { "description": "Execute the accounting CSV export for invoices and credit notes", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "sort", "group", "from", "to" ], "properties": { "projectId": { "type": "integer" }, "sort": { "type": "string", "enum": [ "date", "invoice_number" ] }, "group": { "type": "string", "enum": [ "accounts", "positions" ] }, "from": { "type": "string", "format": "date" }, "to": { "type": "string", "format": "date" }, "skipPreviouslyExportedDocuments": { "type": "boolean" } } }, "examples": { "invoice and credit note csv filter payload": { "value": { "sort": "date", "group": "accounts", "projectId": 1, "from": "2024-01-01", "to": "2024-01-01", "skipPreviouslyExportedDocuments": true } } } } } }, "responses": { "202": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/accounting/datev/csvExport/liabilities": { "post": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.csvExport.liabilities", "summary": "Execute the accounting CSV export for liabilities", "description": "Execute the accounting CSV export for liabilities.", "requestBody": { "description": "Execute the accounting CSV export for liabilities", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "projectId": { "type": "integer" }, "from": { "type": "string", "format": "date" }, "to": { "type": "string", "format": "date" }, "skipPreviouslyExportedDocuments": { "type": "boolean" }, "allowSmallLiabilityInvoiceNumbers": { "type": "boolean" } } }, "examples": { "liability csv filter payload": { "value": { "projectId": 1, "from": "2024-01-01", "to": "2024-01-01", "skipPreviouslyExportedDocuments": true, "allowSmallLiabilityInvoiceNumbers": true } } } } } }, "responses": { "202": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/accounting/datev/csvExport/accountTransactions": { "post": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.csvExport.accountTransactions", "summary": "Execute the accounting CSV export for account transactions", "description": "Execute the accounting CSV export for account transactions.", "requestBody": { "description": "Execute the accounting CSV export for account transactions", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "accountId": { "type": "integer" }, "from": { "type": "string", "format": "date" }, "to": { "type": "string", "format": "date" } } }, "examples": { "account transaction csv filter payload": { "value": { "accountId": 1, "from": "2024-01-01", "to": "2024-01-01" } } } } } }, "responses": { "202": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/accounting/datev/xmlExport/invoices": { "post": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.xmlExport.invoices", "summary": "Execute the accounting XML export for invoices", "description": "Execute the accounting XML export for invoices.", "requestBody": { "description": "Execute the accounting XML export for invoices", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "projectId": { "type": "integer" }, "from": { "type": "string", "format": "date" }, "to": { "type": "string", "format": "date" }, "skipPreviouslyExportedDocuments": { "type": "boolean" } } }, "examples": { "invoice xml filter payload": { "value": { "projectId": 1, "from": "2024-01-01", "to": "2024-01-01", "skipPreviouslyExportedDocuments": true } } } } } }, "responses": { "202": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/accounting/datev/xmlExport/creditNotes": { "post": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.xmlExport.creditNotes", "summary": "Execute the accounting XML export for credit notes", "description": "Execute the accounting XML export for credit notes.", "requestBody": { "description": "Execute the accounting XML export for credit notes", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "projectId": { "type": "integer" }, "from": { "type": "string", "format": "date" }, "to": { "type": "string", "format": "date" }, "skipPreviouslyExportedDocuments": { "type": "boolean" } } }, "examples": { "credit note xml filter payload": { "value": { "projectId": 1, "from": "2024-01-01", "to": "2024-01-01", "skipPreviouslyExportedDocuments": true } } } } } }, "responses": { "202": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/accounting/datev/xmlExport/liabilities": { "post": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.xmlExport.liabilities", "summary": "Execute the accounting XML export for liabilities", "description": "Execute the accounting XML export for liabilities.", "requestBody": { "description": "Execute the accounting XML export for liabilities", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "projectId": { "type": "integer" }, "from": { "type": "string", "format": "date" }, "to": { "type": "string", "format": "date" }, "skipPreviouslyExportedDocuments": { "type": "boolean" }, "allowSmallLiabilityInvoiceNumbers": { "type": "boolean" } } }, "examples": { "liability xml filter payload": { "value": { "projectId": 1, "from": "2024-01-01", "to": "2024-01-01", "skipPreviouslyExportedDocuments": true, "allowSmallLiabilityInvoiceNumbers": true } } } } } }, "responses": { "202": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/accounting/downloads/{downloadKey}/status": { "get": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.download.status", "summary": "Check the export status", "description": "Checks the export status.", "parameters": [ { "schema": { "type": "string" }, "name": "downloadKey", "required": true, "in": "path" } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "oneOf": [ { "type": "object", "required": [ "status" ], "additionalProperties": false, "properties": { "status": { "type": "string", "enum": [ "pending", "started" ], "description": "The execution status" } } }, { "type": "object", "required": [ "status", "fileName", "contentType" ], "additionalProperties": false, "properties": { "status": { "type": "string", "enum": [ "completed" ], "description": "The execution status" }, "fileName": { "type": "string", "description": "The file name of the downloaded file" }, "contentType": { "type": "string", "description": "The content type of the downloaded file" }, "log": { "type": "string", "description": "The log file containing error or execution information" } } }, { "type": "object", "required": [ "status", "log" ], "additionalProperties": false, "properties": { "status": { "type": "string", "enum": [ "failed" ], "description": "The execution status" }, "log": { "type": "string", "description": "The log file containing error or execution information" } } } ] } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/accounting/downloads/{downloadKey}": { "get": { "tags": [ "Accounting Export" ], "operationId": "accounting.datev.download", "summary": "Download a generated export file", "description": "Returns a generated export file.", "parameters": [ { "schema": { "type": "string" }, "name": "downloadKey", "required": true, "in": "path" } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "text/csv": { "schema": { "type": "string" } }, "application/zip": { "schema": { "type": "string" } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/suppliers": { "get": { "tags": [ "Supplier" ], "operationId": "supplier.list", "summary": "List suppliers", "description": "Lists existing suppliers", "parameters": [ { "name": "filter", "in": "query", "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } } }, { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "search", "id", "name", "number", "country", "zip", "city", "project", "projectName", "phone", "fax", "mobile", "email", "addressNote", "department", "subdivision", "vatNumber", "taxNumber", "gln", "tag", "tagName" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } ] } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "name", "number", "country", "zip", "city", "project", "projectName", "telephone", "fax", "mobile", "email", "addressNote", "department", "subdivision", "vatNumber", "taxNumber", "gln", "tag", "tagName" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Supplier list.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "type", "general" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "description": "The type of the supplier", "type": "string", "example": "Regular supplier" }, "project": { "description": "An optional object with id and name", "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "nullable": true, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "type": "string" } }, "example": { "id": "1337", "name": "Diamond" } }, "general": { "description": "The general information of the supplier", "type": "object", "additionalProperties": false, "required": [ "name", "address" ], "properties": { "number": { "type": "string" }, "fax": { "type": "string", "nullable": true }, "mobile": { "type": "string", "nullable": true }, "department": { "type": "string" }, "subdivision": { "type": "string" }, "vatNumber": { "type": "string" }, "taxNumber": { "type": "string", "nullable": true }, "gln": { "type": "string" }, "employeeNumber": { "type": "string" }, "honorific": { "type": "string" }, "title": { "type": "string" }, "name": { "type": "string" }, "birthday": { "type": "string", "nullable": true, "format": "date" }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "supplierNumber": { "type": "string" }, "phone": { "type": "string", "nullable": true }, "email": { "type": "string" }, "address": { "type": "object", "additionalProperties": false, "required": [ "street", "zip", "city", "state", "country", "note" ], "properties": { "street": { "type": "string" }, "zip": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string", "nullable": true }, "country": { "type": "string" }, "note": { "type": "string" } } } }, "example": { "number": "123456789", "fax": null, "mobile": "987654321", "department": "Sales", "subdivision": "North Region", "vatNumber": "VAT123456", "taxNumber": null, "gln": "GLN123456789", "employeeNumber": "EMP001", "honorific": "Mr.", "title": "Sales Manager", "name": "John Doe", "birthday": null, "tags": [ { "id": "tag1", "name": "Active", "color": "ff0000" }, { "id": "tag2", "name": "Active", "color": "ff0000" } ], "supplierNumber": "SUP123456", "phone": null, "email": "johndoe@example.com", "address": { "street": "Hauptstraße 15", "zip": "10115", "city": "Berlin", "state": null, "country": "DE", "note": "Hauptsitz" } } }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Either ID or name and key." }, "key": { "description": "The key of the tag", "type": "string" }, "name": { "description": "The name of the tag", "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "freeFields": { "description": "a list of free fields and their values", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "value": { "description": "The value of the free field", "type": "string" } } } } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } }, "text/csv": { "schema": { "type": "string" } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Supplier" ], "operationId": "supplier.updateMultiple", "summary": "Update multiple suppliers tags", "description": "Updates tags for multiple suppliers", "requestBody": { "description": "Supplier update multiple request payload", "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Either ID or name and key.", "example": "12345" }, "key": { "description": "The key of the tag", "type": "string", "example": "absg378d" }, "name": { "description": "The name of the tag", "type": "string", "example": "New" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } } } } }, "examples": { "Add existing tags to suppliers": { "value": [ { "id": "5", "tags": [ { "id": "33" }, { "id": "34" } ] }, { "id": "6", "tags": [ { "id": "39" }, { "id": "40" } ] } ] } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/suppliers/{id}": { "get": { "tags": [ "Supplier" ], "operationId": "supplier.view", "summary": "View supplier", "description": "Shows an existing supplier details", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Supplier view.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "A supplier resource", "type": "object", "additionalProperties": false, "required": [ "id", "type", "general" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "type": { "description": "The type of the supplier", "type": "string", "example": "Regular supplier" }, "general": { "description": "The general information of the supplier", "type": "object", "additionalProperties": false, "required": [ "name", "address" ], "properties": { "honorific": { "description": "The honorific of the supplier", "type": "string" }, "title": { "description": "The title of the supplier", "type": "string" }, "name": { "description": "The name of the supplier", "type": "string" }, "birthday": { "description": "The birthday of the supplier", "type": "string", "format": "date" }, "address": { "type": "object", "additionalProperties": false, "required": [ "street", "zip", "city", "state", "country", "note" ], "properties": { "street": { "type": "string" }, "zip": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string", "nullable": true }, "country": { "type": "string" }, "note": { "type": "string" } } } }, "example": { "honorific": "Dr.", "title": "CEO", "name": "Alice Johnson", "birthday": "1980-05-15", "address": { "street": "Hauptstraße 15", "zip": "10115", "city": "Berlin", "state": null, "country": "DE", "note": "Hauptsitz" } } }, "tags": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } } }, "example": { "id": "123456789", "type": "Regular supplier", "general": { "honorific": "Dr.", "title": "CEO", "name": "Alice Johnson", "birthday": "1980-05-15", "address": { "street": "Hauptstraße 15", "zip": "10115", "city": "Berlin", "state": null, "country": "DE", "note": "Hauptsitz" } }, "tags": [ { "id": "tag1", "name": "Active", "color": "ff0000" }, { "id": "tag2", "name": "Active", "color": "ff0000" } ] } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Supplier" ], "operationId": "supplier.update", "summary": "Update single Supplier tags", "description": "Updates tags of a single supplier", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Supplier update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "tags": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "description": "Either ID or name and key." }, "key": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } } } }, "examples": { "Add existing tags to supplier": { "value": { "tags": [ { "id": "33" }, { "id": "34" } ] } }, "Add new tag to supplier": { "value": { "tags": [ { "name": "Tier 1 supplier", "key": "tier-1-supplier", "color": "#00ff00" } ] } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Supplier" ], "operationId": "supplier.delete", "summary": "Delete supplier", "description": "Delete existing supplier", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/suppliersTags": { "get": { "tags": [ "Supplier Tag" ], "operationId": "supplierTag.list", "summary": "List suppliers tags", "description": "Returns a collection with all suppliers tags.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "description": "A list of tags", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The identifier of the tag", "type": "string", "pattern": "\\d+", "example": "1337" }, "name": { "description": "The name of the tag", "type": "string", "example": "Active" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/taxRates/{countryCode}": { "get": { "tags": [ "Tax Rate" ], "operationId": "taxRate.list", "summary": "List tax rates", "description": "This endpoint returns the tax rate for a given country code. The country code is a two-letter ISO 3166-1 alpha-2 code. The response is a list of applicable tax rates for the given country code.\nTo get a more granular response you can use the query parameters to filter the response, for example by product or project.\n\nThe applicable tax rate is determined in the following order:\n1. If a custom tax rate is defined for the product, it is returned.\n2. If a tax rate is defined in the taxRates module for that country, it is returned.\n3. If a tax rate is defined in the taxRates module for the project, or a generic tax Rate without country or project it is returned.\n4. If a tax rate is defined for the applicable project it is returned.\n5. If a tax rate is defined for the system it is returned.\n6. If no tax rate is defined anywhere we will return an empty list.\n\nTo see which step was used to determine the tax rate, the source field is returned in the response.", "parameters": [ { "in": "path", "name": "countryCode", "required": true, "description": "This is the country code for which the tax rates are requested", "schema": { "type": "string" }, "example": "DE" }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "productId", "date", "type", "projectId" ] }, "op": { "type": "string", "enum": [ "equals", "notEquals", "in", "notIn", "exactlyIn", "allIn", "allNotIn", "contains", "notContains", "startsWith", "endsWith", "greaterThan", "lessThan", "is", "lessThanOrEquals", "greaterThanOrEquals" ] }, "value": { "oneOf": [ { "type": "string", "description": "Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "rate": { "type": "string", "description": "Tax rate value in percent", "example": "Support Request" }, "type": { "type": "string", "description": "Tax rate type: standard, reduced or custom", "example": "Support Request" }, "date": { "type": "string", "format": "date", "description": "Requested date or current date if no date was specified", "example": "2023-09-09" }, "name": { "type": "string", "nullable": true, "description": "Tax rate's designation", "example": "Support Request" }, "product": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "project": { "description": "Nullable reference to another resource", "type": "object", "additionalProperties": false, "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "example": { "id": "1337" } }, "source": { "type": "string", "description": "Informs how was the tax rate determined", "example": "Support Request" } } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/users": { "post": { "tags": [ "User" ], "operationId": "user.create", "summary": "Create user", "description": "Creates a new user using one of the available operations", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "username", "email", "password" ], "properties": { "username": { "type": "string" }, "email": { "type": "string" }, "password": { "type": "string" }, "description": { "type": "string" }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." }, "locale": { "type": "string", "enum": [ "de_DE", "en_US" ], "pattern": "[a-z]{2}_[A-Z]{2}", "example": "de_DE", "description": "ISO 15897 locale which matches one of the available locale values." } } }, "examples": { "user create": { "value": { "username": "Test user name", "email": "test@example.com", "password": "1234", "description": "Test user description", "color": "ff0000", "locale": "de_DE" } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "User" ], "operationId": "user.list", "summary": "List users", "description": "Returns a collection with all users.", "parameters": [ { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "properties": { "ids": { "type": "array", "items": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } }, "username": { "type": "string" }, "description": { "type": "string" }, "isActive": { "type": "boolean" }, "email": { "type": "string" } } } }, { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "order", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "field": { "type": "string", "enum": [ "id", "username", "isActive", "createdAt" ] }, "dir": { "type": "string", "enum": [ "asc", "desc" ] } } } } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data", "extra" ], "properties": { "data": { "description": "A list of users", "type": "array", "items": { "description": "User resource.", "type": "object", "additionalProperties": false, "required": [ "id", "username", "description", "createdAt" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "globalUserId": { "description": "Nullable UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1", "nullable": true }, "username": { "description": "The name of the user", "type": "string", "example": "Benedikt" }, "createdAt": { "description": "The date the user was created", "type": "string", "format": "date-time", "example": "2023-08-13T14:45:36+02:00" }, "description": { "x-description-ignore": true, "type": "string", "nullable": true, "example": "This is the user description." }, "color": { "description": "An optional hex value without the #, representing the avatar color", "type": "string", "nullable": true, "example": "ff0000" }, "isActive": { "description": "A boolean value indicating if the user is active and can log in", "type": "boolean", "example": true }, "locale": { "description": "A ISO-639-1 formatted string indicating the language the user will use", "type": "string", "example": "de_DE" }, "isAdmin": { "description": "A boolean value indicating if the user is an admin", "type": "boolean", "example": false }, "email": { "x-description-ignore": true, "type": "string", "nullable": true, "example": "example@xentral.com" }, "emailVerifiedAt": { "description": "The date where the user verified his email address", "type": "string", "format": "date-time", "nullable": true, "example": "2023-08-14T14:45:36+02:00" }, "mfa": { "description": "Auth Platform MFA state", "type": "boolean", "nullable": true, "example": false } }, "example": { "id": "12", "globalUserId": "f7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b", "username": "Bene", "createdAt": "2023-08-13T14:45:36+02:00", "description": "This is the user description.", "color": "ff0000", "isActive": true, "locale": "de_DE", "isAdmin": true, "email": "ceo@example.com", "emailVerifiedAt": "2023-08-14T14:45:36+02:00" } } }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/users/{id}": { "get": { "tags": [ "User" ], "operationId": "user.view", "summary": "View user", "description": "Returns details of a single user", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "A single user resource.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "User resource.", "type": "object", "additionalProperties": false, "required": [ "id", "username", "description", "createdAt" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "globalUserId": { "description": "Nullable UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1", "nullable": true }, "username": { "description": "The name of the user", "type": "string", "example": "Benedikt" }, "createdAt": { "description": "The date the user was created", "type": "string", "format": "date-time", "example": "2023-08-13T14:45:36+02:00" }, "description": { "x-description-ignore": true, "type": "string", "nullable": true, "example": "This is the user description." }, "color": { "description": "An optional hex value without the #, representing the avatar color", "type": "string", "nullable": true, "example": "ff0000" }, "isActive": { "description": "A boolean value indicating if the user is active and can log in", "type": "boolean", "example": true }, "locale": { "description": "A ISO-639-1 formatted string indicating the language the user will use", "type": "string", "example": "de_DE" }, "isAdmin": { "description": "A boolean value indicating if the user is an admin", "type": "boolean", "example": false }, "email": { "x-description-ignore": true, "type": "string", "nullable": true, "example": "example@xentral.com" }, "emailVerifiedAt": { "description": "The date where the user verified his email address", "type": "string", "format": "date-time", "nullable": true, "example": "2023-08-14T14:45:36+02:00" }, "mfa": { "description": "Auth Platform MFA state", "type": "boolean", "nullable": true, "example": false } }, "example": { "id": "12", "globalUserId": "f7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b", "username": "Bene", "createdAt": "2023-08-13T14:45:36+02:00", "description": "This is the user description.", "color": "ff0000", "isActive": true, "locale": "de_DE", "isAdmin": true, "email": "ceo@example.com", "emailVerifiedAt": "2023-08-14T14:45:36+02:00" } } } } }, "application/vnd.xentral.user-permissions+json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "An object containing all the users permissions.", "type": "object", "additionalProperties": false, "required": [ "id", "username", "description", "createdAt" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "globalUserId": { "description": "Nullable UUID identifier of the resource.", "type": "string", "pattern": "^$|^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", "example": "a00fd11e-3a67-433b-83c0-4e815fd4a0e1", "nullable": true }, "username": { "description": "The name of the user", "type": "string", "example": "Benedikt" }, "createdAt": { "description": "The date the user was created", "type": "string", "format": "date-time", "example": "2023-08-13T14:45:36+02:00" }, "description": { "x-description-ignore": true, "type": "string", "nullable": true, "example": "This is the user description." }, "color": { "description": "An optional hex value without the #, representing the avatar color", "type": "string", "nullable": true, "example": "ff0000" }, "isActive": { "description": "A boolean value indicating if the user is active and can log in", "type": "boolean", "example": true }, "locale": { "description": "A ISO-639-1 formatted string indicating the language the user will use", "type": "string", "example": "de_DE" }, "isAdmin": { "description": "A boolean value indicating if the user is an admin", "type": "boolean", "example": true }, "email": { "x-description-ignore": true, "type": "string", "nullable": true, "example": "joe@example.com" }, "modules": { "description": "List of modules with their permissions.", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name", "permissions" ], "properties": { "name": { "type": "string" }, "permissions": { "type": "array", "items": { "type": "string" } } } } }, "emailVerifiedAt": { "description": "The date where the user verified his email address", "type": "string", "format": "date-time", "nullable": true, "example": "2023-08-14T14:45:36+02:00" }, "mfa": { "description": "Auth Platform MFA state", "type": "boolean", "nullable": true, "example": false } }, "example": { "id": "12", "globalUserId": "f7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b", "username": "Bene", "createdAt": "2023-08-13T14:45:36+02:00", "description": "This is the user description.", "color": "ff0000", "isActive": true, "locale": "de_DE", "isAdmin": true, "email": "joe@example.com" } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "User" ], "operationId": "user.update", "summary": "Update user", "description": "Update a set of changes of an user.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "username": { "type": "string", "example": "Benedikt" }, "password": { "type": "string", "example": "abc123ghj987!?" }, "description": { "type": "string", "example": "This is the user description." }, "color": { "type": "string", "pattern": "[a-fA-F0-9]{6}", "example": "ff0000", "description": "Hexadecimal color value in 6-digit format without the leading # character." }, "locale": { "type": "string", "enum": [ "de_DE", "en_US" ], "pattern": "[a-z]{2}_[A-Z]{2}", "example": "de_DE", "description": "ISO 15897 locale which matches one of the available locale values." }, "email": { "type": "string" } } }, "examples": { "Update user": { "value": { "username": "updated name", "email": "updated@email.com", "description": "updated description", "color": "ff00ff", "locale": "en_US" } } } }, "application/vnd.xentral.password+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "current": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 1 } } }, "examples": { "change password": { "value": { "current": "1234", "password": "abc!dfg352l?" } } } }, "application/vnd.xentral.mfa+json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "action": { "type": "string", "enum": [ "enable", "disable" ], "example": "enable", "description": "Auth Platform MFA action to process" } } }, "examples": { "change user MFA state": { "value": { "action": "enable" } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "User" ], "operationId": "user.delete", "summary": "Delete single user", "description": "Deletes a single user resource identified by its URI", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/users/{id}/permissions": { "get": { "tags": [ "User" ], "operationId": "user.permission.view", "summary": "View user's permissions", "description": "Returns all permissions of an user.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "An object containing all permissions of a user.", "type": "object", "additionalProperties": false, "required": [ "isAdmin", "modules" ], "properties": { "isAdmin": { "description": "Indicating if the user is an admin user", "type": "boolean", "example": false }, "modules": { "description": "List of modules with their permissions.", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name", "permissions" ], "properties": { "name": { "type": "string" }, "permissions": { "type": "array", "items": { "type": "string" } } }, "example": { "name": "benutzer", "permissions": [ "list", "edit" ] } } } }, "example": { "isAdmin": false, "modules": [ { "name": "benutzer", "permissions": [ "list", "edit" ] } ] } } } } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/users/{id}/resetPassword/request": { "post": { "tags": [ "User" ], "operationId": "user.reset-password", "summary": "Request reset password email", "description": "Request reset password email", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/warehouses": { "get": { "tags": [ "Warehouse" ], "operationId": "warehouse.list", "parameters": [ { "in": "query", "name": "page", "required": false, "style": "deepObject", "schema": { "type": "object", "additionalProperties": false, "required": [ "number", "size" ], "properties": { "number": { "type": "string", "pattern": "\\d+", "description": "Page number should be an integer greater than or equal to 1" }, "size": { "type": "string", "pattern": "\\d+", "description": "Page size should usually be an integer between 10 and 50." } } } }, { "name": "filter", "in": "query", "style": "deepObject", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string", "enum": [ "designation", "id" ] }, "op": { "type": "string", "enum": [ "greaterThan", "lessThan", "equals", "notEquals", "in", "notIn" ] }, "value": { "oneOf": [ { "type": "string", "title": "String" }, { "type": "array", "description": "Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.", "title": "Array", "items": { "type": "string" } } ] } } } } } ], "summary": "Warehouse list", "description": "This endpoint is only available as beta version and will introduce breaking changes without further notice or versioning. Returns a list of active warehouses.", "responses": { "200": { "description": "Operation completed successfully.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "project": { "required": [ "id" ], "description": "Information for the project used by a Warehouse", "type": "object", "nullable": true, "properties": { "id": { "type": "string", "description": "Id of project" } }, "example": { "id": "1" } }, "designation": { "type": "string", "description": "Name of the warehouse", "example": "Returns" } } }, "description": "Representation of a list of Warehouses", "example": [ { "id": "1", "project": { "id": "2" }, "designation": "Returns" } ] }, "extra": { "type": "object", "required": [ "totalCount", "page" ], "additionalProperties": false, "x-description-ignore": true, "properties": { "totalCount": { "description": "the total count of all items", "type": "integer", "example": 1 }, "page": { "description": "The pagination object containing the current page number and size", "type": "object", "required": [ "number", "size" ], "additionalProperties": false, "properties": { "number": { "description": "The current page number", "type": "integer", "example": 1 }, "size": { "description": "The size of the pages", "type": "integer", "example": 10 } }, "example": { "number": 1, "size": 10 } } }, "example": { "totalCount": 1, "page": { "number": 1, "size": 10 } } } } }, "example": { "data": [ { "id": "9", "designation": "Returns", "project": { "id": "3" } } ], "extra": { "totalCount": 1, "page": { "number": 1, "size": 1 } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/webhooks": { "post": { "tags": [ "Webhook" ], "operationId": "webhook.create", "summary": "Create a webhook", "description": "Creates a new webhook.", "requestBody": { "description": "Webhook create request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "name", "url", "signatureKey", "events" ], "properties": { "name": { "type": "string", "example": "My example application" }, "url": { "type": "string", "format": "uri", "example": "https://example.com/receive-xentral-webhook-endpoint" }, "signatureKey": { "type": "string", "example": "rf5ecjtvnWQ4mTDfzOTZXgQuuCSFfR66" }, "events": { "type": "array", "description": "The webhookEventType resource.", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "description": "The unique identifier of the event type.", "type": "string", "example": "com.xentral.salesOrder.created.v1" } } }, "example": [ { "id": "com.xentral.salesOrder.created.v1" }, { "id": "com.xentral.salesOrder.updated.v1" } ] } } }, "examples": { "Create new webhook": { "value": { "name": "My example application", "url": "https://example.com/receive-xentral-webhook-endpoint", "signatureKey": "rf5ecjtvnWQ4mTDfzOTZXgQuuCSFfR66", "events": [ { "id": "com.xentral.salesOrder.created.v1" }, { "id": "com.xentral.salesOrder.updated.v1" } ] } } } } } }, "responses": { "201": { "description": "Resource successfully created response", "headers": { "Location": { "schema": { "type": "string", "example": "https://example.xentral.biz/api/users/17" }, "description": "URI of the created resource" } }, "content": { "text/html": { "schema": { "type": "string", "enum": [ "" ], "nullable": true } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "get": { "tags": [ "Webhook" ], "operationId": "webhook.list", "summary": "List webhooks", "description": "List webhooks.", "responses": { "200": { "description": "Webhook list.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "The webhook resource list.", "x-example-ignore": true, "type": "array", "items": { "description": "The webhook resource.", "example": { "id": "1234", "name": "My example application", "url": "https://example.com/receive-xentral-webhook-endpoint", "events": [ { "id": "com.xentral.salesOrder.created.v1" }, { "id": "com.xentral.salesOrder.updated.v1" } ] }, "type": "object", "additionalProperties": false, "required": [ "id", "name", "url", "events" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "description": "The name of the webhook.", "type": "string", "example": "My example application" }, "url": { "description": "The URL of the application which should receive the webhook request.", "type": "string", "format": "uri", "example": "https://example.com/receive-xentral-webhook-endpoint" }, "events": { "type": "array", "description": "The webhookEventType resource.", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "description": "The unique identifier of the event type.", "type": "string", "example": "com.xentral.salesOrder.created.v1" } } }, "example": [ { "id": "com.xentral.salesOrder.created.v1" }, { "id": "com.xentral.salesOrder.updated.v1" } ] } } } } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/webhooks/{id}": { "get": { "tags": [ "Webhook" ], "operationId": "webhook.view", "summary": "View a webhook", "description": "View a webhook.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "200": { "description": "Webhook view.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "The webhook resource.", "example": { "id": "1234", "name": "My example application", "url": "https://example.com/receive-xentral-webhook-endpoint", "events": [ { "id": "com.xentral.salesOrder.created.v1" }, { "id": "com.xentral.salesOrder.updated.v1" } ] }, "type": "object", "additionalProperties": false, "required": [ "id", "name", "url", "events" ], "properties": { "id": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." }, "name": { "description": "The name of the webhook.", "type": "string", "example": "My example application" }, "url": { "description": "The URL of the application which should receive the webhook request.", "type": "string", "format": "uri", "example": "https://example.com/receive-xentral-webhook-endpoint" }, "events": { "type": "array", "description": "The webhookEventType resource.", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "description": "The unique identifier of the event type.", "type": "string", "example": "com.xentral.salesOrder.created.v1" } } }, "example": [ { "id": "com.xentral.salesOrder.created.v1" }, { "id": "com.xentral.salesOrder.updated.v1" } ] } } } } } } } }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "404": { "description": "Resource was not found or not enough access privileges" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } }, "patch": { "tags": [ "Webhook" ], "operationId": "webhook.update", "summary": "Update a webhook", "description": "Update a webhook.", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "requestBody": { "description": "Webhook update request payload", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "example": "My example application" }, "url": { "type": "string", "format": "uri", "example": "https://example.com/receive-xentral-webhook-endpoint" }, "signatureKey": { "type": "string", "example": "rf5ecjtvnWQ4mTDfzOTZXgQuuCSFfR66" }, "events": { "type": "array", "description": "The webhookEventType resource", "items": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "description": "The unique identifier of the event type.", "type": "string", "example": "com.xentral.salesOrder.created.v1" } } }, "example": [ { "id": "com.xentral.salesOrder.created.v1" }, { "id": "com.xentral.salesOrder.updated.v1" } ] } } }, "examples": { "Update webhook": { "value": { "events": [ { "id": "com.xentral.salesOrder.created.v1" } ] } } } } } }, "responses": { "204": { "description": "Operation completed successfully, no response body" }, "400": { "description": "IETF RFC 9457 Problem API compliant response", "content": { "application/problem+json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "title", "violations" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/request-validation" ] }, "title": { "type": "string", "minLength": 1, "example": "Request payload validation failed." }, "violations": { "oneOf": [ { "type": "array", "items": { "type": "object", "example": { "username": [ "This value should not be blank." ], "email": [ "This value is not a valid email address." ] } }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." }, { "type": "object", "example": { "_": [ "This value should contain at most `9` elements." ] }, "description": "This field will be a mirrored request payload with only invalid fields and values replaced by error messages." } ] } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflict" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "items" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/conflictItems" ] }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "title", "messages" ], "properties": { "id": { "type": "integer" }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "array", "items": { "type": "string" } } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "title", "messages" ], "properties": { "type": { "type": "string", "enum": [ "https://api.xentral.biz/problems/generic-validation" ] }, "title": { "type": "string", "minLength": 1 }, "messages": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } ] } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "415": { "description": "Resource representation send in the request is not supported." }, "429": { "description": "Too many API calls made." } } }, "delete": { "tags": [ "Webhook" ], "operationId": "webhook.delete", "summary": "Delete a webhook.", "description": "Delete a webhook", "parameters": [ { "in": "path", "name": "id", "required": true, "description": "The resource's identifier.", "schema": { "type": "string", "pattern": "\\d+", "example": "17", "description": "Resource identifier." } } ], "responses": { "204": { "description": "Operation completed successfully, no response body" }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "429": { "description": "Too many API calls made." } } } }, "/api/v1/webhookEventTypes": { "get": { "tags": [ "Webhook" ], "operationId": "webhookEventTypes.list", "summary": "List webhook event types", "description": "List webhooks event types.", "parameters": [ { "name": "xentralVersion", "in": "query", "example": "24.11.0", "schema": { "type": "string", "default": "latest" }, "description": "Xentral version to request the available event types for." } ], "responses": { "200": { "description": "Webhook event type list.", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "description": "List of webhook event types.", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "group" ], "properties": { "id": { "description": "The unique identifier of the event type.", "type": "string", "example": "com.xentral.salesOrder.created.v1" }, "group": { "description": "The group the event type belongs to.", "type": "string", "example": "salesOrder" } } }, "example": [ { "id": "com.xentral.salesOrder.created.v1", "group": "salesOrder" }, { "id": "com.xentral.product.created.v1", "group": "product" }, { "id": "com.xentral.product.propertiesCreated.v1", "group": "product" } ] } } } } } }, "401": { "description": "Unable to authenticate the client", "content": { "text/html": { "schema": { "type": "string", "example": "Unauthorized" } } } }, "403": { "description": "Unable to authorize the client" }, "406": { "description": "Requested resource representation does not exist." }, "429": { "description": "Too many API calls made." } } } } } }