openapi: 3.2.0 info: title: Fusio Action API description: Self-Hosted API Management for Builders. version: '1' servers: - url: https://demo.fusio-project.org tags: - name: Action paths: /backend/action: get: tags: - Action description: Returns a paginated list of actions operationId: backend.action.getAll parameters: - name: startIndex in: query required: false schema: type: integer - name: count in: query required: false schema: type: integer - name: search in: query required: false schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Backend_ActionCollection' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action get all x-summary-source: derived post: tags: - Action description: Creates a new action operationId: backend.action.create requestBody: content: application/json: schema: $ref: '#/components/schemas/Backend_ActionCreate' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action create x-summary-source: derived /backend/action/{action_id}: parameters: - name: action_id in: path required: true schema: type: string get: tags: - Action description: Returns a specific action operationId: backend.action.get responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Backend_Action' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action get x-summary-source: derived put: tags: - Action description: Updates an existing action operationId: backend.action.update requestBody: content: application/json: schema: $ref: '#/components/schemas/Backend_ActionUpdate' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action update x-summary-source: derived delete: tags: - Action description: Deletes an existing action operationId: backend.action.delete responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action delete x-summary-source: derived /backend/action/execute/{action_id}: parameters: - name: action_id in: path required: true schema: type: string post: tags: - Action description: Executes a specific action. This method should be used to test an action configuration operationId: backend.action.execute requestBody: content: application/json: schema: $ref: '#/components/schemas/Backend_ActionExecuteRequest' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Backend_ActionExecuteResponse' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action execute x-summary-source: derived /backend/action/list: get: tags: - Action description: Returns all available action classes operationId: backend.action.getClasses responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Backend_ActionIndex' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action get classes x-summary-source: derived /backend/action/{action_id}/commit: parameters: - name: action_id in: path required: true schema: type: string get: tags: - Action description: Returns a paginated list of action commits operationId: backend.action.getCommits parameters: - name: startIndex in: query required: false schema: type: integer - name: count in: query required: false schema: type: integer - name: search in: query required: false schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Backend_ActionCommitCollection' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action get commits x-summary-source: derived /backend/action/form: get: tags: - Action description: Returns the action config form operationId: backend.action.getForm parameters: - name: class in: query description: The target action class required: false schema: description: The target action class type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Common_FormContainer' 4XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' 5XX: description: '' content: application/json: schema: $ref: '#/components/schemas/Common_Message' security: - app: - backend.action summary: Backend action get form x-summary-source: derived components: schemas: Common_FormElementMap: allOf: - $ref: '#/components/schemas/Common_FormElement' - description: Form element which represents a map element type: object properties: type: description: The input type i.e. text or password, all HTML input types are allowed type: string Common_FormElementCollection: allOf: - $ref: '#/components/schemas/Common_FormElement' - description: Form element which represents a collection element type: object properties: type: description: The input type i.e. text or password, all HTML input types are allowed type: string Common_FormElementTypeSchema: $ref: '#/components/schemas/Common_FormElement' Backend_User: description: This object represents a user type: object properties: id: description: Unique identifier for the object type: integer roleId: description: A role which is assigned to the user type: integer planId: description: A plan which is assigned to the user type: integer status: description: Status of the object either 1 = active, 2 = disabled or 0 = deleted type: integer name: description: Unique name of the object type: string email: description: The email address of the user type: string points: description: Points assigned to the user type: integer scopes: description: List of scopes which are assigned to the user type: array items: type: string apps: type: array items: $ref: '#/components/schemas/Backend_App' metadata: $ref: '#/components/schemas/Common_Metadata' date: description: The insert date type: string format: date-time Backend_App: description: This object represents an app to access the API on-behalf of a user type: object properties: id: description: Unique identifier for the object type: integer userId: type: integer status: description: Status of the object either 1 = active, 2 = pending, 3 = deactivated or 4 = deleted type: integer name: description: Unique name of the object type: string url: description: Url where the app is hosted type: string parameters: description: Optional URL-encoded parameters of the app i.e. foo=bar&bar=foo type: string appKey: description: The app key also known as client id which is generated on creation type: string appSecret: description: The app secret also known as client secret which is generated on creation type: string metadata: $ref: '#/components/schemas/Common_Metadata' date: description: The create date of this object type: string format: date-time scopes: description: A list of assigned scopes for this app type: array items: type: string tokens: description: A list of tokens which are assigned to this app type: array items: $ref: '#/components/schemas/Backend_Token' Common_FormElementInput: allOf: - $ref: '#/components/schemas/Common_FormElement' - description: Form element which represents an input element type: object properties: type: description: The input type i.e. text or password, all HTML input types are allowed type: string Backend_ActionExecuteRequest: description: Represents a request to execute an action type: object properties: method: description: HTTP method i.e. GET, POST type: string uriFragments: description: URL-encoded uri fragments i.e. foo=bar&bar=foo type: string parameters: description: URL-encoded query parameters i.e. foo=bar&bar=foo type: string headers: description: URL-encoded headers i.e. foo=bar&bar=foo type: string body: $ref: '#/components/schemas/Backend_ActionExecuteRequestBody' Backend_ActionCommit: description: An action commit which represents a change in the action configuration type: object properties: id: description: Unique identifier for the object type: integer user: $ref: '#/components/schemas/Backend_User' commitHash: description: A unique hash which represents this commit type: string config: $ref: '#/components/schemas/Backend_ActionConfig' insertDate: type: string format: date-time Common_FormElementSelect: allOf: - $ref: '#/components/schemas/Common_FormElement' - description: Form element which represents a select element type: object properties: options: description: Available options for the select element type: array items: $ref: '#/components/schemas/Common_FormElementSelectOption' Backend_ActionIndexEntry: description: Represents a concrete action class type: object properties: name: description: Human-readable name of the action class type: string class: description: Technical identifier of the action class type: string Backend_ActionExecuteRequestBody: description: Represents a request body type: object additionalProperties: {} Backend_ActionUpdate: $ref: '#/components/schemas/Backend_Action' Backend_ActionExecuteResponseBody: description: Represents a response body type: object additionalProperties: {} Common_FormElement: oneOf: - $ref: '#/components/schemas/Common_FormElementCheckbox' - $ref: '#/components/schemas/Common_FormElementCollection' - $ref: '#/components/schemas/Common_FormElementInput' - $ref: '#/components/schemas/Common_FormElementMap' - $ref: '#/components/schemas/Common_FormElementSelect' - $ref: '#/components/schemas/Common_FormElementTextArea' - $ref: '#/components/schemas/Common_FormElementTypeAPI' - $ref: '#/components/schemas/Common_FormElementTypeSchema' discriminator: type mapping: checkbox: '#/components/schemas/Common_FormElementCheckbox' collection: '#/components/schemas/Common_FormElementCollection' input: '#/components/schemas/Common_FormElementInput' map: '#/components/schemas/Common_FormElementMap' select: '#/components/schemas/Common_FormElementSelect' textarea: '#/components/schemas/Common_FormElementTextArea' typeapi: '#/components/schemas/Common_FormElementTypeAPI' typeschema: '#/components/schemas/Common_FormElementTypeSchema' Common_FormElementTextArea: allOf: - $ref: '#/components/schemas/Common_FormElement' - description: Form element which represents a textarea type: object properties: mode: description: Describes which data is provided at the textarea, this can be i.e. a programming language like php, java or python or also a data format like json type: string Backend_Action: description: This object represents the business logic which can be executed either through an operation or cronjob type: object properties: id: description: Unique identifier for the object type: integer status: description: Status of the object either 1 = active or 0 = deleted type: integer name: description: Unique name of the object type: string class: description: Underlying class of this action which handles the action logic type: string async: description: Whether to execute the action asynchronously, if true the action directly returns a 202 response and the action is executed later on in the background, useful for expensive operations type: boolean config: $ref: '#/components/schemas/Backend_ActionConfig' metadata: $ref: '#/components/schemas/Common_Metadata' Backend_ActionCollection: description: Base collection type: object properties: totalResults: type: integer startIndex: type: integer itemsPerPage: type: integer entry: type: array items: $ref: '#/components/schemas/Backend_Action' Backend_ActionIndex: description: Contains all possible classes which can be used at an action as class type: object properties: actions: type: array items: $ref: '#/components/schemas/Backend_ActionIndexEntry' Backend_ActionExecuteResponseHeaders: description: Represents a map of headers type: object additionalProperties: type: string Common_Message: description: Common error message type: object properties: success: type: boolean message: type: string id: type: string Backend_Token: description: This object represents a token, this an access token which was requested by a user type: object properties: id: description: Unique identifier for the object type: integer status: description: Status of the object either 1 = active or 2 = deleted type: integer name: type: string scopes: type: array items: type: string ip: type: string expire: type: string format: date-time date: type: string format: date-time Common_FormElementCheckbox: $ref: '#/components/schemas/Common_FormElement' Common_FormElementTypeAPI: $ref: '#/components/schemas/Common_FormElement' Backend_ActionCreate: $ref: '#/components/schemas/Backend_Action' Common_Metadata: type: object additionalProperties: type: string Backend_ActionConfig: description: The action configuration which contains arbitrary key-value entries type: object additionalProperties: {} Backend_ActionExecuteResponse: description: Represents an action execution response type: object properties: statusCode: description: HTTP status code i.e. 200, 400, etc. type: integer headers: $ref: '#/components/schemas/Backend_ActionExecuteResponseHeaders' body: $ref: '#/components/schemas/Backend_ActionExecuteResponseBody' Common_FormContainer: description: Represents a config form with a list of elements type: object properties: element: type: array items: $ref: '#/components/schemas/Common_FormElement' Common_FormElementSelectOption: description: Represents a concrete option entry type: object properties: key: type: string value: type: string Backend_ActionCommitCollection: description: Base collection type: object properties: totalResults: type: integer startIndex: type: integer itemsPerPage: type: integer entry: type: array items: $ref: '#/components/schemas/Backend_ActionCommit' securitySchemes: app: type: oauth2 flows: clientCredentials: tokenUrl: https://demo.fusio-project.org/authorization/token refreshUrl: https://demo.fusio-project.org/authorization/token scopes: backend: '' backend.account: '' backend.action: '' backend.agent: '' backend.app: '' backend.audit: '' backend.backup: '' backend.bundle: '' backend.category: '' backend.config: '' backend.connection: '' backend.cronjob: '' backend.dashboard: '' backend.event: '' backend.firewall: '' backend.form: '' backend.generator: '' backend.identity: '' backend.log: '' backend.marketplace: '' backend.operation: '' backend.page: '' backend.plan: '' backend.rate: '' backend.role: '' backend.schema: '' backend.scope: '' backend.sdk: '' backend.specification: '' backend.statistic: '' backend.taxonomy: '' backend.tenant: '' backend.test: '' backend.token: '' backend.transaction: '' backend.trash: '' backend.trigger: '' backend.user: '' backend.webhook: '' authorizationCode: authorizationUrl: https://demo.fusio-project.org/authorization/authorize tokenUrl: https://demo.fusio-project.org/authorization/token refreshUrl: https://demo.fusio-project.org/authorization/token scopes: backend: '' backend.account: '' backend.action: '' backend.agent: '' backend.app: '' backend.audit: '' backend.backup: '' backend.bundle: '' backend.category: '' backend.config: '' backend.connection: '' backend.cronjob: '' backend.dashboard: '' backend.event: '' backend.firewall: '' backend.form: '' backend.generator: '' backend.identity: '' backend.log: '' backend.marketplace: '' backend.operation: '' backend.page: '' backend.plan: '' backend.rate: '' backend.role: '' backend.schema: '' backend.scope: '' backend.sdk: '' backend.specification: '' backend.statistic: '' backend.taxonomy: '' backend.tenant: '' backend.test: '' backend.token: '' backend.transaction: '' backend.trash: '' backend.trigger: '' backend.user: '' backend.webhook: ''