--- # This is direct conversion from old api/*/spec.json files # using https://www.json2yaml.com/ # # Next step: swagger. endpoints: - title: Namespaces entrypoint: namespace path: "/namespace" authentication: [] imports: - github.com/cortezaproject/corteza/server/pkg/label - github.com/cortezaproject/corteza/server/pkg/locale - sqlxTypes github.com/jmoiron/sqlx/types - time apis: - name: list method: GET title: List namespaces path: "/" parameters: get: - type: string name: query required: false title: Search query - type: string name: slug required: false title: Search by namespace slug - type: uint name: limit title: Limit - type: bool name: incTotal title: Include total counter - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: string name: pageCursor title: Page cursor - type: string name: sort title: Sort items - name: create method: POST title: Create namespace path: "/" parameters: post: - type: string name: name required: true title: Name - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: string name: slug required: false title: Slug (url path part) - type: bool name: enabled required: false title: Enabled - type: sqlxTypes.JSONText name: meta required: true title: Meta data - name: read method: GET title: Read namespace path: "/{namespaceID}" parameters: path: - type: uint64 name: namespaceID required: true title: ID - name: update method: POST title: Update namespace path: "/{namespaceID}" parameters: path: - type: uint64 name: namespaceID required: true title: ID post: - type: string name: name required: true title: Name - type: string name: slug required: false title: Slug (url path part) - type: bool name: enabled required: false title: Enabled - type: sqlxTypes.JSONText name: meta required: true title: Meta data - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: "*time.Time" name: updatedAt required: false title: Last update (or creation) date - name: delete method: DELETE title: Delete namespace path: "/{namespaceID}" parameters: path: - type: uint64 name: namespaceID required: true title: ID - name: upload path: "/upload" method: POST title: Upload namespace assets parameters: post: - name: upload type: "*multipart.FileHeader" required: true title: File to upload - name: clone path: "/{namespaceID}/clone" method: POST title: Clone compose namespace parameters: path: - type: uint64 name: namespaceID required: true title: ID post: - type: string name: name required: true title: Duplicate name - type: string name: slug title: Duplicate slug - name: export path: "/{namespaceID}/export/{filename}.zip" method: GET title: Export compose namespace parameters: path: - type: uint64 name: namespaceID required: true title: ID - type: string name: filename required: true title: Output file name - type: string name: ext required: true title: Output file ext - name: importInit path: "/import" method: POST title: Initiate namespace import session parameters: post: - name: upload type: "*multipart.FileHeader" required: true title: File import - name: importRun path: "/import/{sessionID}" method: POST title: Run namespace import parameters: path: - name: sessionID type: uint64 required: true title: Import session post: - type: string name: name required: true title: Imported namespace name - type: string name: slug title: Imported namespace slug - name: triggerScript method: POST title: Fire compose:namespace trigger path: "/{namespaceID}/trigger" parameters: path: - type: uint64 name: namespaceID required: true title: ID post: - name: script type: string title: Script to execute required: true - name: args type: map[string]interface{} parser: parseMapStringInterface title: Arguments to pass to the script - name: listTranslations method: GET title: List translation path: "/{namespaceID}/translation" parameters: path: - type: uint64 name: namespaceID required: true title: ID - name: updateTranslations method: PATCH title: Update translation path: "/{namespaceID}/translation" parameters: path: - type: uint64 name: namespaceID required: true title: ID post: - name: translations type: locale.ResourceTranslationSet title: Resource translation to upsert required: true - title: Pages description: Compose pages entrypoint: page path: "/namespace/{namespaceID}/page" authentication: [] imports: - sqlxTypes github.com/jmoiron/sqlx/types - github.com/cortezaproject/corteza/server/pkg/locale - github.com/cortezaproject/corteza/server/pkg/label - github.com/cortezaproject/corteza/server/pkg/str - github.com/cortezaproject/corteza/server/compose/types parameters: path: - type: uint64 name: namespaceID required: true title: Namespace ID apis: - name: list method: GET path: "/" title: List available pages parameters: get: - type: uint64 name: selfID required: false title: Parent page ID - type: uint64 name: moduleID required: false title: Module ID - type: string name: query required: false title: Search query - type: string name: handle required: false title: Search by handle - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: uint name: limit title: Limit - type: string name: pageCursor title: Page cursor - type: string name: sort title: Sort items - name: create method: POST title: Create page path: "/" parameters: post: - type: uint64 name: selfID required: false title: Parent Page ID - type: uint64 name: moduleID required: false title: Module ID - type: string name: title required: true title: Title - type: string name: handle required: false title: Handle - type: string name: description required: false title: Description - type: int name: weight required: false title: Page tree weight - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: bool name: visible required: false title: Visible in navigation - type: sqlxTypes.JSONText name: blocks required: false title: Blocks JSON - type: sqlxTypes.JSONText name: config required: false title: Config JSON - type: "types.PageMeta" name: meta required: false title: Meta parser: types.ParsePageMeta - name: read path: "/{pageID}" method: GET title: Get page details parameters: path: - type: uint64 name: pageID required: true title: Page ID - name: tree path: "/tree" method: GET title: Get page all (non-record) pages, hierarchically - name: update method: POST title: Update page path: "/{pageID}" parameters: path: - type: uint64 name: pageID required: true title: Page ID post: - type: uint64 name: selfID required: false title: Parent Page ID - type: uint64 name: moduleID required: false title: Module ID (optional) - type: string name: title required: true title: Title - type: string name: handle required: false title: Handle - type: string name: description required: false title: Description - type: int name: weight required: false title: Page tree weight - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: bool name: visible required: false title: Visible in navigation - type: sqlxTypes.JSONText name: blocks required: false title: Blocks JSON - type: sqlxTypes.JSONText name: config required: false title: Config JSON - type: "types.PageMeta" name: meta required: false title: Meta parser: types.ParsePageMeta - name: reorder method: POST title: Reorder pages path: "/{selfID}/reorder" parameters: path: - type: uint64 name: selfID required: true title: Parent page ID post: - type: "[]string" name: pageIDs required: true title: Page ID order - name: delete path: "/{pageID}" method: DELETE title: Delete page parameters: path: - { type: uint64, name: pageID, required: true, title: Page ID } get: - { type: string, name: strategy, title: "Page delete strategy (abort, force, rebase, cascade)" } - name: upload path: "/{pageID}/attachment" method: POST title: Uploads attachment to page parameters: path: - type: uint64 name: pageID required: true title: Page ID post: - name: upload type: "*multipart.FileHeader" required: true title: File to upload - name: triggerScript method: POST title: Fire compose:page trigger path: "/{pageID}/trigger" parameters: path: - type: uint64 name: pageID required: true title: Page ID post: - name: script type: string title: Script to execute required: true - name: args type: map[string]interface{} parser: parseMapStringInterface title: Arguments to pass to the script - name: listTranslations method: GET title: List page translation path: "/{pageID}/translation" parameters: path: - type: uint64 name: pageID required: true title: ID - name: updateTranslations method: PATCH title: Update page translation path: "/{pageID}/translation" parameters: path: - type: uint64 name: pageID required: true title: ID post: - name: translations type: locale.ResourceTranslationSet title: Resource translation to upsert required: true - name: updateIcon path: "/{pageID}/icon" method: PATCH title: Update icon for page parameters: path: - type: uint64 name: pageID required: true title: Page ID post: - name: type type: "types.IconType" required: true title: Icon type - name: source type: string title: Icon source/library - name: style type: map[string]string title: Icon style parser: str.ParseStrings - title: icons description: Compose icons entrypoint: icon path: "/icon" apis: - name: list method: GET title: List icons path: "/" parameters: get: - type: uint name: limit title: Limit - type: bool name: incTotal title: Include total counter - type: string name: pageCursor title: Page cursor - type: string name: sort title: Sort items - name: upload path: "/" method: POST title: Upload icon parameters: post: - name: icon type: "*multipart.FileHeader" title: Icon to upload - title: Page Layouts description: Compose page layouts entrypoint: pageLayout path: "/namespace/{namespaceID}" authentication: [] imports: - sqlxTypes github.com/jmoiron/sqlx/types - github.com/cortezaproject/corteza/server/pkg/locale - github.com/cortezaproject/corteza/server/compose/types - github.com/cortezaproject/corteza/server/pkg/label parameters: path: - type: uint64 name: namespaceID required: true title: Namespace ID apis: - name: listNamespace method: GET path: "/page-layout" title: List available page layouts parameters: get: - type: uint64 name: pageID required: false title: Page ID - type: uint64 name: moduleID required: false title: Module ID - type: uint64 name: parentID required: false title: Parent ID - type: string name: query required: false title: Search query - type: string name: handle required: false title: Search by handle - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: uint name: limit title: Limit - type: string name: pageCursor title: Page cursor - type: string name: sort title: Sort items - name: list method: GET path: "/page/{pageID}/layout/" title: List available page layouts parameters: path: - type: uint64 name: pageID required: true title: Page ID get: - type: uint64 name: moduleID required: false title: Module ID - type: uint64 name: parentID required: false title: Parent ID - type: string name: query required: false title: Search query - type: string name: handle required: false title: Search by handle - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: uint name: limit title: Limit - type: string name: pageCursor title: Page cursor - type: string name: sort title: Sort items - name: create method: POST title: Create page layout path: "/page/{pageID}/layout/" parameters: path: - type: uint64 name: pageID required: true title: Page ID post: - type: uint64 name: parentID required: false title: ParentID - type: int name: weight required: false title: Weight - type: uint64 name: moduleID required: false title: ModuleID - type: string name: handle required: false title: Handle - type: "types.PageLayoutMeta" name: meta required: false title: Meta parser: types.ParsePageLayoutMeta - type: sqlxTypes.JSONText name: config required: false title: Config - type: sqlxTypes.JSONText name: blocks required: false title: Blocks - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: uint64 name: ownedBy required: false title: OwnedBy - name: read path: "/page/{pageID}/layout/{pageLayoutID}" method: GET title: Get page details parameters: path: - type: uint64 name: pageID required: true title: Page ID - type: uint64 name: pageLayoutID required: true title: Page layout ID - name: update method: POST title: Update page path: "/page/{pageID}/layout/{pageLayoutID}" parameters: path: - type: uint64 name: pageID required: true title: Page ID - type: uint64 name: pageLayoutID required: true title: Page layout ID post: - type: uint64 name: parentID required: false title: ParentID - type: int name: weight required: false title: Weight - type: uint64 name: moduleID required: false title: ModuleID - type: string name: handle required: false title: Handle - type: "types.PageLayoutMeta" name: meta required: false title: Meta parser: types.ParsePageLayoutMeta - type: sqlxTypes.JSONText name: config required: false title: Config - type: sqlxTypes.JSONText name: blocks required: false title: Blocks - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: uint64 name: ownedBy required: false title: OwnedBy - name: reorder method: POST title: Reorder page layouts path: "/page/{pageID}/layout/reorder" parameters: path: - type: uint64 name: pageID required: true title: Page ID post: - type: "[]string" name: pageIDs required: true title: Page ID order - name: delete path: "/page/{pageID}/layout/{pageLayoutID}" method: DELETE title: Delete page layout parameters: path: - type: uint64 name: pageID required: true title: Page ID - { type: uint64, name: pageLayoutID, required: true, title: Page layout ID } get: - { type: string, name: strategy, title: "Page delete strategy (abort, force, rebase, cascade)" } - name: undelete path: "/page/{pageID}/layout/{pageLayoutID}/undelete" method: POST title: Undelete soft deleted Delete page layout parameters: path: - type: uint64 name: pageID required: true title: Page ID - { type: uint64, name: pageLayoutID, required: true, title: Page layout ID } - name: listTranslations method: GET title: List page layout translation path: "/page/{pageID}/layout/{pageLayoutID}/translation" parameters: path: - type: uint64 name: pageID required: true title: Page ID - type: uint64 name: pageLayoutID required: true title: ID - name: updateTranslations method: PATCH title: Update page layout translation path: "/page/{pageID}/layout/{pageLayoutID}/translation" parameters: path: - type: uint64 name: pageID required: true title: Page ID - type: uint64 name: pageLayoutID required: true title: ID post: - name: translations type: locale.ResourceTranslationSet title: Resource translation to upsert required: true - title: Modules description: Compose module definitions entrypoint: module path: "/namespace/{namespaceID}/module" authentication: [] parameters: path: - type: uint64 name: namespaceID required: true title: Namespace ID imports: - sqlxTypes github.com/jmoiron/sqlx/types - github.com/cortezaproject/corteza/server/compose/types - github.com/cortezaproject/corteza/server/pkg/locale - github.com/cortezaproject/corteza/server/pkg/label - time apis: - name: list method: GET title: List modules path: "/" parameters: get: - type: string name: query required: false title: Search query - type: string name: name required: false title: Search by name - type: string name: handle required: false title: Search by handle - type: uint name: limit title: Limit - type: bool name: incTotal title: Include total counter - type: string name: pageCursor title: Page cursor - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: string name: sort title: Sort items - name: create method: POST title: Create module path: "/" parameters: post: - { type: "string", name: name, title: Name, required: true } - { type: "string", name: handle, title: Handle } - { type: "types.ModuleConfig", name: config, title: Configuration, parser: types.ParseModuleConfig } - { type: "sqlxTypes.JSONText", name: meta, title: Meta data, required: true } - { type: "types.ModuleFieldSet", name: fields, title: Fields, required: true } - { type: "map[string]string", name: labels, title: Labels, parser: label.ParseStrings } - name: read method: GET title: Read module path: "/{moduleID}" parameters: path: - type: uint64 name: moduleID required: true title: Module ID - name: update method: POST title: Update module path: "/{moduleID}" parameters: path: - type: uint64 name: moduleID required: true title: Module ID post: - { type: "string", name: name, title: Name, required: true } - { type: "string", name: handle, title: Handle } - { type: "types.ModuleConfig", name: config, title: Configuration, parser: types.ParseModuleConfig } - { type: "sqlxTypes.JSONText", name: meta, title: Meta data, required: true } - { type: "types.ModuleFieldSet", name: fields, title: Fields, required: true } - { type: "map[string]string", name: labels, title: Labels, parser: label.ParseStrings } - { type: "*time.Time", name: updatedAt, title: Last update (or creation) date } - name: delete method: DELETE title: Delete module path: "/{moduleID}" parameters: path: - type: uint64 name: moduleID required: true title: Module ID - name: triggerScript method: POST title: Fire compose:module trigger path: "/{moduleID}/trigger" parameters: path: - type: uint64 name: moduleID required: true title: ID post: - name: script type: string title: Script to execute required: true - name: args type: map[string]interface{} parser: parseMapStringInterface title: Arguments to pass to the script - name: listTranslations method: GET title: List moudle translation path: "/{moduleID}/translation" parameters: path: - type: uint64 name: moduleID required: true title: ID - name: updateTranslations method: PATCH title: Update module translation path: "/{moduleID}/translation" parameters: path: - type: uint64 name: moduleID required: true title: ID post: - name: translations type: locale.ResourceTranslationSet title: Resource translation to upsert required: true - title: Records description: Compose records entrypoint: record path: "/namespace/{namespaceID}/module/{moduleID}/record" authentication: [] imports: - github.com/cortezaproject/corteza/server/compose/types parameters: path: - type: uint64 name: namespaceID required: true title: Namespace ID - type: uint64 name: moduleID required: true title: Module ID apis: - name: report method: GET title: Generates report from module records path: "/report" parameters: get: - type: string name: metrics required: false title: 'Metrics (eg: ''SUM(money), MAX(calls)'')' - type: string name: dimensions required: true title: 'Dimensions (eg: ''DATE(foo), status'')' - type: string name: filter required: false title: 'Filter (eg: ''DATE(foo) > 2010'')' - name: list method: GET title: List/read records from module section path: "/" parameters: get: - { name: query, type: "string", title: "Record filtering query" } - { name: meta, type: "map[string]any", title: "Record meta data", parser: payload.ParseMeta } - { name: deleted, type: "uint", title: "Exclude (0, default), include (1) or return only (2) deleted records" } - { name: limit, type: "uint", title: "Limit" } - { name: incTotal, type: "bool", title: "Include total records counter" } - { name: incPageNavigation, type: "bool", title: "Include page navigation" } - { name: pageCursor, type: "string", title: "Page cursor" } - { name: sort, type: "string", title: "Sort items" } - name: importInit path: "/import" method: POST title: Initiate record import session parameters: post: - name: upload type: "*multipart.FileHeader" required: true title: File import - name: importRun path: "/import/{sessionID}" method: PATCH title: Run record import parameters: path: - name: sessionID type: uint64 required: true title: Import session post: - name: fields type: json.RawMessage required: true title: Fields defined by import file - name: onError type: string required: true title: What happens if record fails to import - name: importProgress path: "/import/{sessionID}" method: GET title: Get import progress parameters: path: - name: sessionID type: uint64 required: true title: Import session - name: export path: "/export{filename}.{ext}" method: GET title: 'Exports records that match ' parameters: path: - type: string name: filename required: false title: Filename to use - type: string name: ext required: true title: Export format get: - name: filter type: string required: false title: Filtering condition - name: fields type: "[]string" required: true title: Fields to export - name: timezone type: string required: false title: Convert times to this timezone - name: exec path: "/exec/{procedure}" method: POST title: Executes server-side procedure over one or more module records parameters: path: - type: string name: procedure required: true title: Name of procedure to execute post: - type: "[]ProcedureArg" name: args required: false title: Procedure arguments - name: create method: POST title: Create record in module section path: "/" parameters: post: - { name: values, type: "types.RecordValueSet", title: Record values } - { name: ownedBy, type: "uint64", title: Record Owner } - { name: records, type: "types.RecordBulkSet", title: Records } - { name: meta, type: "map[string]any", title: Record meta-data, parser: payload.ParseMeta } - name: read method: GET title: Read records by ID from module section path: "/{recordID}" parameters: path: - type: uint64 name: recordID required: true title: Record ID - name: update method: POST title: Update records in module section path: "/{recordID}" parameters: path: - { name: recordID, type: "uint64", required: true, title: Record ID } post: - { name: values, type: "types.RecordValueSet", title: Record values } - { name: ownedBy, type: "uint64", title: Record Owner } - { name: meta, type: "map[string]any", title: Record meta-data, parser: payload.ParseMeta } - { name: records, type: "types.RecordBulkSet", title: Records } - name: patch method: PATCH title: Partially update record values path: "/" parameters: post: - { name: records, type: "[]string", title: Records to update } - { name: values, type: "types.RecordValueSet", title: Fields to update and their values } - name: bulkDelete method: DELETE title: Delete record row from module section path: "/" parameters: post: - type: "[]string" name: recordIDs required: false title: IDs of records to delete - type: bool name: truncate required: false title: Remove ALL records of a specified module (pending implementation) - name: delete method: DELETE title: Delete record row from module section path: "/{recordID}" parameters: path: - type: uint64 name: recordID required: true title: Record ID - name: undelete method: POST title: Undelete soft-deleted record from module section path: "/{recordID}/undelete" parameters: path: - type: uint64 name: recordID required: true title: Record ID - name: bulkUndelete method: PATCH title: Undelete soft-deleted records from module section path: "/undelete" parameters: post: - type: "[]string" name: recordIDs required: false title: IDs of records to undelete - name: upload path: "/attachment" method: POST title: Uploads attachment and validates it against record field requirements parameters: post: - name: recordID type: uint64 required: false title: Record ID - name: fieldName type: string required: true title: Field name - name: upload type: "*multipart.FileHeader" required: true title: File to upload - name: triggerScript method: POST title: Fire compose:record trigger path: "/{recordID}/trigger" parameters: path: - type: uint64 name: recordID required: true title: ID post: - name: script type: string title: Script to execute required: true - type: types.RecordValueSet name: values required: true title: Record values - name: triggerScriptOnList method: POST title: Fire compose:record trigger path: "/trigger" parameters: post: - name: script type: string title: Script to execute required: true - name: args type: map[string]interface{} parser: parseMapStringInterface title: Arguments to pass to the script - name: revisions method: GET title: List record revisions path: "/{recordID}/revisions" parameters: path: - { type: uint64, name: recordID, required: true, title: ID } - title: Data Privacy entrypoint: dataPrivacy path: "/data-privacy" apis: - name: record list method: GET title: List records for data privacy path: /record parameters: get: - { name: sensitivityLevelID, type: "uint64", title: "Sensitivity Level ID", required: false} - { name: connectionID, type: "[]string", required: false, title: "Filter by connection ID"} - name: module list method: GET title: List modules path: /module parameters: get: - { name: connectionID, type: "[]string", title: "Filter by connection ID" } - { name: limit, type: "uint", title: "Limit" } - { name: pageCursor, type: "string", title: "Page cursor" } - { name: sort, type: "string", title: "Sort items" } - title: Charts path: "/namespace/{namespaceID}/chart" entrypoint: chart authentication: [] imports: - sqlxTypes github.com/jmoiron/sqlx/types - github.com/cortezaproject/corteza/server/pkg/label - github.com/cortezaproject/corteza/server/pkg/locale - time parameters: path: - type: uint64 name: namespaceID required: true title: Namespace ID apis: - name: list method: GET title: List/read charts path: "/" parameters: get: - name: query required: false title: Search query to match against charts type: string - name: handle required: false title: Search charts by handle type: string - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: uint name: limit title: Limit - type: bool name: incTotal title: Include total counter - type: string name: pageCursor title: Page cursor - type: string name: sort title: Sort items - name: create method: POST title: 'List/read charts ' path: "/" parameters: post: - type: sqlxTypes.JSONText name: config required: true title: Chart JSON - name: name title: Chart name type: string required: true - name: handle title: Chart handle type: string required: false - type: map[string]string name: labels title: Labels parser: label.ParseStrings - name: read method: GET title: Read charts by ID path: "/{chartID}" parameters: path: - type: uint64 name: chartID required: true title: Chart ID - name: update method: POST title: Add/update charts path: "/{chartID}" parameters: path: - type: uint64 name: chartID required: true title: Chart ID post: - type: sqlxTypes.JSONText name: config required: true title: Chart JSON - name: name title: Chart name type: string required: true - name: handle title: Chart handle type: string required: false - type: map[string]string name: labels title: Labels parser: label.ParseStrings - type: "*time.Time" name: updatedAt required: false title: Last update (or creation) date - name: delete method: DELETE title: Delete chart path: "/{chartID}" parameters: path: - type: uint64 name: chartID required: true title: Chart ID - name: listTranslations method: GET title: List chart translation path: "/{chartID}/translation" parameters: path: - type: uint64 name: chartID required: true title: ID - name: updateTranslations method: PATCH title: Update chart translation path: "/{chartID}/translation" parameters: path: - type: uint64 name: chartID required: true title: ID post: - name: translations type: locale.ResourceTranslationSet title: Resource translation to upsert required: true - title: Notifications description: Compose Notifications entrypoint: notification path: "/notification" authentication: [] imports: - sqlxTypes github.com/jmoiron/sqlx/types apis: - name: email/send method: POST title: Send email from the Compose path: "/email" parameters: post: - name: to type: "[]string" required: true title: Email addresses - name: cc type: "[]string" required: false title: Email addresses - name: replyTo type: string required: false title: Email address in reply-to field - name: subject type: string required: false title: Email subject - name: content type: sqlxTypes.JSONText required: true title: Message content - name: remoteAttachments type: "[]string" required: false title: Remote files to attach to the email - title: Attachments path: "/namespace/{namespaceID}/attachment/{kind}" entrypoint: attachment authentication: - Client ID - Session ID parameters: path: - name: kind type: string required: true title: Attachment kind - type: uint64 name: namespaceID required: true title: Namespace ID get: - type: string name: sign required: false title: Signature - type: uint64 name: userID required: false title: User ID apis: - name: list path: "/" method: GET title: List, filter all page attachments parameters: get: - name: pageID type: uint64 required: false title: Filter attachments by page ID - type: uint64 name: moduleID required: false title: Filter attachments by module ID - name: recordID type: uint64 required: false title: Filter attachments by record ID - name: fieldName type: string required: false title: Filter attachments by field name - type: uint name: limit title: Limit - type: string name: pageCursor title: Page cursor - name: read path: "/{attachmentID}" method: GET title: Attachment details parameters: path: - name: attachmentID type: uint64 required: true title: Attachment ID - name: delete path: "/{attachmentID}" method: DELETE title: Delete attachment parameters: path: - name: attachmentID type: uint64 required: true title: Attachment ID - name: original path: "/{attachmentID}/original/{name}" method: GET title: Serves attached file parameters: path: - name: attachmentID type: uint64 required: true title: Attachment ID - name: name type: string required: true title: File name get: - type: bool name: download required: false title: Force file download - name: preview path: "/{attachmentID}/preview.{ext}" method: GET title: Serves preview of an attached file parameters: path: - name: attachmentID type: uint64 required: true title: Attachment ID - name: ext type: string required: true title: Preview extension/format - title: Permissions entrypoint: permissions path: "/permissions" authentication: - Client ID - Session ID imports: - github.com/cortezaproject/corteza/server/pkg/rbac apis: - name: list path: "/" method: GET title: Retrieve defined permissions - name: effective path: "/effective" method: GET title: Effective rules for current user parameters: get: - name: resource type: string required: false title: Show only rules for a specific resource - name: trace path: "/trace" method: GET title: Evaluate rules for given user/role combo parameters: get: - name: resource type: "[]string" required: false title: Show only rules for a specific resource - name: userID type: uint64 required: false - name: roleID type: "[]uint64" required: false - name: read path: "/{roleID}/rules" method: GET title: Retrieve role permissions parameters: path: - name: roleID type: uint64 required: true title: Role ID get: - name: resource type: "[]string" required: false title: Show only rules for a specific resource - name: delete path: "/{roleID}/rules" method: DELETE title: Remove all defined role permissions parameters: path: - name: roleID type: uint64 required: true title: Role ID - name: update path: "/{roleID}/rules" method: PATCH title: Update permission settings parameters: path: - name: roleID type: uint64 required: true title: Role ID post: - name: rules type: rbac.RuleSet required: true title: List of permission rules to set - title: Compose automation scripts path: "/automation" entrypoint: automation apis: - name: list method: GET title: List all available automation scripts for compose resources path: "/" parameters: get: - name: resourceTypePrefixes type: "[]string" title: Filter by resource prefix - name: resourceTypes type: "[]string" title: Filter by resource type - name: eventTypes type: "[]string" title: Filter by event type - name: excludeInvalid type: bool title: Exclude scripts that cannot be used (errors) - name: excludeClientScripts type: bool title: Do not include client scripts - name: excludeServerScripts type: bool title: Do not include server scripts - name: bundle method: GET title: Serves client scripts bundle path: "/{bundle}-{type}.{ext}" parameters: path: - name: bundle type: string title: Name of the bundle - name: type type: string title: Bundle type - name: ext type: string title: Bundle extension - name: triggerScript method: POST title: Triggers execution of a specific script on a system service level path: "/trigger" parameters: post: - name: script type: string title: Script to execute required: true - name: args type: map[string]interface{} parser: parseMapStringInterface title: Arguments to pass to the script