{ "openapi": "3.1.0", "info": { "title": "App Management API", "description": "REST API for managing Adobe Commerce App Builder apps: resolving app configuration, managing configuration values, running the installation and uninstallation lifecycle, and managing the scope tree.", "version": "2.0.0", "contact": {}, "license": { "identifier": "Apache-2.0", "name": "Apache-2.0" }, "x-meta": { "packageVersion": "1.7.0" } }, "servers": [ { "url": "/" } ], "paths": { "/app-config": { "get": { "operationId": "getAppConfig", "summary": "Get Commerce App Configuration", "description": "Returns the Commerce App configuration after resolving and validating it against the schema.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The resolved and validated Commerce App configuration.", "content": { "application/json": { "schema": { "description": "Current app configuration", "type": "object", "properties": { "metadata": { "type": "object", "properties": { "id": { "type": "string", "maxLength": 100, "pattern": "^[a-zA-Z0-9-]+$" }, "displayName": { "type": "string", "maxLength": 50, "minLength": 1 }, "description": { "type": "string", "maxLength": 255, "minLength": 1 }, "version": { "type": "string", "minLength": 1, "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$" } }, "required": [ "id", "displayName", "description", "version" ] }, "businessConfig": { "type": "object", "properties": { "schema": { "type": "array", "items": { "oneOf": [ { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "list" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": ["label", "value"] } }, "selectionMode": { "const": "single" }, "default": { "type": "string", "minLength": 1 } }, "required": [ "name", "type", "options", "selectionMode", "default" ] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "list" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": ["label", "value"] } }, "selectionMode": { "const": "multiple" }, "default": { "type": "array", "items": { "type": "string", "minLength": 1 } } }, "required": [ "name", "type", "options", "selectionMode", "default" ] } ] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "text" }, "default": { "type": "string" } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "password" }, "default": { "const": "" } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "email" }, "default": { "anyOf": [ { "const": "" }, { "type": "string", "format": "email" } ] } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "url" }, "default": { "anyOf": [ { "const": "" }, { "type": "string", "format": "uri" } ] } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "tel" }, "default": { "anyOf": [ { "const": "" }, { "type": "string", "pattern": "^\\+?[0-9\\s\\-()]+$" } ] } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "boolean" }, "default": { "type": "boolean" } }, "required": ["name", "type", "default"] } ] }, "minItems": 1 } }, "required": [] }, "eventing": { "type": "object", "properties": { "commerce": { "type": "array", "items": { "type": "object", "properties": { "provider": { "$ref": "#/components/schemas/EventProvider" }, "events": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string", "maxLength": 100, "minLength": 1, "pattern": "^[a-zA-Z0-9 _.:()\\-,@/]+$" }, "description": { "type": "string", "maxLength": 255, "minLength": 1, "pattern": "^[a-zA-Z0-9 _.:()\\-,@/]+$" }, "runtimeActions": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$" } }, "name": { "type": "string", "maxLength": 180, "minLength": 1, "pattern": "^(?:plugin|observer)\\.[a-z_]+(?:\\.[a-z_]+)*$" }, "fields": { "type": "array", "items": { "$ref": "#/components/schemas/CommerceEventField" }, "minItems": 1 }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/CommerceEventRule" } }, "destination": { "type": "string", "minLength": 1 }, "hipaa_audit_required": { "type": "boolean" }, "priority": { "type": "boolean" }, "force": { "type": "boolean" } }, "required": [ "label", "description", "runtimeActions", "name", "fields" ] } } }, "required": ["provider", "events"] } }, "external": { "type": "array", "items": { "type": "object", "properties": { "provider": { "$ref": "#/components/schemas/EventProvider" }, "events": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string", "maxLength": 100, "minLength": 1, "pattern": "^[a-zA-Z0-9 _.:()\\-,@/]+$" }, "description": { "type": "string", "maxLength": 255, "minLength": 1, "pattern": "^[a-zA-Z0-9 _.:()\\-,@/]+$" }, "runtimeActions": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$" } }, "name": { "type": "string", "maxLength": 180, "minLength": 1, "pattern": "^[\\w\\-_.]+$" } }, "required": [ "label", "description", "runtimeActions", "name" ] } } }, "required": ["provider", "events"] } } }, "required": [] }, "adminUi": { "description": "The Admin UI SDK v2 configuration block (served as the `adminUi` property of the app-config response).", "$ref": "#/components/schemas/AdminUiConfiguration" }, "installation": { "type": "object", "properties": { "messages": { "type": "object", "properties": { "preInstallation": { "type": "string", "maxLength": 1000, "minLength": 1 }, "postInstallation": { "type": "string", "maxLength": 1000, "minLength": 1 } }, "required": [] }, "customInstallationSteps": { "type": "array", "items": { "type": "object", "properties": { "script": { "type": "string", "minLength": 1, "pattern": "^(?:\\.{0,2}\\/)*[\\w-/]*[\\w-]+\\.js$" }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "description": { "type": "string", "maxLength": 255, "minLength": 1 } }, "required": ["script", "name", "description"] } } }, "required": [] }, "webhooks": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/RuntimeActionWebhookConfig" }, { "$ref": "#/components/schemas/ExternalUrlWebhookConfig" } ] }, "minItems": 1 }, "openApiSpecUrl": { "description": "URL of the OpenAPI spec for this deployment, scoped to the active capabilities. Includes a content-addressed cache key as a query parameter.", "type": "string", "format": "uri", "examples": [ "https://123456-projectname-workspacename.adobeioruntime.net/api/v1/web/app-management/app-config/openapi.json?ck=4f6a2b9c" ] } }, "additionalProperties": true, "required": ["metadata", "openApiSpecUrl"] } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["App Metadata"] } }, "/config": { "get": { "operationId": "getConfiguration", "summary": "Get Configuration Values", "description": "Returns the application configuration schema and the stored values for the requested scope.", "parameters": [ { "name": "scopeId", "in": "query", "required": true, "schema": { "type": "string", "minLength": 1 } }, { "name": "commerceEnv", "in": "query", "required": false, "schema": { "type": "string", "enum": ["paas", "saas"] } }, { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The configuration schema and the stored configuration values for the requested scope. Password fields are masked in the response.", "content": { "application/json": { "schema": { "description": "Current configuration values for the given scope", "type": "object", "properties": { "schema": { "type": "array", "items": { "oneOf": [ { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "list" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": ["label", "value"] } }, "selectionMode": { "const": "single" }, "default": { "type": "string", "minLength": 1 } }, "required": [ "name", "type", "options", "selectionMode", "default" ] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "list" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": ["label", "value"] } }, "selectionMode": { "const": "multiple" }, "default": { "type": "array", "items": { "type": "string", "minLength": 1 } } }, "required": [ "name", "type", "options", "selectionMode", "default" ] } ] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "text" }, "default": { "type": "string" } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "password" }, "default": { "const": "" } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "email" }, "default": { "anyOf": [ { "const": "" }, { "type": "string", "format": "email" } ] } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "url" }, "default": { "anyOf": [ { "const": "" }, { "type": "string", "format": "uri" } ] } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "tel" }, "default": { "anyOf": [ { "const": "" }, { "type": "string", "pattern": "^\\+?[0-9\\s\\-()]+$" } ] } }, "required": ["name", "type", "default"] }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "label": { "type": "string" }, "description": { "type": "string" }, "env": { "type": "array", "items": { "enum": ["paas", "saas"], "type": "string" }, "minItems": 1 }, "type": { "const": "boolean" }, "default": { "type": "boolean" } }, "required": ["name", "type", "default"] } ] } }, "values": { "type": "object", "properties": { "scope": { "$ref": "#/components/schemas/ConfigScope" }, "config": { "type": "array", "items": { "$ref": "#/components/schemas/ConfigValue" } } }, "required": ["scope", "config"] } }, "required": ["schema", "values"] } } } }, "400": { "description": "The request is invalid or could not be parsed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Business Configuration"] }, "put": { "operationId": "putConfiguration", "summary": "Set Configuration Values (Deprecated)", "description": "Replaces all configuration values for a scope. This endpoint is deprecated in favor of PATCH.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "scopeId": { "type": "string", "minLength": 1 }, "config": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "value": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } }, "required": ["name", "value"] } } }, "required": ["scopeId", "config"] } } } }, "responses": { "200": { "description": "The configuration values were successfully updated. Returns the updated configuration with password fields masked.", "headers": { "Cache-Control": { "description": "Prevents clients from caching configuration mutation responses.", "schema": { "const": "no-store" } }, "Deprecation": { "description": "Date when the deprecated PUT configuration endpoint was marked deprecated.", "schema": { "type": "string", "pattern": "^[A-Z][a-z]{2}, \\d{2} [A-Z][a-z]{2} \\d{4} \\d{2}:\\d{2}:\\d{2} GMT$" } } }, "content": { "application/json": { "schema": { "description": "Configuration values updated. Use PATCH instead.", "type": "object", "properties": { "message": { "type": "string" }, "timestamp": { "type": "string", "format": "date-time" }, "scope": { "$ref": "#/components/schemas/ConfigScope" }, "config": { "type": "array", "items": { "$ref": "#/components/schemas/ConfigUpdateEntry" } } }, "required": ["message", "timestamp", "scope", "config"] } } } }, "400": { "description": "The request is invalid or could not be parsed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "deprecated": true, "tags": ["Business Configuration"] }, "patch": { "operationId": "patchConfiguration", "summary": "Patch Configuration Values", "description": "Partially updates configuration values for a scope. Unsets those values that are sent with a null value.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "scopeId": { "type": "string", "minLength": 1 }, "config": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "value": { "anyOf": [ { "anyOf": [ { "type": "boolean" }, { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, { "type": "null" } ] } }, "required": ["name", "value"] } } }, "required": ["scopeId", "config"] } } } }, "responses": { "200": { "description": "The configuration values were successfully updated. Returns the updated configuration with password fields masked.", "headers": { "Cache-Control": { "description": "Prevents clients from caching configuration mutation responses.", "schema": { "const": "no-store" } } }, "content": { "application/json": { "schema": { "description": "Configuration values updated for the given scope", "type": "object", "properties": { "message": { "type": "string" }, "timestamp": { "type": "string", "format": "date-time" }, "scope": { "$ref": "#/components/schemas/ConfigScope" }, "config": { "type": "array", "items": { "$ref": "#/components/schemas/ConfigUpdateEntry" } } }, "required": ["message", "timestamp", "scope", "config"] } } } }, "400": { "description": "The request is invalid or could not be parsed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Business Configuration"] } }, "/installation": { "get": { "operationId": "getInstallationState", "summary": "Get Installation State", "description": "Returns the current installation workflow state if an installation has been started.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The current installation workflow state.", "content": { "application/json": { "schema": { "discriminator": { "propertyName": "status" }, "oneOf": [ { "type": "object", "properties": { "id": { "type": "string" }, "status": { "const": "in-progress" }, "startedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] } }, "required": ["id", "status", "startedAt", "step", "data"] }, { "type": "object", "properties": { "id": { "type": "string" }, "status": { "const": "succeeded" }, "startedAt": { "type": "string", "format": "date-time" }, "completedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] }, "metadata": { "type": "object", "properties": { "isRetry": { "type": "boolean" } }, "required": ["isRetry"] } }, "required": [ "id", "status", "startedAt", "completedAt", "step", "data" ] }, { "type": "object", "properties": { "id": { "type": "string" }, "status": { "const": "failed" }, "startedAt": { "type": "string", "format": "date-time" }, "completedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] }, "error": { "type": "object", "properties": { "path": { "type": "array", "items": { "type": "string" } }, "key": { "type": "string" }, "message": { "type": "string" }, "payload": {} }, "required": ["path", "key"] }, "metadata": { "type": "object", "properties": { "isRetry": { "type": "boolean" } }, "required": ["isRetry"] } }, "required": [ "id", "status", "startedAt", "completedAt", "step", "data", "error" ] } ] } } } }, "204": { "description": "No installation workflow state has been stored yet." }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Management"] }, "post": { "operationId": "startInstallation", "summary": "Start Installation", "description": "Starts the installation workflow and stores the initial execution state.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "appData": { "$ref": "#/components/schemas/AppData" }, "commerceBaseUrl": { "type": "string" }, "commerceEnv": { "type": "string" }, "ioEventsUrl": { "type": "string" }, "ioEventsEnv": { "type": "string" } }, "required": [ "appData", "commerceBaseUrl", "commerceEnv", "ioEventsUrl", "ioEventsEnv" ] } } } }, "responses": { "202": { "description": "The installation workflow was accepted and queued for asynchronous execution.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" }, "activationId": { "type": "string" }, "id": { "type": "string" }, "status": { "const": "in-progress" }, "startedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] } }, "required": [ "message", "activationId", "id", "status", "startedAt", "step", "data" ] } } } }, "400": { "description": "The request is invalid or could not be parsed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "409": { "description": "The installation workflow is already running or has already completed successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } } } }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Management"] } }, "/installation/validation": { "post": { "operationId": "validateInstallation", "summary": "Validate Installation", "description": "Validates the installation inputs and workflow steps without starting installation.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "appData": { "$ref": "#/components/schemas/AppData" }, "commerceBaseUrl": { "type": "string" }, "commerceEnv": { "type": "string" }, "ioEventsUrl": { "type": "string" }, "ioEventsEnv": { "type": "string" } }, "required": [ "appData", "commerceBaseUrl", "commerceEnv", "ioEventsUrl", "ioEventsEnv" ] } } } }, "responses": { "200": { "description": "The validation result, including issue counts and per-step validation results.", "content": { "application/json": { "schema": { "type": "object", "properties": { "valid": { "type": "boolean" }, "summary": { "type": "object", "properties": { "totalIssues": { "type": "number" }, "errors": { "type": "number" }, "warnings": { "type": "number" } }, "required": ["totalIssues", "errors", "warnings"] }, "result": { "$ref": "#/components/schemas/StepValidationResult" } }, "required": ["valid", "summary", "result"] } } } }, "400": { "description": "The request is invalid or could not be parsed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Management"] } }, "/installation/uninstallation": { "get": { "operationId": "getUninstallationState", "summary": "Get Uninstallation State", "description": "Returns the current uninstallation workflow state if an uninstallation has been started.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The current uninstallation workflow state.", "content": { "application/json": { "schema": { "discriminator": { "propertyName": "status" }, "oneOf": [ { "type": "object", "properties": { "id": { "type": "string" }, "status": { "const": "in-progress" }, "startedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] } }, "required": ["id", "status", "startedAt", "step", "data"] }, { "type": "object", "properties": { "id": { "type": "string" }, "status": { "const": "succeeded" }, "startedAt": { "type": "string", "format": "date-time" }, "completedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] }, "metadata": { "type": "object", "properties": { "isRetry": { "type": "boolean" } }, "required": ["isRetry"] } }, "required": [ "id", "status", "startedAt", "completedAt", "step", "data" ] }, { "type": "object", "properties": { "id": { "type": "string" }, "status": { "const": "failed" }, "startedAt": { "type": "string", "format": "date-time" }, "completedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] }, "error": { "type": "object", "properties": { "path": { "type": "array", "items": { "type": "string" } }, "key": { "type": "string" }, "message": { "type": "string" }, "payload": {} }, "required": ["path", "key"] }, "metadata": { "type": "object", "properties": { "isRetry": { "type": "boolean" } }, "required": ["isRetry"] } }, "required": [ "id", "status", "startedAt", "completedAt", "step", "data", "error" ] } ] } } } }, "204": { "description": "No uninstallation workflow state has been stored yet." }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Management"] }, "post": { "operationId": "startUninstallation", "summary": "Start Uninstallation", "description": "Starts the uninstallation workflow and stores the initial execution state.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "appData": { "$ref": "#/components/schemas/AppData" }, "commerceBaseUrl": { "type": "string" }, "commerceEnv": { "type": "string" }, "ioEventsUrl": { "type": "string" }, "ioEventsEnv": { "type": "string" } }, "required": [ "appData", "commerceBaseUrl", "commerceEnv", "ioEventsUrl", "ioEventsEnv" ] } } } }, "responses": { "202": { "description": "The uninstallation workflow was accepted and queued for asynchronous execution.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" }, "activationId": { "type": "string" }, "id": { "type": "string" }, "status": { "const": "in-progress" }, "startedAt": { "type": "string", "format": "date-time" }, "step": { "$ref": "#/components/schemas/StepStatus" }, "data": { "anyOf": [ { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, { "type": "null" } ] } }, "required": [ "message", "activationId", "id", "status", "startedAt", "step", "data" ] } } } }, "400": { "description": "The request is invalid or could not be parsed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "409": { "description": "The uninstallation workflow is already running.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } } } }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Management"] }, "delete": { "operationId": "clearUninstallationState", "summary": "Clear Uninstallation State", "description": "Clears the stored uninstallation workflow state without starting offboarding.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "The stored uninstallation workflow state was cleared." }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Management"] } }, "/scope-tree": { "get": { "operationId": "getScopeTree", "summary": "Get Scope Tree", "description": "Returns the scope tree used by Commerce configuration flows.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The current scope tree, freshly fetched.", "content": { "application/json": { "schema": { "type": "object", "properties": { "scopes": { "type": "array", "items": { "$ref": "#/components/schemas/ScopeNode" } } }, "required": ["scopes"] } } } }, "203": { "description": "The scope tree returned from cache or persisted storage.", "headers": { "x-cache": { "description": "Indicates that the returned scope tree came from cache.", "schema": { "const": "hit" } } }, "content": { "application/json": { "schema": { "description": "Cached scope tree", "type": "object", "properties": { "scopes": { "type": "array", "items": { "$ref": "#/components/schemas/ScopeNode" } } }, "required": ["scopes"] } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Business Configuration"] }, "put": { "operationId": "setCustomScopeTree", "summary": "Set Custom Scope Tree", "description": "Stores a custom scope tree to override the synchronized Commerce scope tree.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "scopes": { "description": "Custom scopes to store. Each code+level combination must be unique across the entire recursive tree.", "type": "array", "items": { "$ref": "#/components/schemas/CustomScopeInput" } } }, "required": ["scopes"] } } } }, "responses": { "200": { "description": "The stored custom scope tree result.", "headers": { "Cache-Control": { "description": "Prevents clients from caching custom scope tree mutation responses.", "schema": { "const": "no-store" } } }, "content": { "application/json": { "schema": { "type": "object", "properties": { "result": { "type": "object", "properties": { "message": { "const": "Custom scope tree updated successfully" }, "timestamp": { "type": "string", "format": "date-time" }, "scopes": { "type": "array", "items": { "$ref": "#/components/schemas/CustomScopeOutput" } } }, "required": ["message", "timestamp", "scopes"] } }, "required": ["result"] } } } }, "400": { "description": "The request body is invalid: the scopes array is missing or not an array, a scope is missing a required field or has an invalid type, a scope uses a reserved code (commerce or global), or two scopes share the same code and level.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Business Configuration"] } }, "/scope-tree/commerce": { "post": { "operationId": "syncCommerceScopes", "summary": "Sync Commerce Scopes", "description": "Synchronizes scope data from Adobe Commerce and updates the local scope tree.", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "commerceBaseUrl": { "type": "string", "minLength": 1 }, "commerceEnv": { "type": "string", "minLength": 1 } }, "required": ["commerceBaseUrl"] } } } }, "responses": { "200": { "description": "The synchronized Commerce scope tree.", "content": { "application/json": { "schema": { "type": "object", "properties": { "scopes": { "type": "array", "items": { "$ref": "#/components/schemas/ScopeNode" } }, "synced": { "const": true } }, "required": ["scopes", "synced"] } } } }, "203": { "description": "The cached scope tree returned when Commerce scopes could not be freshly fetched.", "headers": { "x-cache": { "description": "Indicates that the returned scope tree came from cache.", "schema": { "const": "hit" } } }, "content": { "application/json": { "schema": { "type": "object", "properties": { "scopes": { "type": "array", "items": { "$ref": "#/components/schemas/ScopeNode" } }, "synced": { "const": false } }, "required": ["scopes", "synced"] } } } }, "400": { "description": "The request is invalid or could not be parsed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Business Configuration"] }, "delete": { "operationId": "unsyncCommerceScopes", "summary": "Unsync Commerce Scopes", "description": "Removes the synchronized Commerce scope tree and returns the unsync result (or a no-op message if no scopes were stored).", "parameters": [ { "name": "x-gw-ims-org-id", "in": "header", "description": "Adobe IMS organization ID that identifies the organization for the request.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The result of removing synchronized Commerce scope data.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "enum": [ "Commerce scopes unsynced successfully", "No commerce scopes to unsync" ] } }, "required": ["message"] } } } }, "401": { "description": "You are not authorized to access this resource. Ensure the IMS token and the x-gw-ims-org-id header are correctly set and valid." }, "403": { "description": "The access token is valid, but it is not allowed to access the requested organization or operation." }, "500": { "description": "An unexpected server error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "tags": ["Business Configuration"] } } }, "components": { "schemas": { "ErrorResponse": { "type": "object", "properties": { "message": { "type": "string" }, "error": { "type": "string" } }, "required": ["message"] }, "ValidationErrorResponse": { "type": "object", "properties": { "message": { "type": "string" }, "issues": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "required": ["message"] }, "AppData": { "type": "object", "properties": { "consumerOrgId": { "type": "string", "minLength": 1 }, "orgName": { "type": "string", "minLength": 1 }, "projectId": { "type": "string", "minLength": 1 }, "projectName": { "type": "string", "minLength": 1 }, "projectTitle": { "type": "string", "minLength": 1 }, "workspaceId": { "type": "string", "minLength": 1 }, "workspaceName": { "type": "string", "minLength": 1 }, "workspaceTitle": { "type": "string", "minLength": 1 } }, "required": [ "consumerOrgId", "orgName", "projectId", "projectName", "projectTitle", "workspaceId", "workspaceName", "workspaceTitle" ] }, "ConfigScope": { "type": "object", "properties": { "id": { "type": "string" }, "code": { "type": "string" }, "level": { "type": "string" } }, "required": ["id", "code", "level"] }, "ConfigOrigin": { "type": "object", "properties": { "code": { "type": "string" }, "level": { "type": "string" } }, "required": ["code", "level"] }, "ConfigValue": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "anyOf": [ { "type": "boolean" }, { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "origin": { "$ref": "#/components/schemas/ConfigOrigin" } }, "required": ["name", "value", "origin"] }, "ConfigUpdateEntry": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "anyOf": [ { "type": "boolean" }, { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } }, "required": ["name", "value"] }, "StepMetaInfo": { "type": "object", "properties": { "label": { "type": "string" }, "description": { "type": "string" } }, "required": ["label"] }, "ValidationIssue": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "severity": { "enum": ["error", "warning", "info"] }, "details": { "type": "object", "additionalProperties": {}, "propertyNames": { "type": "string" } } }, "required": ["code", "message", "severity"] }, "EventProvider": { "type": "object", "properties": { "label": { "type": "string", "maxLength": 100, "minLength": 1, "pattern": "^[a-zA-Z0-9 _.:()\\-,@/]+$" }, "description": { "type": "string", "maxLength": 255, "minLength": 1, "pattern": "^[a-zA-Z0-9 _.:()\\-,@/]+$" }, "key": { "type": "string", "maxLength": 50, "pattern": "^[a-zA-Z0-9-]+$" } }, "required": ["label", "description"] }, "CommerceEventField": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "pattern": "^([a-zA-Z0-9_\\-.[\\]]+|\\*)$" }, "source": { "type": "string" } }, "required": ["name"] }, "CommerceEventRule": { "type": "object", "properties": { "field": { "type": "string", "minLength": 1 }, "operator": { "enum": [ "greaterThan", "lessThan", "equal", "regex", "in", "onChange" ] }, "value": { "type": "string", "minLength": 1 } }, "required": ["field", "operator", "value"] }, "WebhookField": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "source": { "type": "string" } }, "required": ["name"] }, "WebhookRule": { "type": "object", "properties": { "field": { "type": "string", "minLength": 1 }, "operator": { "type": "string", "minLength": 1 }, "value": { "type": "string", "minLength": 1 } }, "required": ["field", "operator", "value"] }, "WebhookHeader": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "value": { "type": "string", "minLength": 1 } }, "required": ["name", "value"] }, "WebhookDefinition": { "type": "object", "properties": { "webhook_method": { "type": "string", "minLength": 1 }, "webhook_type": { "type": "string", "minLength": 1 }, "batch_name": { "type": "string", "minLength": 1, "pattern": "^[a-zA-Z0-9_]+$" }, "batch_order": { "type": "number", "minimum": 0 }, "hook_name": { "type": "string", "minLength": 1, "pattern": "^[a-zA-Z0-9_]+$" }, "priority": { "type": "number", "minimum": 0 }, "required": { "type": "boolean" }, "soft_timeout": { "type": "number", "minimum": 0 }, "timeout": { "type": "number", "minimum": 0 }, "method": { "type": "string", "minLength": 1 }, "fallback_error_message": { "type": "string" }, "ttl": { "type": "number", "minimum": 0 }, "fields": { "type": "array", "items": { "$ref": "#/components/schemas/WebhookField" } }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/WebhookRule" } }, "headers": { "type": "array", "items": { "$ref": "#/components/schemas/WebhookHeader" } } }, "required": [ "webhook_method", "webhook_type", "batch_name", "hook_name", "method" ] }, "RuntimeActionWebhookConfig": { "type": "object", "properties": { "label": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 }, "category": { "type": "string", "enum": ["validation", "append", "modification"] }, "runtimeAction": { "type": "string", "minLength": 1 }, "requireAdobeAuth": { "type": "boolean" }, "webhook": { "$ref": "#/components/schemas/WebhookDefinition" } }, "required": ["label", "description", "runtimeAction", "webhook"] }, "ExternalUrlWebhookConfig": { "type": "object", "properties": { "label": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 }, "category": { "type": "string", "enum": ["validation", "append", "modification"] }, "webhook": { "allOf": [ { "$ref": "#/components/schemas/WebhookDefinition" }, { "properties": { "url": { "type": "string", "format": "uri" } }, "required": ["url"] } ] } }, "required": ["label", "description", "webhook"] }, "StepStatus": { "type": "object", "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "path": { "type": "array", "items": { "type": "string" } }, "meta": { "$ref": "#/components/schemas/StepMetaInfo" }, "status": { "enum": ["pending", "in-progress", "succeeded", "failed"] }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/StepStatus" } } }, "required": ["name", "id", "path", "meta", "status", "children"], "title": "StepStatus" }, "StepValidationResult": { "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "array", "items": { "type": "string" } }, "meta": { "$ref": "#/components/schemas/StepMetaInfo" }, "issues": { "type": "array", "items": { "$ref": "#/components/schemas/ValidationIssue" } }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/StepValidationResult" } } }, "required": ["name", "path", "meta", "issues", "children"], "title": "StepValidationResult" }, "ScopeNode": { "type": "object", "properties": { "id": { "type": "string" }, "code": { "type": "string" }, "label": { "type": "string" }, "level": { "type": "string" }, "is_editable": { "type": "boolean" }, "is_final": { "type": "boolean" }, "is_removable": { "type": "boolean" }, "commerce_id": { "type": "number" }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/ScopeNode" } } }, "required": [ "id", "code", "label", "level", "is_editable", "is_final", "is_removable" ], "title": "ScopeNode" }, "CustomScopeOutput": { "type": "object", "properties": { "id": { "type": "string" }, "code": { "type": "string" }, "label": { "type": "string" }, "level": { "type": "string" }, "is_editable": { "type": "boolean" }, "is_final": { "type": "boolean" }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/CustomScopeOutput" } } }, "required": ["id", "code", "label", "level", "is_editable", "is_final"], "title": "CustomScopeOutput" }, "AdminUiMenu": { "type": "object", "properties": { "id": { "type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9_/:]+$" }, "label": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 }, "pageTitle": { "type": "string", "minLength": 1 }, "parentMenu": { "type": "string", "enum": [ "sales", "catalog", "customers", "marketing", "content", "reports", "stores", "system" ] }, "sandboxPermissions": { "$ref": "#/components/schemas/AdminUiSandboxPermissions" } }, "required": ["id", "label", "description"] }, "AdminUiSandboxPermissions": { "type": "array", "items": { "type": "string", "enum": ["allow-downloads", "allow-modals", "allow-popups"] }, "minItems": 1 }, "AdminUiMassAction": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "string", "minLength": 1 }, "label": { "type": "string", "minLength": 1 }, "type": { "const": "view" }, "path": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 }, "confirm": { "type": "object", "properties": { "title": { "type": "string", "minLength": 1 }, "message": { "type": "string", "minLength": 1 } } }, "notifications": { "type": "object", "properties": { "success": { "type": "string", "minLength": 1 }, "error": { "type": "string", "minLength": 1 } } }, "selectionLimit": { "type": "number", "minimum": 1 }, "sandboxPermissions": { "type": "array", "items": { "type": "string", "enum": ["allow-downloads", "allow-modals", "allow-popups"] } } }, "required": ["id", "label", "type", "path"], "additionalProperties": false }, { "type": "object", "properties": { "id": { "type": "string", "minLength": 1 }, "label": { "type": "string", "minLength": 1 }, "type": { "const": "worker" }, "runtimeAction": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 }, "confirm": { "type": "object", "properties": { "title": { "type": "string", "minLength": 1 }, "message": { "type": "string", "minLength": 1 } } }, "notifications": { "type": "object", "properties": { "success": { "type": "string", "minLength": 1 }, "error": { "type": "string", "minLength": 1 } } }, "selectionLimit": { "type": "number", "minimum": 1 }, "timeout": { "type": "number", "minimum": 1 } }, "required": ["id", "label", "type", "runtimeAction"], "additionalProperties": false } ] }, "AdminUiConfiguration": { "type": "object", "properties": { "menu": { "$ref": "#/components/schemas/AdminUiMenu" }, "order": { "type": "object", "properties": { "massActions": { "type": "array", "items": { "$ref": "#/components/schemas/AdminUiMassAction" } }, "gridColumns": { "$ref": "#/components/schemas/AdminUiGridColumns" } } }, "product": { "type": "object", "properties": { "massActions": { "type": "array", "items": { "$ref": "#/components/schemas/AdminUiMassAction" } }, "gridColumns": { "$ref": "#/components/schemas/AdminUiGridColumns" } } }, "customer": { "type": "object", "properties": { "massActions": { "type": "array", "items": { "$ref": "#/components/schemas/AdminUiMassAction" } }, "gridColumns": { "$ref": "#/components/schemas/AdminUiGridColumns" } } } }, "additionalProperties": false, "required": [] }, "AdminUiGridColumns": { "type": "object", "properties": { "label": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 }, "runtimeAction": { "type": "string", "minLength": 1 }, "columns": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "minLength": 1 }, "label": { "type": "string", "minLength": 1 }, "type": { "type": "string", "enum": [ "boolean", "date", "datetime", "decimal", "integer", "string" ] }, "align": { "type": "string", "enum": ["left", "right", "center"] } }, "required": ["id", "label", "type", "align"] }, "minItems": 1 } }, "required": ["label", "description", "runtimeAction", "columns"] }, "CustomScopeInput": { "type": "object", "properties": { "id": { "type": "string", "pattern": ".*\\S.*" }, "code": { "type": "string", "pattern": "^(?!\\s*(?:commerce|global)\\s*$).*\\S.*$" }, "label": { "type": "string", "pattern": ".*\\S.*" }, "level": { "type": "string", "default": "base", "pattern": ".*\\S.*" }, "is_editable": { "type": "boolean" }, "is_final": { "type": "boolean" }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/CustomScopeInput" } } }, "required": ["code", "label", "is_editable", "is_final"], "title": "CustomScopeInput" } }, "securitySchemes": { "imsOAuth": { "type": "oauth2", "description": "Adobe IMS OAuth 2.0 access token. Send it as Authorization: Bearer .", "flows": { "clientCredentials": { "scopes": { "AdobeID": "Identifies the user with their Adobe ID", "openid": "Authenticates the user via OpenID Connect" }, "tokenUrl": "https://ims-na1.adobelogin.com/ims/token/v3" } } } } }, "tags": [ { "name": "App Metadata", "description": "Resolve and inspect the Commerce App configuration.", "externalDocs": { "description": "Documentation", "url": "https://developer.adobe.com/commerce/extensibility/app-management/define-app" } }, { "name": "Business Configuration", "description": "Manage app configuration values and the Commerce scope tree.", "externalDocs": { "description": "Documentation", "url": "https://developer.adobe.com/commerce/extensibility/app-management/configuration-schema" } }, { "name": "Management", "description": "Installation and uninstallation lifecycle.", "externalDocs": { "description": "Documentation", "url": "https://developer.adobe.com/commerce/extensibility/app-management/installation/" } } ], "security": [ { "imsOAuth": ["AdobeID", "openid"] } ] }