{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://www.espocrm.com/schema/metadata/app/api.json", "title": "app/api", "description": "API definitions.", "type": "object", "properties": { "globalMiddlewareClassNameList": { "type": "array", "items": { "type": "string" }, "description": "A class list of global middlewares. Global middlewares applied for all API requests. Processed before authentication." }, "routeMiddlewareClassNameListMap": { "type": "object", "additionalProperties": { "type": "array", "description": "A key in `{method}_{route}` format.", "items": { "type": "string" } }, "description": "Middlewares for specific routes. Keys are composed in the form: {method}_{route}. Processed before authentication." }, "actionMiddlewareClassNameListMap": { "type": "object", "additionalProperties": { "type": "array", "description": "A key in `{method}_{route}` format.", "items": { "type": "string" } }, "description": "Middlewares for routes with actionClassName. Keys are composed in the form: {method}_{route}. Processed after authentication." }, "controllerMiddlewareClassNameListMap": { "type": "object", "additionalProperties": { "type": "array", "description": "A controller name.", "items": { "type": "string" } }, "description": "Middlewares for specific controllers. A controller-name => class-string-list map. Processed after authentication." }, "controllerActionMiddlewareClassNameListMap": { "type": "object", "additionalProperties": { "type": "array", "description": "A key in `{ControllerName}_{method}_{actionName}` format.", "items": { "type": "string" } }, "description": "Middlewares for specific controller actions. Keys are composed in the form: {ControllerName}_{method}_{actionName}. Processed after authentication." } } }