diff --git a/adminapi.json b/adminapi.json index 016d5bf..c04e73d 100644 --- a/adminapi.json +++ b/adminapi.json @@ -71040,21 +71040,36 @@ } } }, - "/_info/events.json": { - "get": { + "/_action/order/document/download": { + "post": { "tags": [ - "System Info & Health Check" + "Document Management" ], - "summary": "Get Business events", - "description": "Get a list of about the business events.", - "operationId": "business-events", + "summary": "Download a documents", + "description": "Download a multiple documents in one pdf file.", + "operationId": "downloadDocuments", + "requestBody": { + "description": "documentIds", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + } + } + }, "responses": { "200": { - "description": "Returns a list of about the business events.", + "description": "The documents.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/businessEventsResponse" + "type": "string", + "format": "binary" } } } @@ -71062,219 +71077,282 @@ } } }, - "/_action/order_transaction_capture_refund/{refundId}": { + "/_action/order/document/{documentTypeName}/create": { "post": { "tags": [ - "Order Management" + "Document Management" ], - "summary": "Refund an order transaction capture", - "description": "Refunds an order transaction capture.", - "operationId": "orderTransactionCaptureRefund", + "summary": "Create documents for orders", + "description": "Creates documents for orders. Documents can for example be an invoice or a delivery note.", + "operationId": "createDocuments", "parameters": [ { - "name": "refundId", + "name": "documentTypeName", "in": "path", - "description": "Identifier of the order transaction capture refund.", + "description": "The type of document to create", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], - "responses": { - "204": { - "description": "Refund was successful" - }, - "400": { - "description": "Something went wrong, while processing the refund" - }, - "404": { - "description": "Refund with id not found" - } - } - } - }, - "/_info/flow-actions.json": { - "get": { - "tags": [ - "System Info & Health Check" - ], - "summary": "Get actions for flow builder", - "description": "Get a list of action for flow builder.", - "operationId": "flow-actions", - "responses": { - "200": { - "description": "Returns a list of action for flow builder.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/flowBuilderActionsResponse" + "requestBody": { + "description": "test", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "required": [ + "orderId", + "type" + ], + "properties": { + "orderId": { + "description": "Identifier of the order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "description": "Type of the document to be generated.", + "type": "string" + }, + "fileType": { + "description": "Type of document file to be generated.", + "type": "string", + "default": "pdf" + }, + "static": { + "description": "Indicate if the document should be static or not.", + "type": "boolean", + "default": false + }, + "referencedDocumentId": { + "description": "Identifier of the reverenced document.", + "type": "string", + "default": "null", + "pattern": "^[0-9a-f]{32}$" + }, + "config": { + "description": "Document specific configuration, like documentNumber, documentDate, documentComment.", + "type": "object" + } + } } } } } - } - } - }, - "/_action/cache": { - "delete": { - "tags": [ - "System Operations" - ], - "summary": "Clear caches", - "description": "The cache is immediately cleared synchronously for all used adapters.", - "operationId": "clearCache", + }, "responses": { - "204": { - "description": "Returns a no content response indicating that the cache has been cleared." + "200": { + "description": "Documents created successfully. The `api/_action/order/document/create` route can be used to download the document." } } } }, - "/_action/cache-delayed": { - "delete": { + "/_action/order/{orderId}/state/{transition}": { + "post": { "tags": [ - "System Operations" + "Order Management" ], - "summary": "Clear all invalidated caches", - "description": "Directly triggers invalidation of all cache tags that were marked for invalidation.", - "operationId": "clearCacheDelayed", - "responses": { - "204": { - "description": "Returns a no content response indicating that the cache has been cleared." + "summary": "Transition an order to a new state", + "description": "Changes the order state and informs the customer via email if configured.", + "operationId": "orderStateTransition", + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "Identifier of the order.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "transition", + "in": "path", + "description": "The `action_name` of the `state_machine_transition`. For example `process` if the order state should change from open to in progress.\n\nNote: If you choose a transition that is not available, you will get an error that lists possible transitions for the current state.", + "required": true, + "schema": { + "type": "string" + } } - } - } - }, - "/_info/health-check": { - "get": { - "tags": [ - "System Info & Health Check" ], - "summary": "Check that the Application is running", - "operationId": "healthCheck", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "sendMail": { + "description": "Controls if a mail should be sent to the customer." + }, + "documentIds": { + "description": "A list of document identifiers that should be attached", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "mediaIds": { + "description": "A list of media identifiers that should be attached", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "stateFieldName": { + "description": "This is the state column within the order database table. There should be no need to change it from the default.", + "type": "string", + "default": "stateId" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns empty response" - }, - "500": { - "description": "Application is not working properly" + "description": "Todo: Use ref of `state_machine_transition` here" } } } }, - "/_info/system-health-check": { + "/_action/document/{documentId}/{deepLinkCode}": { "get": { "tags": [ - "System Info & Health Check" + "Document Management" ], - "summary": "Perform a detailed system health check", - "operationId": "systemHealthCheck", + "summary": "Download a document", + "description": "Download a document by its identifier and deep link code.", + "operationId": "downloadDocument", "parameters": [ { - "name": "verbose", + "name": "documentId", + "in": "path", + "description": "Identifier of the document to be downloaded.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "in": "path", + "description": "A unique hash code which was generated when the document was created.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "download", "in": "query", - "required": false, + "description": "This parameter controls the `Content-Disposition` header. If set to `true` the header will be set to `attachment` else `inline`.", "schema": { "type": "boolean", "default": false - }, - "description": "Include detailed information in the response" + } } ], "responses": { "200": { - "description": "Returns the system health check results", + "description": "The document.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "type": "object", - "properties": { - "checks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "healthy": { - "type": "boolean" - }, - "status": { - "type": "string" - }, - "message": { - "type": "string" - }, - "extra": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - } - } - } - } - } + "type": "string", + "format": "binary" } } } - }, - "500": { - "description": "Application is not working properly" } } } }, - "/_action/number-range/reserve/{type}/{saleschannel}": { - "get": { + "/_action/document/{documentId}/upload": { + "post": { "tags": [ "Document Management" ], - "summary": "Reserve or preview a number-range / document number.", - "description": "This endpoint provides functionality to reserve or preview a document number which can be used to create a new document using the `/_action/order/{orderId}/document/{documentTypeName}` endpoint.\n\nThe number generated by the endpoint will be reserved and the number pointer will be incremented with every call. For preview purposes, you can add the `?preview=1` parameter to the request. In that case, the number will not be incremented.", - "operationId": "numberRangeReserve", + "summary": "Upload a file for a document", + "description": "Uploads a file for a document. This prevents the document from being dynamically generated and delivers the uploaded file instead, when the document is downloaded.\n\nNote:\n* The document is required to be `static`\n* A document can only have one media file\n\nThe are two methods of providing a file to this route:\n * Use a typical file upload and provide the file in the request\n * Fetch the file from an url. This only works if the `shopware.media.enable_url_upload_feature` variable is set to true in the shop environment.\nTo use file upload via url, the content type has to be `application/json` and the parameter `url` has to be provided.", + "operationId": "uploadToDocument", "parameters": [ { - "name": "type", + "name": "documentId", "in": "path", - "description": "`technicalName` of the document type (e.g. `document_invoice`). Available types can be fetched with the `/api/document-type endpoint`.", + "description": "Identifier of the document the new file should be added to.", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "saleschannel", - "in": "path", - "description": "Sales channel for the number range. Number ranges can be defined per sales channel, so you can pass a sales channel ID here.", + "name": "fileName", + "in": "query", + "description": "Name of the uploaded file.", "required": true, "schema": { "type": "string" } }, { - "name": "preview", + "name": "extension", "in": "query", - "description": "If this parameter has a true value, the number will not actually be incremented, but only previewed.", - "required": false, + "description": "Extension of the uploaded file. For example `pdf`", + "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], + "requestBody": { + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/json": { + "schema": { + "required": [ + "url" + ], + "properties": { + "url": { + "description": "The url of the document that will be downloaded.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "The generated number", + "description": "Document uploaded successful", "content": { "application/json": { "schema": { "properties": { - "number": { - "description": "The generated (or previewed) document number.", + "documentId": { + "description": "Identifier of the document.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "documentDeepLink": { + "description": "A unique hash code which is required to open the document.", "type": "string" } }, @@ -71282,159 +71360,183 @@ } } } - }, - "400": { - "description": "Number range not found" - } - } - } - }, - "/_action/indexing": { - "post": { - "tags": [ - "System Operations" - ], - "summary": "Run indexer", - "description": "Runs all registered indexer in the shop asynchronously.", - "operationId": "indexing", - "responses": { - "200": { - "description": "Returns an empty response indicating that the indexing process started." } } } }, - "/_action/indexing/{indexer}": { + "/_action/increment/{pool}": { "post": { "tags": [ - "System Operations" + "Increment Storage" ], - "summary": "Iterate an indexer", - "description": "Starts a defined indexer with an offset.\n\nfor the next request. `finish: true` in the response indicates that the indexer is finished", - "operationId": "iterate", + "summary": "Increment a value in the specified pool", + "description": "Increments a value by key in the specified increment pool. This operation increments the counter for the given key and returns a success response.", + "operationId": "incrementValue", "parameters": [ { - "name": "indexer", + "name": "pool", "in": "path", - "description": "Name of the indexer to iterate.", + "description": "The name of the increment pool (e.g., 'user_activity', 'message_queue').", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + }, + { + "name": "cluster", + "in": "query", + "description": "Optional cluster identifier for the increment operation.", + "required": false, + "schema": { + "type": "string" } } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { + "type": "object", + "required": [ + "key" + ], "properties": { - "offset": { - "description": "The offset for the iteration.", - "type": "integer" + "key": { + "type": "string", + "description": "The key to increment in the pool." } - }, - "type": "object" + } } } } }, "responses": { "200": { - "description": "Returns information about the iteration.", + "description": "Successfully incremented the value", "content": { "application/json": { "schema": { + "type": "object", "properties": { - "finish": { - "description": "Indicates if the indexing process finished.", - "type": "boolean" - }, - "offset": { - "description": "Offset to be used for the next iteration.", - "type": "integer" + "success": { + "type": "boolean", + "example": true } - }, - "type": "object" + } } } } + }, + "400": { + "description": "Bad request - key parameter missing or cluster parameter missing" } } - } - }, - "/_info/routes": { + }, "get": { - "summary": "Get API routes", - "operationId": "getRoutes", + "tags": [ + "Increment Storage" + ], + "summary": "List increment values from pool", + "description": "Retrieves a list of increment values from the specified pool with pagination support.", + "operationId": "getIncrementValues", + "parameters": [ + { + "name": "pool", + "in": "path", + "description": "The name of the increment pool to list values from.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "cluster", + "in": "query", + "description": "Cluster identifier for the increment operation.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "Maximum number of items to return.", + "required": false, + "schema": { + "type": "integer", + "default": 5, + "minimum": 1 + } + }, + { + "name": "offset", + "in": "query", + "description": "Number of items to skip for pagination.", + "required": false, + "schema": { + "type": "integer", + "default": 0, + "minimum": 0 + } + } + ], "responses": { "200": { - "description": "Successful operation", + "description": "List of increment values", "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "endpoints" - ], - "properties": { - "endpoints": { - "type": "array", - "items": { - "type": "object", - "required": [ - "methods", - "path" - ], - "properties": { - "methods": { - "type": "array", - "items": { - "type": "string" - } - }, - "path": { - "type": "string" - } - } + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The increment key" + }, + "count": { + "type": "integer", + "description": "The current count value" } } } } } } + }, + "400": { + "description": "Bad request - cluster parameter missing" } } } }, - "/_action/sync": { + "/_action/decrement/{pool}": { "post": { "tags": [ - "Bulk Operations" + "Increment Storage" ], - "summary": "Bulk edit entities", - "description": "Starts a sync process for the list of provided actions. This can be upserts and deletes on different entities to an asynchronous process in the background. You can control the behaviour with the `indexing-behavior` header.", - "operationId": "sync", + "summary": "Decrement a value in the specified pool", + "description": "Decrements a value by key in the specified increment pool. This operation decrements the counter for the given key and returns a success response.", + "operationId": "decrementValue", "parameters": [ { - "name": "fail-on-error", - "in": "header", - "description": "To continue upcoming actions on errors, set the `fail-on-error` header to `false`.", + "name": "pool", + "in": "path", + "description": "The name of the increment pool.", + "required": true, "schema": { - "type": "boolean", - "default": true + "type": "string" } }, { - "name": "indexing-behavior", - "in": "header", - "description": "Controls the indexing behavior.\n - `disable-indexing`: Data indexing is completely disabled", + "name": "cluster", + "in": "query", + "description": "Optional cluster identifier for the decrement operation.", + "required": false, "schema": { - "type": "string", - "enum": [ - "use-queue-indexing", - "disable-indexing" - ] + "type": "string" } } ], @@ -71443,85 +71545,327 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "required": [ - "action", - "entity", - "payload" - ], + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "type": "string", + "description": "The key to decrement in the pool." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully decremented the value", + "content": { + "application/json": { + "schema": { + "type": "object", "properties": { - "action": { - "description": "The action indicates what should happen with the provided payload.\n * `upsert`: The Sync API does not differ between create and update operations,\n but always performs an upsert operation. During an upsert, the system checks whether the entity already exists in the\n system and updates it if an identifier has been passed, otherwise a new entity is created with this identifier.\n * `delete`: Deletes entities with the provided identifiers", - "type": "string", - "enum": [ - "upsert", - "delete" - ] - }, - "entity": { - "description": "The entity that should be processed with the payload.", - "type": "string", - "example": "product" + "success": { + "type": "boolean", + "example": true + } + } + } + } + } + }, + "400": { + "description": "Bad request - key parameter missing or cluster parameter missing" + } + } + } + }, + "/_action/reset-increment/{pool}": { + "post": { + "tags": [ + "Increment Storage" + ], + "summary": "Reset increment values in pool", + "description": "Resets increment values in the specified pool. Can reset all values or a specific key if provided.", + "operationId": "resetIncrementValues", + "parameters": [ + { + "name": "pool", + "in": "path", + "description": "The name of the increment pool to reset.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "cluster", + "in": "query", + "description": "Cluster identifier for the reset operation.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Optional specific key to reset. If not provided, all values in the pool will be reset." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully reset the increment values", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + } + } + } + } + } + }, + "400": { + "description": "Bad request - cluster parameter missing" + } + } + } + }, + "/_action/delete-increment/{pool}": { + "delete": { + "tags": [ + "Increment Storage" + ], + "summary": "Delete increment keys from pool", + "description": "Deletes specific increment keys from the specified pool.", + "operationId": "deleteIncrementKeys", + "parameters": [ + { + "name": "pool", + "in": "path", + "description": "The name of the increment pool to delete keys from.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "cluster", + "in": "query", + "description": "Cluster identifier for the delete operation.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "keys" + ], + "properties": { + "keys": { + "type": "array", + "items": { + "type": "string" }, - "payload": { - "description": "Contains a list of changesets for an entity. If the action type is `delete`,\n a list of identifiers can be provided.", - "type": "array", - "items": { - "type": "object" - } + "description": "Array of keys to delete from the pool." + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Successfully deleted the increment keys" + }, + "400": { + "description": "Bad request - invalid keys parameter or cluster parameter missing" + } + } + } + }, + "/_action/order/{orderId}/order-address": { + "post": { + "tags": [ + "Order address" + ], + "summary": "Update order addresses", + "description": "Endpoint which takes a list of mapping objects as payload and updates the order addresses accordingly", + "operationId": "updateOrderAddresses", + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "Identifier of the order.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mapping": { + "type": "array", + "items": { + "type": "object", + "properties": { + "customerAddressId": { + "type": "string", + "description": "The ID of the customer address" + }, + "type": { + "type": "string", + "description": "The type of the address" + }, + "deliveryId": { + "description": "The ID of the delivery (optional)", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "customerAddressId", + "type" + ] }, - "filter": { - "description": "Only for delete operations: Instead of providing IDs in the payload, the filter by which should be deleted can be provided directly.", - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - } - }, - "type": "object" + "description": "The mapping of order addresses" + } } } } + }, + "required": true + }, + "responses": { + "204": { + "description": "Returns a no content response indicating that the update has been made." + } + } + } + }, + "/_info/events.json": { + "get": { + "tags": [ + "System Info & Health Check" + ], + "summary": "Get Business events", + "description": "Get a list of about the business events.", + "operationId": "business-events", + "responses": { + "200": { + "description": "Returns a list of about the business events.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/businessEventsResponse" + } + } + } + } + } + } + }, + "/oauth/token": { + "post": { + "tags": [ + "Authorization & Authentication" + ], + "summary": "Fetch an access token", + "description": "Fetch a access token that can be used to perform authenticated requests. For more information take a look at the [Authentication documentation](https://shopware.stoplight.io/docs/admin-api/docs/concepts/authentication-authorisation.md).", + "operationId": "token", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/OAuthPasswordGrant" + }, + { + "$ref": "#/components/schemas/OAuthRefreshTokenGrant" + }, + { + "$ref": "#/components/schemas/OAuthClientCredentialsGrant" + } + ] + } + } } }, "responses": { "200": { - "description": "Returns a sync result containing information about the updated entities", + "description": "Authorized successfully.", "content": { "application/json": { "schema": { + "required": [ + "token_type", + "expires_in", + "access_token" + ], "properties": { - "data": { - "description": "Object with information about updated entities", - "type": "object" + "token_type": { + "description": "Type of the token.", + "type": "string" }, - "notFound": { - "description": "Object with information about not found entities", - "type": "object" + "expires_in": { + "description": "Token lifetime in seconds.", + "type": "integer" }, - "deleted": { - "description": "Object with information about deleted entities", - "type": "object" + "access_token": { + "description": "The access token that can be used for subsequent requests", + "type": "string" + }, + "refresh_token": { + "description": "The refresh token that can be used to refresh the access token. This field is not returned on grant type `refresh_token`.", + "type": "string" } }, "type": "object" } } } + }, + "400": { + "$ref": "#/components/responses/400" } } } @@ -71799,108 +72143,43 @@ } } }, - "/_action/order_delivery/{orderDeliveryId}/state/{transition}": { - "post": { + "/_info/config": { + "get": { "tags": [ - "Order Management" - ], - "summary": "Transition an order delivery to a new state", - "description": "Changes the order delivery state and informs the customer via email if configured.", - "operationId": "orderDeliveryStateTransition", - "parameters": [ - { - "name": "orderDeliveryId", - "in": "path", - "description": "Identifier of the order delivery.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "transition", - "in": "path", - "description": "The `action_name` of the `state_machine_transition`. For example `process` if the order state should change from open to in progress.\n\nNote: If you choose a transition which is not possible, you will get an error that lists possible transition for the actual state.", - "required": true, - "schema": { - "type": "string" - } - } + "System Info & Health Check" ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "properties": { - "sendMail": { - "description": "Controls if a mail should be send to the customer." - }, - "documentIds": { - "description": "A list of document identifiers that should be attached", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "mediaIds": { - "description": "A list of media identifiers that should be attached", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "stateFieldName": { - "description": "This is the state column within the order delivery database table. There should be no need to change it from the default.", - "type": "string", - "default": "stateId" - } - }, - "type": "object" - } - } - } - }, + "summary": "Get API information", + "description": "Get information about the API", + "operationId": "config", "responses": { "200": { - "description": "Todo: Use ref of `state_machine_transition` here" + "description": "Returns information about the API.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/infoConfigResponse" + } + } + } } } } }, - "/_action/order/document/download": { - "post": { + "/_info/flow-actions.json": { + "get": { "tags": [ - "Document Management" + "System Info & Health Check" ], - "summary": "Download a documents", - "description": "Download a multiple documents in one pdf file.", - "operationId": "downloadDocuments", - "requestBody": { - "description": "documentIds", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - } - } - }, + "summary": "Get actions for flow builder", + "description": "Get a list of action for flow builder.", + "operationId": "flow-actions", "responses": { "200": { - "description": "The documents.", + "description": "Returns a list of action for flow builder.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/flowBuilderActionsResponse" } } } @@ -71908,139 +72187,105 @@ } } }, - "/_action/order/document/{documentTypeName}/create": { + "/_action/scheduled-task/run": { "post": { "tags": [ - "Document Management" + "System Operations" ], - "summary": "Create documents for orders", - "description": "Creates documents for orders. Documents can for example be an invoice or a delivery note.", - "operationId": "createDocuments", - "parameters": [ - { - "name": "documentTypeName", - "in": "path", - "description": "The type of document to create", - "required": true, - "schema": { - "type": "string" + "summary": "Run scheduled tasks.", + "description": "Starts the scheduled task worker to handle the next scheduled tasks.", + "operationId": "runScheduledTasks", + "responses": { + "200": { + "description": "Returns a success message indicating a successful run.", + "content": { + "application/json": { + "schema": { + "properties": { + "message": { + "description": "Success message", + "type": "string" + } + }, + "type": "object" + } + } } } + } + } + }, + "/_action/scheduled-task/min-run-interval": { + "get": { + "tags": [ + "System Operations" ], - "requestBody": { - "description": "test", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "orderId", - "type" - ], + "summary": "Get the minimum schedules task interval", + "description": "Fetches the smallest interval that a scheduled task uses.", + "operationId": "getMinRunInterval", + "responses": { + "200": { + "description": "Returns the minimum interval.", + "content": { + "application/json": { + "schema": { "properties": { - "orderId": { - "description": "Identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "description": "Type of the document to be generated.", + "minRunInterval": { + "description": "Minimal interval in seconds.", "type": "string" - }, - "fileType": { - "description": "Type of document file to be generated.", - "type": "string", - "default": "pdf" - }, - "static": { - "description": "Indicate if the document should be static or not.", - "type": "boolean", - "default": false - }, - "referencedDocumentId": { - "description": "Identifier of the reverenced document.", - "type": "string", - "default": "null", - "pattern": "^[0-9a-f]{32}$" - }, - "config": { - "description": "Document specific configuration, like documentNumber, documentDate, documentComment.", - "type": "object" } - } + }, + "type": "object" } } } } - }, + } + } + }, + "/_action/indexing": { + "post": { + "tags": [ + "System Operations" + ], + "summary": "Run indexer", + "description": "Runs all registered indexer in the shop asynchronously.", + "operationId": "indexing", "responses": { "200": { - "description": "Documents created successfully. The `api/_action/order/document/create` route can be used to download the document." + "description": "Returns an empty response indicating that the indexing process started." } } } }, - "/_action/order/{orderId}/state/{transition}": { + "/_action/indexing/{indexer}": { "post": { "tags": [ - "Order Management" + "System Operations" ], - "summary": "Transition an order to a new state", - "description": "Changes the order state and informs the customer via email if configured.", - "operationId": "orderStateTransition", + "summary": "Iterate an indexer", + "description": "Starts a defined indexer with an offset.\n\nfor the next request. `finish: true` in the response indicates that the indexer is finished", + "operationId": "iterate", "parameters": [ { - "name": "orderId", + "name": "indexer", "in": "path", - "description": "Identifier of the order.", + "description": "Name of the indexer to iterate.", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "transition", - "in": "path", - "description": "The `action_name` of the `state_machine_transition`. For example `process` if the order state should change from open to in progress.\n\nNote: If you choose a transition that is not available, you will get an error that lists possible transitions for the current state.", - "required": true, - "schema": { - "type": "string" - } } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "properties": { - "sendMail": { - "description": "Controls if a mail should be sent to the customer." - }, - "documentIds": { - "description": "A list of document identifiers that should be attached", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "mediaIds": { - "description": "A list of media identifiers that should be attached", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "stateFieldName": { - "description": "This is the state column within the order database table. There should be no need to change it from the default.", - "type": "string", - "default": "stateId" + "offset": { + "description": "The offset for the iteration.", + "type": "integer" } }, "type": "object" @@ -72050,94 +72295,219 @@ }, "responses": { "200": { - "description": "Todo: Use ref of `state_machine_transition` here" + "description": "Returns information about the iteration.", + "content": { + "application/json": { + "schema": { + "properties": { + "finish": { + "description": "Indicates if the indexing process finished.", + "type": "boolean" + }, + "offset": { + "description": "Offset to be used for the next iteration.", + "type": "integer" + } + }, + "type": "object" + } + } + } } } } }, - "/_info/openapi3.json": { + "/_info/health-check": { "get": { "tags": [ "System Info & Health Check" ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the admin API in OpenAPI format.", - "operationId": "api-info", + "summary": "Check that the Application is running", + "operationId": "healthCheck", + "responses": { + "200": { + "description": "Returns empty response" + }, + "500": { + "description": "Application is not working properly" + } + } + } + }, + "/_info/system-health-check": { + "get": { + "tags": [ + "System Info & Health Check" + ], + "summary": "Perform a detailed system health check", + "operationId": "systemHealthCheck", "parameters": [ { - "name": "type", + "name": "verbose", "in": "query", - "description": "Type of the api", + "required": false, "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] - } + "type": "boolean", + "default": false + }, + "description": "Include detailed information in the response" } ], "responses": { "200": { - "$ref": "#/components/responses/OpenApi3" + "description": "Returns the system health check results", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "checks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "healthy": { + "type": "boolean" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "extra": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Application is not working properly" } } } }, - "/oauth/token": { + "/_action/cache": { + "delete": { + "tags": [ + "System Operations" + ], + "summary": "Clear caches", + "description": "The cache is immediately cleared synchronously for all used adapters.", + "operationId": "clearCache", + "responses": { + "204": { + "description": "Returns a no content response indicating that the cache has been cleared." + } + } + } + }, + "/_action/cache-delayed": { + "delete": { + "tags": [ + "System Operations" + ], + "summary": "Clear all invalidated caches", + "description": "Directly triggers invalidation of all cache tags that were marked for invalidation.", + "operationId": "clearCacheDelayed", + "responses": { + "204": { + "description": "Returns a no content response indicating that the cache has been cleared." + } + } + } + }, + "/_action/index": { "post": { "tags": [ - "Authorization & Authentication" + "System Operations" ], - "summary": "Fetch an access token", - "description": "Fetch a access token that can be used to perform authenticated requests. For more information take a look at the [Authentication documentation](https://shopware.stoplight.io/docs/admin-api/docs/concepts/authentication-authorisation.md).", - "operationId": "token", + "summary": "Run indexer", + "description": "Runs all registered indexer in the shop asynchronously.", + "operationId": "index", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/OAuthPasswordGrant" - }, - { - "$ref": "#/components/schemas/OAuthRefreshTokenGrant" - }, - { - "$ref": "#/components/schemas/OAuthClientCredentialsGrant" + "properties": { + "skip": { + "description": "Array of indexers/updaters to be skipped.", + "type": "array", + "items": { + "type": "string" + } } - ] + }, + "type": "object" } } } }, + "responses": { + "204": { + "description": "Returns a no content response indicating that the indexing progress startet." + } + } + } + }, + "/_action/number-range/reserve/{type}/{saleschannel}": { + "get": { + "tags": [ + "Document Management" + ], + "summary": "Reserve or preview a number-range / document number.", + "description": "This endpoint provides functionality to reserve or preview a document number which can be used to create a new document using the `/_action/order/{orderId}/document/{documentTypeName}` endpoint.\n\nThe number generated by the endpoint will be reserved and the number pointer will be incremented with every call. For preview purposes, you can add the `?preview=1` parameter to the request. In that case, the number will not be incremented.", + "operationId": "numberRangeReserve", + "parameters": [ + { + "name": "type", + "in": "path", + "description": "`technicalName` of the document type (e.g. `document_invoice`). Available types can be fetched with the `/api/document-type endpoint`.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "saleschannel", + "in": "path", + "description": "Sales channel for the number range. Number ranges can be defined per sales channel, so you can pass a sales channel ID here.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "preview", + "in": "query", + "description": "If this parameter has a true value, the number will not actually be incremented, but only previewed.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { - "description": "Authorized successfully.", + "description": "The generated number", "content": { "application/json": { "schema": { - "required": [ - "token_type", - "expires_in", - "access_token" - ], "properties": { - "token_type": { - "description": "Type of the token.", - "type": "string" - }, - "expires_in": { - "description": "Token lifetime in seconds.", - "type": "integer" - }, - "access_token": { - "description": "The access token that can be used for subsequent requests", - "type": "string" - }, - "refresh_token": { - "description": "The refresh token that can be used to refresh the access token. This field is not returned on grant type `refresh_token`.", + "number": { + "description": "The generated (or previewed) document number.", "type": "string" } }, @@ -72147,24 +72517,24 @@ } }, "400": { - "$ref": "#/components/responses/400" + "description": "Number range not found" } } } }, - "/_action/order/{orderId}/order-address": { + "/_action/order_transaction_capture_refund/{refundId}": { "post": { "tags": [ - "Order address" + "Order Management" ], - "summary": "Update order addresses", - "description": "Endpoint which takes a list of mapping objects as payload and updates the order addresses accordingly", - "operationId": "updateOrderAddresses", + "summary": "Refund an order transaction capture", + "description": "Refunds an order transaction capture.", + "operationId": "orderTransactionCaptureRefund", "parameters": [ { - "name": "orderId", + "name": "refundId", "in": "path", - "description": "Identifier of the order.", + "description": "Identifier of the order transaction capture refund.", "required": true, "schema": { "type": "string", @@ -72172,111 +72542,89 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mapping": { - "type": "array", - "items": { - "type": "object", - "properties": { - "customerAddressId": { - "type": "string", - "description": "The ID of the customer address" - }, - "type": { - "type": "string", - "description": "The type of the address" - }, - "deliveryId": { - "description": "The ID of the delivery (optional)", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "customerAddressId", - "type" - ] - }, - "description": "The mapping of order addresses" - } - } - } - } - }, - "required": true - }, - "responses": { - "204": { - "description": "Returns a no content response indicating that the update has been made." - } - } - } - }, - "/_action/container_cache": { - "delete": { - "tags": [ - "System Operations" - ], - "summary": "Clear container caches", - "description": "The container cache is immediately cleared synchronously.", - "operationId": "clearContainerCache", "responses": { "204": { - "description": "Returns a no content response indicating that the container cache is cleared." + "description": "Refund was successful" + }, + "400": { + "description": "Something went wrong, while processing the refund" + }, + "404": { + "description": "Refund with id not found" } } } }, - "/_info/config": { + "/_info/openapi3.json": { "get": { "tags": [ "System Info & Health Check" ], - "summary": "Get API information", - "description": "Get information about the API", - "operationId": "config", + "summary": "Get OpenAPI Specification", + "description": "Get information about the admin API in OpenAPI format.", + "operationId": "api-info", + "parameters": [ + { + "name": "type", + "in": "query", + "description": "Type of the api", + "schema": { + "type": "string", + "enum": [ + "jsonapi", + "json" + ] + } + } + ], "responses": { "200": { - "description": "Returns information about the API.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/infoConfigResponse" - } - } - } + "$ref": "#/components/responses/OpenApi3" } } } }, - "/_action/scheduled-task/run": { + "/_proxy/generate-imitate-customer-token": { "post": { "tags": [ - "System Operations" + "Customer impersonation" ], - "summary": "Run scheduled tasks.", - "description": "Starts the scheduled task worker to handle the next scheduled tasks.", - "operationId": "runScheduledTasks", + "summary": "Generate a customer impersonation token", + "description": "Generates a customer impersonation token for the given customer and sales channel.\n\nThe token can be used to authenticate as the customer in the sales channel.", + "operationId": "generateImitateCustomerToken", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "customerId", + "salesChannelId" + ], + "properties": { + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "salesChannelId": { + "description": "ID of the sales channel", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns a success message indicating a successful run.", + "description": "The generated customer impersonation token.", "content": { "application/json": { "schema": { "properties": { - "message": { - "description": "Success message", + "token": { + "description": "The generated customer impersonation token", "type": "string" } }, @@ -72288,27 +72636,115 @@ } } }, - "/_action/scheduled-task/min-run-interval": { - "get": { + "/_action/order_delivery/{orderDeliveryId}/state/{transition}": { + "post": { "tags": [ - "System Operations" + "Order Management" ], - "summary": "Get the minimum schedules task interval", - "description": "Fetches the smallest interval that a scheduled task uses.", - "operationId": "getMinRunInterval", + "summary": "Transition an order delivery to a new state", + "description": "Changes the order delivery state and informs the customer via email if configured.", + "operationId": "orderDeliveryStateTransition", + "parameters": [ + { + "name": "orderDeliveryId", + "in": "path", + "description": "Identifier of the order delivery.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "transition", + "in": "path", + "description": "The `action_name` of the `state_machine_transition`. For example `process` if the order state should change from open to in progress.\n\nNote: If you choose a transition which is not possible, you will get an error that lists possible transition for the actual state.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "sendMail": { + "description": "Controls if a mail should be send to the customer." + }, + "documentIds": { + "description": "A list of document identifiers that should be attached", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "mediaIds": { + "description": "A list of media identifiers that should be attached", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "stateFieldName": { + "description": "This is the state column within the order delivery database table. There should be no need to change it from the default.", + "type": "string", + "default": "stateId" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns the minimum interval.", + "description": "Todo: Use ref of `state_machine_transition` here" + } + } + } + }, + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", + "responses": { + "200": { + "description": "Successful operation", "content": { "application/json": { "schema": { + "type": "object", + "required": [ + "endpoints" + ], "properties": { - "minRunInterval": { - "description": "Minimal interval in seconds.", - "type": "string" + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } } - }, - "type": "object" + } } } } @@ -72388,50 +72824,92 @@ } } }, - "/_action/index": { + "/_action/index-products": { "post": { "tags": [ "System Operations" ], - "summary": "Run indexer", - "description": "Runs all registered indexer in the shop asynchronously.", - "operationId": "index", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "skip": { - "description": "Array of indexers/updaters to be skipped.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, + "summary": "Send product indexing message", + "description": "Dispatches a product indexing message to the message bus, with the provided ids", + "operationId": "productIndexing", "responses": { "204": { - "description": "Returns a no content response indicating that the indexing progress startet." + "description": "Returns an empty response indicating that the message dispatched." } } } }, - "/_action/index-products": { - "post": { + "/_action/container_cache": { + "delete": { "tags": [ "System Operations" ], - "summary": "Send product indexing message", - "description": "Dispatches a product indexing message to the message bus, with the provided ids", - "operationId": "productIndexing", + "summary": "Clear container caches", + "description": "The container cache is immediately cleared synchronously.", + "operationId": "clearContainerCache", "responses": { "204": { - "description": "Returns an empty response indicating that the message dispatched." + "description": "Returns a no content response indicating that the container cache is cleared." + } + } + } + }, + "/_info/message-stats.json": { + "get": { + "summary": "Get statistics for recently processed messages in the message queue", + "operationId": "getMessageStats", + "responses": { + "200": { + "description": "Statistics received", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether message queue statistics are enabled in configuration" + }, + "stats": { + "type": [ + "object", + "null" + ], + "properties": { + "totalMessagesProcessed": { + "type": "integer" + }, + "processedSince": { + "type": "string", + "format": "date-time" + }, + "averageTimeInQueue": { + "type": "number", + "format": "float" + }, + "messageTypeStats": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "count": { + "type": "integer" + } + } + } + } + } + } + } + } + } + } } } } @@ -72512,34 +72990,6 @@ } } }, - "/_info/version": { - "get": { - "tags": [ - "System Info & Health Check" - ], - "summary": "Get the Shopware version", - "description": "Get the version of the Shopware instance", - "operationId": "infoShopwareVersion", - "responses": { - "200": { - "description": "Returns the version of the Shopware instance.", - "content": { - "application/json": { - "schema": { - "properties": { - "version": { - "description": "The Shopware version.", - "type": "string" - } - }, - "type": "object" - } - } - } - } - } - } - }, "/_action/cache_info": { "get": { "tags": [ @@ -72576,47 +73026,23 @@ } } }, - "/_proxy/generate-imitate-customer-token": { - "post": { + "/_info/version": { + "get": { "tags": [ - "Customer impersonation" + "System Info & Health Check" ], - "summary": "Generate a customer impersonation token", - "description": "Generates a customer impersonation token for the given customer and sales channel.\n\nThe token can be used to authenticate as the customer in the sales channel.", - "operationId": "generateImitateCustomerToken", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "customerId", - "salesChannelId" - ], - "properties": { - "customerId": { - "description": "ID of the customer", - "type": "string" - }, - "salesChannelId": { - "description": "ID of the sales channel", - "type": "string" - } - }, - "type": "object" - } - } - } - }, + "summary": "Get the Shopware version", + "description": "Get the version of the Shopware instance", + "operationId": "infoShopwareVersion", "responses": { "200": { - "description": "The generated customer impersonation token.", + "description": "Returns the version of the Shopware instance.", "content": { "application/json": { "schema": { "properties": { - "token": { - "description": "The generated customer impersonation token", + "version": { + "description": "The Shopware version.", "type": "string" } }, @@ -72628,136 +73054,115 @@ } } }, - "/_action/document/{documentId}/{deepLinkCode}": { - "get": { - "tags": [ - "Document Management" - ], - "summary": "Download a document", - "description": "Download a document by its identifier and deep link code.", - "operationId": "downloadDocument", - "parameters": [ - { - "name": "documentId", - "in": "path", - "description": "Identifier of the document to be downloaded.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "in": "path", - "description": "A unique hash code which was generated when the document was created.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "download", - "in": "query", - "description": "This parameter controls the `Content-Disposition` header. If set to `true` the header will be set to `attachment` else `inline`.", - "schema": { - "type": "boolean", - "default": false - } - } - ], - "responses": { - "200": { - "description": "The document.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - } - } - } - }, - "/_action/document/{documentId}/upload": { + "/_action/sync": { "post": { "tags": [ - "Document Management" + "Bulk Operations" ], - "summary": "Upload a file for a document", - "description": "Uploads a file for a document. This prevents the document from being dynamically generated and delivers the uploaded file instead, when the document is downloaded.\n\nNote:\n* The document is required to be `static`\n* A document can only have one media file\n\nThe are two methods of providing a file to this route:\n * Use a typical file upload and provide the file in the request\n * Fetch the file from an url. This only works if the `shopware.media.enable_url_upload_feature` variable is set to true in the shop environment.\nTo use file upload via url, the content type has to be `application/json` and the parameter `url` has to be provided.", - "operationId": "uploadToDocument", + "summary": "Bulk edit entities", + "description": "Starts a sync process for the list of provided actions. This can be upserts and deletes on different entities to an asynchronous process in the background. You can control the behaviour with the `indexing-behavior` header.", + "operationId": "sync", "parameters": [ { - "name": "documentId", - "in": "path", - "description": "Identifier of the document the new file should be added to.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "fileName", - "in": "query", - "description": "Name of the uploaded file.", - "required": true, + "name": "fail-on-error", + "in": "header", + "description": "To continue upcoming actions on errors, set the `fail-on-error` header to `false`.", "schema": { - "type": "string" + "type": "boolean", + "default": true } }, { - "name": "extension", - "in": "query", - "description": "Extension of the uploaded file. For example `pdf`", - "required": true, + "name": "indexing-behavior", + "in": "header", + "description": "Controls the indexing behavior.\n - `disable-indexing`: Data indexing is completely disabled", "schema": { - "type": "string" + "type": "string", + "enum": [ + "use-queue-indexing", + "disable-indexing" + ] } } ], "requestBody": { + "required": true, "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - }, "application/json": { "schema": { - "required": [ - "url" - ], - "properties": { - "url": { - "description": "The url of the document that will be downloaded.", - "type": "string" - } - }, - "type": "object" + "type": "array", + "items": { + "required": [ + "action", + "entity", + "payload" + ], + "properties": { + "action": { + "description": "The action indicates what should happen with the provided payload.\n * `upsert`: The Sync API does not differ between create and update operations,\n but always performs an upsert operation. During an upsert, the system checks whether the entity already exists in the\n system and updates it if an identifier has been passed, otherwise a new entity is created with this identifier.\n * `delete`: Deletes entities with the provided identifiers", + "type": "string", + "enum": [ + "upsert", + "delete" + ] + }, + "entity": { + "description": "The entity that should be processed with the payload.", + "type": "string", + "example": "product" + }, + "payload": { + "description": "Contains a list of changesets for an entity. If the action type is `delete`,\n a list of identifiers can be provided.", + "type": "array", + "items": { + "type": "object" + } + }, + "filter": { + "description": "Only for delete operations: Instead of providing IDs in the payload, the filter by which should be deleted can be provided directly.", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + } + }, + "type": "object" + } } } } }, "responses": { "200": { - "description": "Document uploaded successful", + "description": "Returns a sync result containing information about the updated entities", "content": { "application/json": { "schema": { "properties": { - "documentId": { - "description": "Identifier of the document.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "data": { + "description": "Object with information about updated entities", + "type": "object" }, - "documentDeepLink": { - "description": "A unique hash code which is required to open the document.", - "type": "string" + "notFound": { + "description": "Object with information about not found entities", + "type": "object" + }, + "deleted": { + "description": "Object with information about deleted entities", + "type": "object" } }, "type": "object" @@ -72814,6 +73219,442 @@ } } } + }, + "/_action/theme/{themeId}/configuration": { + "get": { + "tags": [ + "Theme" + ], + "summary": "Get theme configuration", + "description": "Returns the theme configuration including fields, blocks, and current values", + "operationId": "getThemeConfiguration", + "parameters": [ + { + "name": "themeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Theme merged configuration", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "fields": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "label": { + "type": "string", + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0" + }, + "helpText": { + "type": [ + "string", + "null" + ], + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0" + }, + "type": { + "type": "string" + }, + "value": { + "type": [ + "string", + "null" + ] + }, + "editable": { + "type": "boolean" + }, + "block": { + "type": [ + "string", + "null" + ] + }, + "section": { + "type": [ + "string", + "null" + ] + }, + "tab": { + "type": [ + "string", + "null" + ] + }, + "order": { + "type": [ + "integer", + "null" + ] + }, + "sectionOrder": { + "type": [ + "integer", + "null" + ] + }, + "blockOrder": { + "type": [ + "integer", + "null" + ] + }, + "tabOrder": { + "type": [ + "integer", + "null" + ] + }, + "custom": { + "type": [ + "object", + "null" + ], + "additionalProperties": true + }, + "scss": { + "type": [ + "string", + "null" + ] + }, + "fullWidth": { + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "name", + "label", + "type", + "value", + "editable" + ] + } + }, + "blocks": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "label": { + "type": "object", + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0", + "additionalProperties": { + "type": "string" + } + } + }, + "required": [ + "label" + ] + } + }, + "configInheritance": { + "type": "array", + "items": { + "type": "string" + } + }, + "themeTechnicalName": { + "type": "string" + }, + "currentFields": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isInherited": { + "type": "boolean" + }, + "value": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "isInherited", + "value" + ] + } + }, + "baseThemeFields": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "isInherited": { + "type": "boolean" + }, + "value": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "isInherited", + "value" + ] + } + } + }, + "required": [ + "fields", + "blocks", + "themeTechnicalName", + "currentFields", + "baseThemeFields" + ] + } + } + } + } + } + } + }, + "/_action/theme/{themeId}/assign/{salesChannelId}": { + "post": { + "tags": [ + "Theme" + ], + "summary": "Assign theme to sales channel", + "description": "Assigns a theme to a specific sales channel", + "operationId": "assignTheme", + "parameters": [ + { + "name": "themeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "salesChannelId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Theme assigned successfully", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, + "/_action/theme/{themeId}/reset": { + "patch": { + "tags": [ + "Theme" + ], + "summary": "Reset theme configuration", + "description": "Resets the theme configuration to its default values", + "operationId": "resetTheme", + "parameters": [ + { + "name": "themeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Theme reset successfully", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, + "/_action/theme/{themeId}/structured-fields": { + "get": { + "tags": [ + "Theme" + ], + "summary": "Get theme configuration fields in structured format", + "description": "Returns the theme configuration fields in a structured format with tabs, blocks, sections and fields", + "operationId": "getThemeConfigurationStructuredFields", + "parameters": [ + { + "name": "themeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Structured theme configuration", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "tabs": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "labelSnippetKey": { + "type": "string" + }, + "label": { + "type": "string", + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0" + }, + "blocks": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "labelSnippetKey": { + "type": "string" + }, + "label": { + "type": "string", + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0" + }, + "sections": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "labelSnippetKey": { + "type": "string" + }, + "label": { + "type": "string", + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "labelSnippetKey": { + "type": "string" + }, + "helpTextSnippetKey": { + "type": "string" + }, + "type": { + "type": "string" + }, + "custom": { + "type": [ + "object", + "null" + ], + "additionalProperties": true + }, + "fullWidth": { + "type": [ + "boolean", + "null" + ] + }, + "label": { + "type": "string", + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0" + }, + "helpText": { + "type": [ + "string", + "null" + ], + "deprecated": true, + "description": "This field is deprecated and will be removed in v6.8.0.0" + } + }, + "required": [ + "labelSnippetKey", + "helpTextSnippetKey", + "type", + "label" + ] + } + } + }, + "required": [ + "labelSnippetKey", + "label", + "fields" + ] + } + } + }, + "required": [ + "labelSnippetKey", + "label", + "sections" + ] + } + } + }, + "required": [ + "labelSnippetKey", + "label", + "blocks" + ] + } + } + }, + "required": [ + "tabs" + ] + } + } + } + } + } + } } }, "components": { @@ -73499,6 +74340,9 @@ "checkoutGatewayUrl": { "type": "string" }, + "contextGatewayUrl": { + "type": "string" + }, "inAppPurchasesGatewayUrl": { "type": "string" }, @@ -74021,6 +74865,9 @@ "checkoutGatewayUrl": { "type": "string" }, + "contextGatewayUrl": { + "type": "string" + }, "inAppPurchasesGatewayUrl": { "type": "string" }, @@ -84597,6 +85444,37 @@ }, "type": "object" }, + "stateMachineHistoryEntries": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/integration/1115b855bb2a508bc2ca0609cc2d0f65/stateMachineHistoryEntries" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "state_machine_history" + }, + "id": { + "type": "string", + "example": "c78c7ea361b7def0876b75bd1bd37879" + } + } + } + } + }, + "type": "object" + }, "aclRoles": { "properties": { "links": { @@ -84729,6 +85607,12 @@ "app": { "$ref": "#/components/schemas/App" }, + "stateMachineHistoryEntries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StateMachineHistory" + } + }, "aclRoles": { "type": "array", "items": { @@ -86783,8 +87667,7 @@ "type": "string" }, "fileExtension": { - "type": "string", - "readOnly": true + "type": "string" }, "uploadedAt": { "type": "string", @@ -87662,7 +88545,6 @@ }, "fileExtension": { "type": "string", - "readOnly": true, "description": "Type of file indication. For example: jpeg, png." }, "uploadedAt": { @@ -90122,6 +91004,22 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "primaryOrderDeliveryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderDeliveryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderTransactionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderTransactionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "currencyId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -90282,6 +91180,9 @@ "source": { "type": "string" }, + "taxCalculationType": { + "type": "string" + }, "stateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -90386,6 +91287,64 @@ }, "type": "object" }, + "primaryOrderDelivery": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order/a240fa27925a635b08dc28c9e4f9216d/primaryOrderDelivery" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "order_delivery" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "fdeeebdae32b4dfa39d3f4372d0554e9" + } + } + } + }, + "type": "object" + }, + "primaryOrderTransaction": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order/a240fa27925a635b08dc28c9e4f9216d/primaryOrderTransaction" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "order_transaction" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "bbaa9e50388c524d97853a4fc4476b0e" + } + } + } + }, + "type": "object" + }, "orderCustomer": { "properties": { "links": { @@ -90828,6 +91787,22 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of the billing address version." }, + "primaryOrderDeliveryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderDeliveryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderTransactionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderTransactionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "currencyId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -91021,6 +91996,9 @@ "type": "string", "description": "Source of orders either via normal order placement or subscriptions." }, + "taxCalculationType": { + "type": "string" + }, "stateId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -91108,6 +92086,12 @@ "stateMachineState": { "$ref": "#/components/schemas/StateMachineState" }, + "primaryOrderDelivery": { + "$ref": "#/components/schemas/OrderDelivery" + }, + "primaryOrderTransaction": { + "$ref": "#/components/schemas/OrderTransaction" + }, "orderCustomer": { "$ref": "#/components/schemas/OrderCustomer" }, @@ -92115,6 +93099,35 @@ } }, "type": "object" + }, + "primaryOrder": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order-delivery/ec47a00e89a14dee454b699af8831df4/primaryOrder" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "order" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "f3654baea1bb37cbbd3b86e9793c3766" + } + } + } + }, + "type": "object" } }, "type": "object" @@ -92291,6 +93304,9 @@ "items": { "$ref": "#/components/schemas/OrderDeliveryPosition" } + }, + "primaryOrder": { + "$ref": "#/components/schemas/Order" } }, "type": "object" @@ -93794,6 +94810,35 @@ } }, "type": "object" + }, + "primaryOrder": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order-transaction/117c998b69fea8e51bd46a905f8cdbeb/primaryOrder" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "order" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "f3654baea1bb37cbbd3b86e9793c3766" + } + } + } + }, + "type": "object" } }, "type": "object" @@ -93935,6 +94980,9 @@ "$ref": "#/components/schemas/OrderTransactionCapture" } }, + "primaryOrder": { + "$ref": "#/components/schemas/Order" + }, "shippingCosts": { "properties": { "calculatedTaxes": { @@ -103220,6 +104268,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "combinable": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, "customFields": { "type": "object" }, @@ -103433,6 +104485,10 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of media." }, + "combinable": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -109178,6 +110234,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "integrationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -109305,6 +110365,35 @@ } }, "type": "object" + }, + "integration": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/state-machine-history/2981354377022484094791c3f19ffec8/integration" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "integration" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "776ea3bf11df5829827f7afb43c37174" + } + } + } + }, + "type": "object" } }, "type": "object" @@ -109369,6 +110458,10 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of user." }, + "integrationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -109391,6 +110484,9 @@ "user": { "$ref": "#/components/schemas/User" }, + "integration": { + "$ref": "#/components/schemas/Integration" + }, "entityId": { "description": "Unique identity of entity." } @@ -113299,6 +114395,32 @@ }, "type": "object" }, + "flowBuilderActionsResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the flow action" + }, + "requirements": { + "type": "array", + "description": "When requirement fit with aware from `events.json` actions will be shown", + "items": { + "type": "string" + } + }, + "extensions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Extensions data of event" + } + } + } + }, "Criteria": { "type": "object", "description": "Criteria to query entities.", @@ -114166,6 +115288,57 @@ } } }, + "businessEventsResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the event" + }, + "class": { + "type": "string", + "description": "Class name of the event" + }, + "data": { + "type": "object", + "description": "Available data of event" + }, + "aware": { + "type": "array", + "description": "Flow builder will base on awareness to show actions", + "items": { + "type": "string" + } + }, + "extensions": { + "type": "array", + "description": "Extensions data of event", + "items": { + "type": "string" + } + } + } + }, + "properties": { + "name": { + "description": "Unique name of the businessEventsResponse." + }, + "class": { + "description": "Class name of business event." + }, + "data": { + "description": "Internal field." + }, + "aware": { + "description": "Parameter that indicates the areas in which the business event is supported." + }, + "extensions": { + "description": "Internal field." + } + } + }, "OAuthScopes": { "description": "OAuth scopes that should be requested.", "type": "string", @@ -114290,83 +115463,6 @@ } ] }, - "flowBuilderActionsResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the flow action" - }, - "requirements": { - "type": "array", - "description": "When requirement fit with aware from `events.json` actions will be shown", - "items": { - "type": "string" - } - }, - "extensions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Extensions data of event" - } - } - } - }, - "businessEventsResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the event" - }, - "class": { - "type": "string", - "description": "Class name of the event" - }, - "data": { - "type": "object", - "description": "Available data of event" - }, - "aware": { - "type": "array", - "description": "Flow builder will base on awareness to show actions", - "items": { - "type": "string" - } - }, - "extensions": { - "type": "array", - "description": "Extensions data of event", - "items": { - "type": "string" - } - } - } - }, - "properties": { - "name": { - "description": "Unique name of the businessEventsResponse." - }, - "class": { - "description": "Class name of business event." - }, - "data": { - "description": "Internal field." - }, - "aware": { - "description": "Parameter that indicates the areas in which the business event is supported." - }, - "extensions": { - "description": "Internal field." - } - } - }, "Cart": { "properties": { "id": { diff --git a/adminapi.summary.json b/adminapi.summary.json index 3f59c69..bcb21e1 100644 --- a/adminapi.summary.json +++ b/adminapi.summary.json @@ -5,8 +5,11 @@ "/_action/cache_info", "/_action/cleanup", "/_action/container_cache", + "/_action/decrement/{pool}", + "/_action/delete-increment/{pool}", "/_action/document/{documentId}/upload", "/_action/document/{documentId}/{deepLinkCode}", + "/_action/increment/{pool}", "/_action/index", "/_action/index-products", "/_action/indexing", @@ -24,13 +27,19 @@ "/_action/order_delivery/{orderDeliveryId}/state/{transition}", "/_action/order_transaction/{orderTransactionId}/state/{transition}", "/_action/order_transaction_capture_refund/{refundId}", + "/_action/reset-increment/{pool}", "/_action/scheduled-task/min-run-interval", "/_action/scheduled-task/run", "/_action/sync", + "/_action/theme/{themeId}/assign/{salesChannelId}", + "/_action/theme/{themeId}/configuration", + "/_action/theme/{themeId}/reset", + "/_action/theme/{themeId}/structured-fields", "/_info/config", "/_info/events.json", "/_info/flow-actions.json", "/_info/health-check", + "/_info/message-stats.json", "/_info/openapi3.json", "/_info/routes", "/_info/system-health-check",