openapi: 3.0.1 info: title: Message Service API description: "\t\t

What are messages and how do they work?

\n\t\t

\n\t\t Messages are notifications that are sent to alert other listening components about actions performed on the platform.\n\t\tFor example, several components might be interested to be notified when a new document has been uploaded in the UI: reconciliation, signing, accounting software etc.\n\t\t

\n\t\t

\n\t\tTo be able to receive these messages, you need to register an extension with the Message Listeners extension point,\n\t\tusing the Register an extension endpoint.\n\t\tBecause not all components will be interested in all messages, this API allows you to filter exactly what messages you want to receive,\n\t\tusing different message categories and types.\n\t\t

\n\t\t

Access limitations

\n\t\t

\n\t\tKeep in mind that certain access limitations exist that control sending/receiving messages,\n\t\tso users might need certain permissions to send/listen to messages belonging to a specific category/type or to register an extension.\n\t\t

\n\t\t

Authorization callbacks

\n\t\t

\n\t\tWhen a user attempts to register a listener for a specific category of messages (e.g. documents),\n\t\tthe Message Service will perform a callback to a messageAuthorizer that verifies if the user has permission\n\t\tto listen to document-related messages.\n\t\t

\n\t\t

\n\t\tExample: A user registers a message listener within the Plugin Service.\n\t\tAt this point, the Plugin Service will call the Message Service to check if the user is authorized to register\n \t\tthe listener and check the category filter of the message (e.g., documents), specified by the user in the initial registration request.\n\t\tThen, the Message Service calls the messageAuthorizer to check if the listener has permissions to receive messages belonging to that category.\n\t\t

\n\t\t

\n\t\tAdditionally, it is possible for the messageAuthorizer to respond with additional information regarding message filters,\n\t\twhich is added to the authorizationInfo and returned to the Plugin Service to be stored with the extension.\n\t\tThis can help the Message Service decide later on if a message that is produced should be sent to this listener or not.\n\t\t

\n" version: 2.0.0 servers: - description: The Message Service API REST endpoint via localtest.me url: https://api.btx.fr.banqup.com/core/message - description: The Message Service API REST endpoint via localtest.me url: https://api.btx.eu.banqup.com/core/message paths: /v2/messages:send: post: tags: - message-service summary: Sends a message description: 'Sends a message to all listeners that are authorized to receive it.
Scope: []' operationId: sendMessageV2 requestBody: content: application/json: schema: $ref: '#/components/schemas/SendMessageRequest' required: true responses: '202': description: The message has been accepted and will soon be broadcast to all subscribed message listeners. content: application/json: schema: $ref: '#/components/schemas/MessageResponse' '403': description: You must have the permission 'message_category_send' on the category that is in your request. content: application/json: schema: $ref: '#/components/schemas/MessageResponse' x-action: value: send /v2/messageAuthorizers/subject:getAuthorizer: post: tags: - message-service summary: Gets subject message authorization filter description: 'Convenience endpoint that returns a subject filter.
Scope: []' operationId: getSubjectMessageAuthorizer requestBody: content: application/json: schema: $ref: '#/components/schemas/GetMessageAuthorizerRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetMessageAuthorizerResponse' x-action: value: getAuthorizer /v2/messageAuthorizers/permission:getAuthorizer: post: tags: - message-service summary: Get permission message authorization filter description: 'Convenience endpoint that returns a user/permission filter.
Scope: []' operationId: getPermissionMessageAuthorizer requestBody: content: application/json: schema: $ref: '#/components/schemas/GetMessageAuthorizerRequest' required: true responses: '200': description: 'The default permission filter to determine whether or not a subject may receive events that are broadcast by the message service. The returned filter checks the scope and resource mentioned in the message against the subject of the receiver (for example: you need space_read to receive document events about documents in that space)' content: application/json: schema: $ref: '#/components/schemas/GetMessageAuthorizerResponse' x-action: value: getAuthorizer /v1/messages: post: tags: - message-service summary: '[DEPRECATED] Sends a message' description: Sends a message to all listeners that are authorized to receive it. **Deprecated** due to API rework. Use /v2/messages:send instead. operationId: sendMessage requestBody: content: application/json: schema: $ref: '#/components/schemas/MessageRequest' required: true responses: '202': description: The message has been accepted and will soon be broadcast to all subscribed message listeners. content: application/json: schema: $ref: '#/components/schemas/MessageResponse' '403': description: You must have the permission 'message_category_send' on the category that is in your request. content: application/json: schema: $ref: '#/components/schemas/MessageResponse' deprecated: true /v1/messageAuthorizers/subject/authorizeMessage: post: tags: - message-service summary: '[DEPRECATED] Get subject message authorization filter' description: Convenience endpoint that returns a subject filter. **Deprecated** due to rename. Use /v2/messageAuthorizers/subject:getAuthorizer instead. operationId: getDefaultSubjectFilter requestBody: content: application/json: schema: $ref: '#/components/schemas/PermissionFilterRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PermissionFilterResponse' deprecated: true /v1/messageAuthorizers/permission/authorizeMessage: post: tags: - message-service summary: '[DEPRECATED] Get permission message authorization filter' description: Convenience endpoint that returns a user/permission filter. **Deprecated** due to rename. Use /v2/messageAuthorizers/permission:getAuthorizer instead. operationId: getDefaultPermissionFilter requestBody: content: application/json: schema: $ref: '#/components/schemas/PermissionFilterRequest' required: true responses: '200': description: 'The default permission filter to determine whether or not a subject may receive events that are broadcast by the message service. The returned filter checks the scope and resource mentioned in the message against the subject of the receiver (for example: you need space_read to receive document events about documents in that space)' content: application/json: schema: $ref: '#/components/schemas/PermissionFilterResponse' deprecated: true components: schemas: JsonNode: type: object SendMessageRequest: required: - category type: object properties: resourceId: maxLength: 256 minLength: 0 type: string scope: maxLength: 256 minLength: 0 type: string category: maxLength: 1024 minLength: 0 type: string channel: maxLength: 256 minLength: 0 type: string type: maxLength: 64 minLength: 0 type: string audience: maxLength: 256 minLength: 0 type: string subject: maxLength: 256 minLength: 0 type: string orderGroup: maxLength: 256 minLength: 0 pattern: .*\S.* type: string data: $ref: '#/components/schemas/JsonNode' MessageResponse: required: - messageId type: object properties: messageId: type: string GetMessageAuthorizerRequest: required: - subject type: object properties: subject: maxLength: 256 minLength: 0 type: string extensionData: type: object GetMessageAuthorizerResponse: type: object properties: permissionFilterList: type: array items: $ref: '#/components/schemas/PermissionFilter' PermissionFilter: type: object properties: type: maxLength: 64 minLength: 0 type: string subject: maxLength: 256 minLength: 0 type: string MessageRequest: required: - category type: object properties: resourceId: maxLength: 256 minLength: 0 type: string scope: maxLength: 256 minLength: 0 type: string category: maxLength: 1024 minLength: 0 type: string channel: maxLength: 256 minLength: 0 type: string type: maxLength: 64 minLength: 0 type: string audience: maxLength: 256 minLength: 0 type: string subject: maxLength: 256 minLength: 0 type: string orderGroup: maxLength: 256 minLength: 0 pattern: .*\S.* type: string data: $ref: '#/components/schemas/JsonNode' PermissionFilterRequest: required: - subject type: object properties: subject: maxLength: 256 minLength: 0 type: string extensionData: type: object PermissionFilterResponse: type: object properties: permissionFilterList: type: array items: $ref: '#/components/schemas/PermissionFilter' securitySchemes: message: type: oauth2 flows: authorizationCode: authorizationUrl: https://api.btx.fr.banqup.com/v1/oauth20/authorization tokenUrl: https://api.btx.fr.banqup.com/v1/oauth20/token_kc scopes: {}