3
0
corteza/server/compose/rest.yaml
Vivek Patel 1699e3f94b Remove handle requirement from resource API
We removed handle requirement for all resource like namespace(slug), module, user, page, chart.

Due to that namespace import/export was broken as we were using handle as reference, hence fixed it by replacing handle usage with ID of resource.

It also fixes index of template table for handle column.
2022-11-24 10:28:22 +02:00

1339 lines
33 KiB
YAML

---
# 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
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
- 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
- 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
- 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: 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: 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