{ "components": { "schemas": { "cabana.AdminActionRequest": { "properties": { "record_id": { "type": "integer" }, "values": { "additionalProperties": {}, "type": "object" } }, "type": "object" }, "cabana.AdminActionResult": { "properties": { "fill": { "additionalProperties": {}, "type": "object" }, "message": { "type": "string" } }, "required": [ "fill", "message" ], "type": "object" }, "cabana.AdminFileCaptionRequest": { "properties": { "description": { "type": "string" }, "title": { "type": "string" } }, "type": "object" }, "cabana.AdminIDsRequest": { "properties": { "ids": { "items": { "type": "integer" }, "type": "array" } }, "required": [ "ids" ], "type": "object" }, "cabana.AdminLoginData": { "properties": { "access_token": { "type": "string" }, "expires_in": { "type": "integer" }, "token_type": { "type": "string" } }, "required": [ "token_type" ], "type": "object" }, "cabana.AdminLoginRequest": { "properties": { "email": { "type": "string" }, "login": { "type": "string" }, "password": { "type": "string" } }, "required": [ "password" ], "type": "object" }, "cabana.AdminLogoutData": { "properties": { "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "cabana.AdminProfile": { "properties": { "email": { "type": "string" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "is_superuser": { "type": "boolean" }, "last_name": { "type": "string" }, "login": { "type": "string" }, "role": { "$ref": "#/components/schemas/cabana.AdminRoleSummary" } }, "required": [ "email", "first_name", "id", "is_superuser", "last_name", "login" ], "type": "object" }, "cabana.AdminRecord": { "additionalProperties": {}, "type": "object" }, "cabana.AdminRoleSummary": { "properties": { "code": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "code", "id", "name" ], "type": "object" }, "cabana.BulkAction": { "properties": { "label": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "cabana.BulkResult": { "properties": { "deleted": { "type": "integer" } }, "required": [ "deleted" ], "type": "object" }, "cabana.ControllerAssets": { "properties": { "scripts": { "items": { "type": "string" }, "type": "array" }, "styles": { "items": { "type": "string" }, "type": "array" } }, "required": [ "scripts", "styles" ], "type": "object" }, "cabana.Envelope-array_cabana_FileItem": { "properties": { "data": { "items": { "$ref": "#/components/schemas/cabana.FileItem" }, "type": "array" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-array_cabana_FilterOption": { "properties": { "data": { "items": { "$ref": "#/components/schemas/cabana.FilterOption" }, "type": "array" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-array_cabana_NavigationEntry": { "properties": { "data": { "items": { "$ref": "#/components/schemas/cabana.NavigationEntry" }, "type": "array" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-array_cabana_SettingsEntry": { "properties": { "data": { "items": { "$ref": "#/components/schemas/cabana.SettingsEntry" }, "type": "array" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_AdminActionResult": { "properties": { "data": { "$ref": "#/components/schemas/cabana.AdminActionResult" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_AdminLoginData": { "properties": { "data": { "$ref": "#/components/schemas/cabana.AdminLoginData" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_AdminLogoutData": { "properties": { "data": { "$ref": "#/components/schemas/cabana.AdminLogoutData" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_AdminProfile": { "properties": { "data": { "$ref": "#/components/schemas/cabana.AdminProfile" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_BulkResult": { "properties": { "data": { "$ref": "#/components/schemas/cabana.BulkResult" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_FileItem": { "properties": { "data": { "$ref": "#/components/schemas/cabana.FileItem" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_FileMutationResult": { "properties": { "data": { "$ref": "#/components/schemas/cabana.FileMutationResult" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_FormView": { "properties": { "data": { "$ref": "#/components/schemas/cabana.FormView" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_LangBundle": { "properties": { "data": { "$ref": "#/components/schemas/cabana.LangBundle" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_ListSchema": { "properties": { "data": { "$ref": "#/components/schemas/cabana.ListSchema" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_PartialView": { "properties": { "data": { "$ref": "#/components/schemas/cabana.PartialView" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_RelationMutationResult": { "properties": { "data": { "$ref": "#/components/schemas/cabana.RelationMutationResult" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_RelationSchema": { "properties": { "data": { "$ref": "#/components/schemas/cabana.RelationSchema" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.Envelope-cabana_SettingsResult": { "properties": { "data": { "$ref": "#/components/schemas/cabana.SettingsResult" }, "meta": { "$ref": "#/components/schemas/cabana.SuccessMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.ErrorBody": { "properties": { "code": { "type": "string" }, "details": { "additionalProperties": {}, "type": "object" }, "message": { "type": "string" } }, "required": [ "code", "details", "message" ], "type": "object" }, "cabana.ErrorEnvelope": { "properties": { "error": { "$ref": "#/components/schemas/cabana.ErrorBody" } }, "required": [ "error" ], "type": "object" }, "cabana.FileItem": { "properties": { "content_type": { "type": "string" }, "created_at": { "type": "string" }, "description": { "type": "string" }, "file_name": { "type": "string" }, "file_size": { "type": "integer" }, "id": { "type": "integer" }, "pending": { "type": "boolean" }, "sort_order": { "type": "integer" }, "thumb_url": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "content_type", "created_at", "description", "file_name", "file_size", "id", "pending", "sort_order", "title" ], "type": "object" }, "cabana.FileMutationResult": { "properties": { "removed": { "type": "integer" } }, "required": [ "removed" ], "type": "object" }, "cabana.FilterOption": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "cabana.FormField": { "properties": { "action": { "description": "Action names the controller action the widget runs (pact.HasAdminActions).", "type": "string" }, "actionLabel": { "description": "ActionLabel is the action's Label, localized per request.", "type": "string" }, "attributes": { "additionalProperties": { "$ref": "#/components/schemas/cabana.jsonScalar" }, "type": "object" }, "comment": { "type": "string" }, "context": { "$ref": "#/components/schemas/cabana.fieldContext" }, "default": { "$ref": "#/components/schemas/cabana.jsonScalar" }, "displayFormat": { "type": "string" }, "emptyOption": { "type": "string" }, "fileTypes": { "description": "FileTypes are the allowed lower-case extensions of a fileupload field.", "items": { "type": "string" }, "type": "array" }, "fill": { "description": "Fill lists the fields of the same form the action writes back (D-07).", "items": { "type": "string" }, "type": "array" }, "firstDay": { "description": "FirstDay is the first day of the week, 0 (Sunday) to 6.", "type": "integer" }, "format": { "description": "Format is a datepicker's WinterCMS (PHP date) display format;\nDisplayFormat is the same format in the SPA's moment-style tokens.", "type": "string" }, "ignoreTimezone": { "description": "IgnoreTimezone keeps a datetime's wall-clock value with no conversion.", "type": "boolean" }, "imageHeight": { "type": "integer" }, "imageWidth": { "description": "ImageWidth and ImageHeight are the preview size of an image upload.", "type": "integer" }, "label": { "type": "string" }, "maxDate": { "type": "string" }, "maxFiles": { "description": "MaxFiles caps the number of files of an attachMany field.", "type": "integer" }, "maxFilesize": { "description": "MaxFilesize is the largest accepted file in megabytes.", "type": "number" }, "mimeTypes": { "description": "MimeTypes are the allowed MIME patterns (or extensions) of a\nfileupload field.", "items": { "type": "string" }, "type": "array" }, "minDate": { "description": "MinDate and MaxDate bound a datepicker's calendar date (YYYY-MM-DD),\nchecked again on save.", "type": "string" }, "mode": { "description": "Mode is the fileupload mode (image or file, default file) or the\ndatepicker mode (date, datetime or time, default datetime).", "type": "string" }, "multiple": { "type": "boolean" }, "name": { "type": "string" }, "nameFrom": { "type": "string" }, "options": { "items": { "$ref": "#/components/schemas/cabana.FormOption" }, "type": "array" }, "path": { "description": "Path names the controller partial of a `type: partial` field: the\ntemplate {ConfigDir}/_{path}.htm (D-09).", "type": "string" }, "prompt": { "description": "Prompt is the upload button text, localized per request.", "type": "string" }, "protected": { "description": "Protected is true for a fileupload field whose relation is not\npublic: its files are served only through the admin file routes.", "type": "boolean" }, "readOnly": { "type": "boolean" }, "relation": { "type": "string" }, "required": { "type": "boolean" }, "size": { "type": "string" }, "span": { "type": "string" }, "tab": { "type": "string" }, "thumbOptions": { "allOf": [ { "$ref": "#/components/schemas/cabana.ThumbOptions" } ], "description": "ThumbOptions carries the preview thumbnail mode." }, "twelveHour": { "description": "TwelveHour shows a 12-hour clock.", "type": "boolean" }, "type": { "type": "string" }, "useCaption": { "description": "UseCaption lets the admin edit each file's title and description.", "type": "boolean" }, "widget": { "description": "Widget is the custom-element tag of a `type: widget` field (D-06).", "type": "string" }, "yearRange": { "description": "YearRange is [n] (years either side of today) or [from, to].", "items": { "type": "integer" }, "type": "array" } }, "required": [ "name", "type" ], "type": "object" }, "cabana.FormMessages": { "properties": { "create": { "$ref": "#/components/schemas/cabana.MessageForms" }, "deleteConfirm": { "$ref": "#/components/schemas/cabana.MessageForms" }, "deleted": { "$ref": "#/components/schemas/cabana.MessageForms" }, "saved": { "$ref": "#/components/schemas/cabana.MessageForms" }, "update": { "$ref": "#/components/schemas/cabana.MessageForms" } }, "required": [ "create", "deleteConfirm", "deleted", "saved", "update" ], "type": "object" }, "cabana.FormMeta": { "properties": { "locale": { "type": "string" } }, "required": [ "locale" ], "type": "object" }, "cabana.FormOption": { "properties": { "label": { "type": "string" }, "value": { "$ref": "#/components/schemas/cabana.jsonScalar" } }, "required": [ "label", "value" ], "type": "object" }, "cabana.FormRedirect": { "properties": { "redirect": { "type": "string" }, "redirectClose": { "type": "string" } }, "required": [ "redirect", "redirectClose" ], "type": "object" }, "cabana.FormRedirects": { "properties": { "create": { "$ref": "#/components/schemas/cabana.FormRedirect" }, "default": { "type": "string" }, "update": { "$ref": "#/components/schemas/cabana.FormRedirect" } }, "required": [ "create", "default", "update" ], "type": "object" }, "cabana.FormView": { "properties": { "assets": { "allOf": [ { "$ref": "#/components/schemas/cabana.ControllerAssets" } ], "description": "Assets are the controller's plugin JS and CSS URLs; a settings form\ncarries empty lists." }, "fields": { "items": { "$ref": "#/components/schemas/cabana.FormField" }, "type": "array" }, "messages": { "allOf": [ { "$ref": "#/components/schemas/cabana.FormMessages" } ], "description": "Messages is the form's copy resolved in the request locale (D-13)." }, "meta": { "$ref": "#/components/schemas/cabana.FormMeta" }, "modelClass": { "type": "string" }, "name": { "type": "string" }, "redirects": { "allOf": [ { "$ref": "#/components/schemas/cabana.FormRedirects" } ], "description": "Redirects are the raw Winter config_form.yaml targets; the SPA maps\nthem onto its routes." } }, "required": [ "assets", "fields", "messages", "meta", "redirects" ], "type": "object" }, "cabana.LangBundle": { "additionalProperties": { "$ref": "#/components/schemas/cabana.MessageForms" }, "type": "object" }, "cabana.ListColumn": { "properties": { "key": { "type": "string" }, "label": { "type": "string" }, "relation": { "type": "string" }, "searchable": { "type": "boolean" }, "select": { "type": "string" }, "sortable": { "type": "boolean" }, "type": { "type": "string" } }, "required": [ "key", "label", "searchable", "sortable" ], "type": "object" }, "cabana.ListEnvelope-array_cabana_AdminRecord": { "properties": { "data": { "items": { "additionalProperties": {}, "type": "object" }, "type": "array" }, "meta": { "$ref": "#/components/schemas/cabana.ListMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.ListEnvelope-array_cabana_RelationOption": { "properties": { "data": { "items": { "$ref": "#/components/schemas/cabana.RelationOption" }, "type": "array" }, "meta": { "$ref": "#/components/schemas/cabana.ListMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.ListFilter": { "properties": { "column": { "type": "string" }, "falseValue": { "$ref": "#/components/schemas/cabana.jsonScalar" }, "label": { "type": "string" }, "modelClass": { "type": "string" }, "name": { "type": "string" }, "nameFrom": { "type": "string" }, "options": { "items": { "$ref": "#/components/schemas/cabana.FormOption" }, "type": "array" }, "scope": { "type": "string" }, "trueValue": { "$ref": "#/components/schemas/cabana.jsonScalar" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "cabana.ListMessages": { "properties": { "create": { "$ref": "#/components/schemas/cabana.MessageForms" }, "deleteConfirm": { "$ref": "#/components/schemas/cabana.MessageForms" }, "deleteSelected": { "$ref": "#/components/schemas/cabana.MessageForms" }, "deleted": { "$ref": "#/components/schemas/cabana.MessageForms" }, "empty": { "$ref": "#/components/schemas/cabana.MessageForms" }, "emptySearch": { "$ref": "#/components/schemas/cabana.MessageForms" }, "emptySearchHint": { "$ref": "#/components/schemas/cabana.MessageForms" }, "recordCount": { "$ref": "#/components/schemas/cabana.MessageForms" }, "searchPrompt": { "$ref": "#/components/schemas/cabana.MessageForms" }, "selected": { "$ref": "#/components/schemas/cabana.MessageForms" } }, "required": [ "create", "deleteConfirm", "deleteSelected", "deleted", "empty", "emptySearch", "emptySearchHint", "recordCount", "searchPrompt", "selected" ], "type": "object" }, "cabana.ListMeta": { "properties": { "last_page": { "type": "integer" }, "page": { "type": "integer" }, "per_page": { "type": "integer" }, "total": { "type": "integer" } }, "required": [ "last_page", "page", "per_page", "total" ], "type": "object" }, "cabana.ListSchema": { "properties": { "assets": { "allOf": [ { "$ref": "#/components/schemas/cabana.ControllerAssets" } ], "description": "Assets are the controller's plugin JS and CSS URLs (pact.AdminClientAssets)." }, "bulkActions": { "items": { "$ref": "#/components/schemas/cabana.BulkAction" }, "type": "array" }, "columns": { "items": { "$ref": "#/components/schemas/cabana.ListColumn" }, "type": "array" }, "defaultSort": { "$ref": "#/components/schemas/cabana.ListSort" }, "filters": { "items": { "$ref": "#/components/schemas/cabana.ListFilter" }, "type": "array" }, "headerPartial": { "description": "HeaderPartial names the controller partial rendered above the list\n(config_list.yaml headerPartial, D-11).", "type": "string" }, "messages": { "allOf": [ { "$ref": "#/components/schemas/cabana.ListMessages" } ], "description": "Messages is the list's copy (D-13). The cached schema carries each\nphrase key as its own form; a response resolves them in its locale." }, "meta": { "$ref": "#/components/schemas/cabana.FormMeta" }, "modelClass": { "type": "string" }, "noRecordsMessage": { "type": "string" }, "perPageOptions": { "items": { "type": "integer" }, "type": "array" }, "recordUrl": { "type": "string" }, "recordsPerPage": { "type": "integer" }, "rowActions": { "items": { "$ref": "#/components/schemas/cabana.RowAction" }, "type": "array" }, "searchPrompt": { "type": "string" }, "searchTerm": { "type": "string" }, "showCheckboxes": { "type": "boolean" }, "showSearch": { "type": "boolean" }, "showSetup": { "type": "boolean" }, "showSorting": { "type": "boolean" }, "title": { "type": "string" }, "toolbarActions": { "description": "ToolbarActions are the controller-registered toolbar.buttons entries\nthe requesting admin may run, in declared order, with their labels.", "items": { "$ref": "#/components/schemas/cabana.ToolbarAction" }, "type": "array" }, "toolbarButtons": { "items": { "type": "string" }, "type": "array" } }, "required": [ "assets", "bulkActions", "columns", "filters", "messages", "perPageOptions", "recordsPerPage", "rowActions", "searchTerm", "showCheckboxes", "showSearch", "showSetup", "showSorting", "toolbarActions", "toolbarButtons" ], "type": "object" }, "cabana.ListSort": { "properties": { "column": { "type": "string" }, "direction": { "type": "string" } }, "required": [ "column", "direction" ], "type": "object" }, "cabana.MessageForms": { "additionalProperties": { "type": "string" }, "type": "object" }, "cabana.NavigationEntry": { "properties": { "code": { "type": "string" }, "controller": { "type": "string" }, "icon": { "type": "string" }, "label": { "type": "string" }, "order": { "type": "integer" }, "sideMenu": { "items": { "$ref": "#/components/schemas/cabana.NavigationEntry" }, "type": "array" } }, "required": [ "code", "controller", "icon", "label", "order", "sideMenu" ], "type": "object" }, "cabana.PartialNode": { "properties": { "attrs": { "additionalProperties": { "type": "string" }, "type": "object" }, "children": { "items": { "$ref": "#/components/schemas/cabana.PartialNode" }, "type": "array" }, "tag": { "type": "string" }, "text": { "type": "string" } }, "type": "object" }, "cabana.PartialView": { "properties": { "nodes": { "items": { "$ref": "#/components/schemas/cabana.PartialNode" }, "type": "array" } }, "required": [ "nodes" ], "type": "object" }, "cabana.RecordEnvelope": { "properties": { "data": { "$ref": "#/components/schemas/cabana.AdminRecord" }, "meta": { "$ref": "#/components/schemas/cabana.RecordMeta" } }, "required": [ "data", "meta" ], "type": "object" }, "cabana.RecordMeta": { "properties": { "labels": { "additionalProperties": { "items": { "$ref": "#/components/schemas/cabana.RelationOption" }, "type": "array" }, "type": "object" } }, "required": [ "labels" ], "type": "object" }, "cabana.RelationColumn": { "properties": { "key": { "type": "string" }, "label": { "type": "string" }, "searchable": { "type": "boolean" }, "sortable": { "type": "boolean" } }, "required": [ "key", "label", "searchable", "sortable" ], "type": "object" }, "cabana.RelationList": { "properties": { "columns": { "items": { "$ref": "#/components/schemas/cabana.RelationColumn" }, "type": "array" } }, "required": [ "columns" ], "type": "object" }, "cabana.RelationMessages": { "properties": { "candidateSearch": { "$ref": "#/components/schemas/cabana.MessageForms" }, "empty": { "$ref": "#/components/schemas/cabana.MessageForms" }, "link": { "$ref": "#/components/schemas/cabana.MessageForms" }, "linkHint": { "$ref": "#/components/schemas/cabana.MessageForms" }, "linked": { "$ref": "#/components/schemas/cabana.MessageForms" }, "unlinkConfirm": { "$ref": "#/components/schemas/cabana.MessageForms" }, "unlinkSelected": { "$ref": "#/components/schemas/cabana.MessageForms" }, "unlinked": { "$ref": "#/components/schemas/cabana.MessageForms" } }, "required": [ "candidateSearch", "empty", "link", "linkHint", "linked", "unlinkConfirm", "unlinkSelected", "unlinked" ], "type": "object" }, "cabana.RelationMutationResult": { "properties": { "linked": { "type": "integer" }, "removed": { "type": "integer" } }, "type": "object" }, "cabana.RelationOption": { "properties": { "label": { "type": "string" }, "value": { "type": "integer" } }, "required": [ "label", "value" ], "type": "object" }, "cabana.RelationPanel": { "properties": { "list": { "$ref": "#/components/schemas/cabana.RelationList" }, "showSearch": { "type": "boolean" }, "toolbarButtons": { "items": { "type": "string" }, "type": "array" } }, "required": [ "list", "showSearch", "toolbarButtons" ], "type": "object" }, "cabana.RelationSchema": { "properties": { "label": { "type": "string" }, "manage": { "$ref": "#/components/schemas/cabana.RelationPanel" }, "messages": { "allOf": [ { "$ref": "#/components/schemas/cabana.RelationMessages" } ], "description": "Messages is the relation manager's copy (D-13); the cached schema\ncarries each phrase key as its own form." }, "name": { "type": "string" }, "view": { "$ref": "#/components/schemas/cabana.RelationPanel" } }, "required": [ "label", "manage", "messages", "name", "view" ], "type": "object" }, "cabana.RowAction": { "properties": { "label": { "type": "string" }, "name": { "type": "string" }, "url": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "cabana.SettingsEntry": { "properties": { "category": { "type": "string" }, "code": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "keywords": { "items": { "type": "string" }, "type": "array" }, "label": { "type": "string" }, "model": { "type": "string" }, "order": { "type": "integer" } }, "required": [ "category", "code", "description", "icon", "keywords", "label", "model", "order" ], "type": "object" }, "cabana.SettingsResult": { "properties": { "data": { "additionalProperties": {}, "type": "object" }, "exists": { "type": "boolean" } }, "required": [ "data", "exists" ], "type": "object" }, "cabana.SuccessMeta": { "properties": { "last_page": { "type": "integer" }, "locale": { "type": "string" }, "page": { "type": "integer" }, "per_page": { "type": "integer" }, "total": { "type": "integer" } }, "type": "object" }, "cabana.ThumbOptions": { "properties": { "mode": { "type": "string" } }, "required": [ "mode" ], "type": "object" }, "cabana.ToolbarAction": { "properties": { "label": { "type": "string" }, "name": { "type": "string" } }, "required": [ "label", "name" ], "type": "object" }, "cabana.fieldContext": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "cabana.jsonScalar": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] } }, "securitySchemes": { "BackendBearer": { "description": "Backend admin bearer token. Send \"Bearer {access_token}\".", "in": "header", "name": "Authorization", "type": "apiKey" } } }, "info": { "contact": {}, "description": "Framework admin API consumed by the embedded admin SPA. Every path is relative to {backend.uri}/api/v1 (for example /backend/api/v1). The SPA authenticates with the HttpOnly summer_admin cookie set by a login that sends X-Requested-With: XMLHttpRequest, and sends that header on every request; CLI clients and tests send the BackendBearer Authorization header instead.", "title": "SummerCMS Admin API", "version": "1" }, "openapi": "3.0.3", "paths": { "/auth/login": { "post": { "parameters": [ { "description": "XMLHttpRequest selects cookie transport", "in": "header", "name": "X-Requested-With", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminLoginRequest" } } }, "description": "Credentials", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_AdminLoginData" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" } }, "summary": "Admin login", "tags": [ "admin" ] } }, "/auth/logout": { "post": { "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_AdminLogoutData" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Admin logout", "tags": [ "admin" ] } }, "/auth/me": { "get": { "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_AdminProfile" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Current admin", "tags": [ "admin" ] } }, "/auth/refresh": { "post": { "parameters": [ { "description": "XMLHttpRequest; required unless a Bearer token is sent", "in": "header", "name": "X-Requested-With", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_AdminLoginData" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" } }, "summary": "Refresh an admin token", "tags": [ "admin" ] } }, "/lang": { "get": { "description": "Every backend::lang key as CLDR plural forms for the Accept-Language locale, over the fallback locale's keys. Public: the login screen loads it before signing in. meta.locale is the locale the bundle resolved to.", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_LangBundle" } } }, "description": "OK" } }, "summary": "Admin UI strings", "tags": [ "admin" ] } }, "/navigation": { "get": { "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-array_cabana_NavigationEntry" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Admin navigation", "tags": [ "admin" ] } }, "/settings": { "get": { "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-array_cabana_SettingsEntry" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "List admin settings", "tags": [ "admin" ] } }, "/settings/{code}": { "get": { "parameters": [ { "description": "Settings code", "in": "path", "name": "code", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_SettingsResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Read admin settings", "tags": [ "admin" ] }, "put": { "parameters": [ { "description": "Settings code", "in": "path", "name": "code", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminRecord" } } }, "description": "Setting values keyed by field name", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_SettingsResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Update admin settings", "tags": [ "admin" ] } }, "/settings/{code}/schema": { "get": { "parameters": [ { "description": "Settings code", "in": "path", "name": "code", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_FormView" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Admin settings schema", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}": { "get": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Search term", "in": "query", "name": "search", "schema": { "type": "string" } }, { "description": "Sort column", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "Sort direction (asc or desc)", "in": "query", "name": "dir", "schema": { "type": "string" } }, { "description": "Page", "in": "query", "name": "page", "schema": { "type": "integer" } }, { "description": "Records per page", "in": "query", "name": "per_page", "schema": { "type": "integer" } }, { "description": "Filter values keyed by filter name, sent as filter[\u003cname\u003e]=\u003cvalue\u003e", "explode": true, "in": "query", "name": "filter", "schema": { "additionalProperties": { "type": "string" }, "type": "object" }, "style": "deepObject" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ListEnvelope-array_cabana_AdminRecord" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "List admin records", "tags": [ "admin" ] }, "post": { "description": "Relation fields are sent by field name with ids ({\"genre\": 3, \"artists\": [4, 9]}); the response carries the same shape plus meta.labels.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Form session key: the save attaches the files uploaded under it", "in": "header", "name": "X-Session-Key", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminRecord" } } }, "description": "Field values keyed by field name; relation fields carry ids", "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.RecordEnvelope" } } }, "description": "Created" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Create an admin record", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/bulk-delete": { "post": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminIDsRequest" } } }, "description": "Record ids", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_BulkResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Conflict" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Bulk-delete admin records", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/fields/{field}/options": { "get": { "description": "Choices for a writable `type: relation` field: value is the related id, label its nameFrom column. Read-only and non-relation fields answer 404.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Relation field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "Case-insensitive label search", "in": "query", "name": "search", "schema": { "type": "string" } }, { "description": "Page", "in": "query", "name": "page", "schema": { "type": "integer" } }, { "description": "Options per page (1-100, default 20)", "in": "query", "name": "per_page", "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ListEnvelope-array_cabana_RelationOption" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Relation field options", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/filters/{scope}/options": { "get": { "description": "Choices of a declared scope filter of the controller's list, from the model's FilterOptions. {scope} is the filter name used as filter[\u003cscope\u003e]; labels are localized.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Filter name", "in": "path", "name": "scope", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-array_cabana_FilterOption" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Filter scope options", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/partials/{name}": { "get": { "description": "Renders a declared header partial or form partial with html/template against the controller's view model and returns it as an allowlisted node tree: no HTML string. Without id the view model gets no record; id is accepted only for form partials and is loaded through the controller's form scope.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Partial name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "Record id for a form partial", "in": "query", "name": "id", "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_PartialView" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Render a controller partial", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/schema/form": { "get": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_FormView" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Admin form schema", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/schema/list": { "get": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_ListSchema" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Admin list schema", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/schema/relation/{name}": { "get": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Relation name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_RelationSchema" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Admin relation schema", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/toolbar/{action}": { "post": { "description": "Runs a controller-registered action that the list's toolbar.buttons declares. The body must be {}: a toolbar action takes no record ids or values, and its fill is always empty.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Action name", "in": "path", "name": "action", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminActionRequest" } } }, "description": "Empty object", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_AdminActionResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Run a toolbar action", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/widgets/{field}": { "post": { "description": "Runs the controller action a `type: widget` field declares. The record is loaded through the controller's form scope (404 when out of scope); only the field's fill keys with scalar values reach the action and the response.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Widget field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminActionRequest" } } }, "description": "Record id and fill snapshot", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_AdminActionResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Run a widget action", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}": { "delete": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Record id", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_BulkResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Delete an admin record", "tags": [ "admin" ] }, "get": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Record id", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.RecordEnvelope" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" } }, "security": [ { "BackendBearer": [] } ], "summary": "Show an admin record", "tags": [ "admin" ] }, "put": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Record id", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "Form session key: the save applies the file uploads and removals held against it", "in": "header", "name": "X-Session-Key", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminRecord" } } }, "description": "Field values keyed by field name; relation fields carry ids", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.RecordEnvelope" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Update an admin record", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/files/{field}": { "get": { "description": "The files attached to the record minus the session's pending removals, plus the session's pending uploads, in sort_order. id 0 is the record being created in the X-Session-Key session (the key is then required). url and thumb_url are set only for a public relation.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id (0 for the record being created)", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "fileupload field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "Form session key (32-128 characters of A-Z a-z 0-9 _ -)", "in": "header", "name": "X-Session-Key", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-array_cabana_FileItem" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "List the files of a fileupload field", "tags": [ "admin" ] }, "post": { "description": "Stores one multipart file_data part and binds it to the X-Session-Key session; the record's next create or update save with the same key attaches it. id 0 is the record being created. A body over the upload cap answers 413 payload_too_large; a file over maxFilesize, of a type the field does not allow, or that fails the image check answers 422 on the field.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id (0 for the record being created)", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "fileupload field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "Form session key (32-128 characters of A-Z a-z 0-9 _ -)", "in": "header", "name": "X-Session-Key", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "properties": { "file_data": { "description": "The file", "format": "binary", "type": "string" } }, "required": [ "file_data" ], "type": "object" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_FileItem" } } }, "description": "Created" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "413": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Request Entity Too Large" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Upload a file to a fileupload field", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/files/{field}/reorder": { "post": { "description": "ids must be exactly the field's visible files (attached minus pending removals plus pending uploads); they receive the existing sort_order values in the submitted order, at once. attachMany only, otherwise 403.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id (0 for the record being created)", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "fileupload field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "Form session key; needed for pending uploads", "in": "header", "name": "X-Session-Key", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminIDsRequest" } } }, "description": "File ids in the new order", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-array_cabana_FileItem" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "413": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Request Entity Too Large" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Reorder the files of a field", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}": { "delete": { "description": "Removing an attached file is deferred to the record's next save with the same X-Session-Key; removing a pending upload deletes it at once.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id (0 for the record being created)", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "fileupload field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "File id", "in": "path", "name": "file", "required": true, "schema": { "type": "integer" } }, { "description": "Form session key", "in": "header", "name": "X-Session-Key", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_FileMutationResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Remove a file", "tags": [ "admin" ] }, "put": { "description": "Saves at once (not deferred). The field must declare useCaption, otherwise 403. Omitted keys are left unchanged; unknown keys are refused.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id (0 for the record being created)", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "fileupload field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "File id", "in": "path", "name": "file", "required": true, "schema": { "type": "integer" } }, { "description": "Form session key; needed for a pending upload", "in": "header", "name": "X-Session-Key", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminFileCaptionRequest" } } }, "description": "Title and description", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_FileItem" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "413": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Request Entity Too Large" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Save a file's title and description", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}/download": { "get": { "description": "Streams a file of a protected (Public false) relation that belongs to a record the admin may load, or is pending in the admin's own session. Public files are 404. JPEG, PNG, GIF and WebP are served inline with their type; everything else as an application/octet-stream attachment. Responses carry X-Content-Type-Options nosniff, Cache-Control private, no-store and a sandboxing Content-Security-Policy.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id (0 for the record being created)", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "fileupload field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "File id", "in": "path", "name": "file", "required": true, "schema": { "type": "integer" } }, { "description": "Form session key; needed for a pending upload", "in": "header", "name": "X-Session-Key", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/octet-stream": { "schema": { "format": "binary", "type": "string" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Download a protected file", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}/thumb": { "get": { "description": "The preview thumbnail (imageWidth by imageHeight, 240 by 240 by default, in thumbOptions.mode) of a protected image file, scoped like the download route. A file that is not a JPEG, PNG, GIF or WebP image is 404.", "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id (0 for the record being created)", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "fileupload field name", "in": "path", "name": "field", "required": true, "schema": { "type": "string" } }, { "description": "File id", "in": "path", "name": "file", "required": true, "schema": { "type": "integer" } }, { "description": "Form session key; needed for a pending upload", "in": "header", "name": "X-Session-Key", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/octet-stream": { "schema": { "format": "binary", "type": "string" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Thumbnail of a protected image", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/relations/{name}": { "get": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "Relation name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "Search term over the panel's searchable columns", "in": "query", "name": "search", "schema": { "type": "string" } }, { "description": "Sort column (a sortable panel column)", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "Sort direction (asc or desc)", "in": "query", "name": "dir", "schema": { "type": "string" } }, { "description": "Page", "in": "query", "name": "page", "schema": { "type": "integer" } }, { "description": "Records per page (1-100, default 20)", "in": "query", "name": "per_page", "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ListEnvelope-array_cabana_AdminRecord" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "List linked relation records", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/relations/{name}/candidates": { "get": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "Relation name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "Search term over the panel's searchable columns", "in": "query", "name": "search", "schema": { "type": "string" } }, { "description": "Sort column (a sortable panel column)", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "Sort direction (asc or desc)", "in": "query", "name": "dir", "schema": { "type": "string" } }, { "description": "Page", "in": "query", "name": "page", "schema": { "type": "integer" } }, { "description": "Records per page (1-100, default 20)", "in": "query", "name": "per_page", "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ListEnvelope-array_cabana_AdminRecord" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "List relation candidates", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/relations/{name}/link": { "post": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "Relation name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminIDsRequest" } } }, "description": "Related record ids", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_RelationMutationResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Link relation records", "tags": [ "admin" ] } }, "/{vendor}/{plugin}/{controller}/{id}/relations/{name}/unlink": { "post": { "parameters": [ { "description": "Vendor", "in": "path", "name": "vendor", "required": true, "schema": { "type": "string" } }, { "description": "Plugin", "in": "path", "name": "plugin", "required": true, "schema": { "type": "string" } }, { "description": "Controller", "in": "path", "name": "controller", "required": true, "schema": { "type": "string" } }, { "description": "Owner id", "in": "path", "name": "id", "required": true, "schema": { "type": "integer" } }, { "description": "Relation name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.AdminIDsRequest" } } }, "description": "Related record ids", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.Envelope-cabana_RelationMutationResult" } } }, "description": "OK" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cabana.ErrorEnvelope" } } }, "description": "Unprocessable Entity" } }, "security": [ { "BackendBearer": [] } ], "summary": "Unlink relation records", "tags": [ "admin" ] } } } }