naftiko: 1.0.0-alpha2 info: label: Symphony Bot Messaging description: 'Workflow capability for Symphony bot automation: authenticate bots, send and receive messages, manage rooms and streams, handle real-time events via datafeed, and monitor signals. Composes the Agent API, Pod API, and Login API for end-to-end bot development workflows.' tags: - Automation - Bots - Collaboration - Datafeed - Messaging - Real-Time - Symphony - Workflows created: '2026-05-03' modified: '2026-05-06' binds: - namespace: env keys: SYMPHONY_SESSION_TOKEN: SYMPHONY_SESSION_TOKEN SYMPHONY_KEY_MANAGER_TOKEN: SYMPHONY_KEY_MANAGER_TOKEN SYMPHONY_BOT_JWT: SYMPHONY_BOT_JWT capability: consumes: - type: http namespace: symphony-agent baseUri: https://acme.symphony.com description: Symphony Agent API for bot messaging and event streaming authentication: type: apikey key: sessionToken value: '{{SYMPHONY_SESSION_TOKEN}}' placement: header resources: - name: health path: /v3/health description: Agent health and connectivity status operations: - name: get-health method: GET description: Check agent health status outputRawFormat: json outputParameters: - name: result type: object value: $. - name: get-extended-health method: GET description: Check extended health status of services and users inputParameters: - name: path in: path type: string required: true description: Extended health path outputRawFormat: json outputParameters: - name: result type: object value: $. - name: messages path: /v4/stream/{sid}/message description: Message operations on streams operations: - name: get-messages method: GET description: Get messages from an existing stream inputParameters: - name: sid in: path type: string required: true description: Stream ID - name: since in: query type: integer required: true description: Timestamp since epoch milliseconds - name: sessionToken in: header type: string required: true description: Session authentication token - name: keyManagerToken in: header type: string required: true description: Key manager token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-message method: POST description: Post a message to one existing stream inputParameters: - name: sid in: path type: string required: true description: Stream ID - name: sessionToken in: header type: string required: true description: Session authentication token - name: keyManagerToken in: header type: string required: true description: Key manager token body: type: json data: message: '{{tools.message}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: datafeeds path: /v5/datafeeds description: Real-time event datafeed management operations: - name: list-datafeeds method: GET description: List active datafeeds inputParameters: - name: sessionToken in: header type: string required: true description: Session authentication token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-datafeed method: POST description: Create a new datafeed for real-time events inputParameters: - name: sessionToken in: header type: string required: true description: Session authentication token outputRawFormat: json outputParameters: - name: datafeedId type: string value: $.id - name: signals path: /v1/signals description: Signal (keyword alert) management operations: - name: list-signals method: GET description: List available signals inputParameters: - name: sessionToken in: header type: string required: true description: Session authentication token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-signal method: POST description: Create a new signal inputParameters: - name: sessionToken in: header type: string required: true description: Session authentication token body: type: json data: name: '{{tools.name}}' query: '{{tools.query}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: dlp-policies path: /v3/dlp/policies description: Data Loss Prevention policy management operations: - name: list-dlp-policies method: GET description: List DLP policies inputParameters: - name: sessionToken in: header type: string required: true description: Session authentication token outputRawFormat: json outputParameters: - name: result type: object value: $. - type: http namespace: symphony-pod baseUri: https://acme.symphony.com description: Symphony Pod API for user and room management authentication: type: apikey key: sessionToken value: '{{SYMPHONY_SESSION_TOKEN}}' placement: header resources: - name: users path: /v3/users description: User lookup and management operations: - name: search-users method: GET description: Search for users by email or username inputParameters: - name: sessionToken in: header type: string required: true description: Session token - name: email in: query type: string required: false description: User email address - name: username in: query type: string required: false description: Username outputRawFormat: json outputParameters: - name: result type: object value: $. - name: rooms path: /v3/room description: Room (multi-party stream) management operations: - name: create-room method: POST description: Create a new room inputParameters: - name: sessionToken in: header type: string required: true description: Session token body: type: json data: name: '{{tools.name}}' description: '{{tools.description}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: search-rooms method: POST description: Search for rooms inputParameters: - name: sessionToken in: header type: string required: true description: Session token body: type: json data: query: '{{tools.query}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: get-room-info method: GET description: Get information about a room inputParameters: - name: id in: path type: string required: true description: Room ID - name: sessionToken in: header type: string required: true description: Session token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: connections path: /v1/connection description: User connection management operations: - name: list-connections method: GET description: List user connections inputParameters: - name: sessionToken in: header type: string required: true description: Session token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: streams path: /v1/streams/list description: Stream listing and management operations: - name: list-streams method: POST description: List streams for the current user inputParameters: - name: sessionToken in: header type: string required: true description: Session token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: admin-users path: /v2/admin/user/list description: Admin user management operations: - name: list-users-admin method: GET description: List all users (admin) inputParameters: - name: sessionToken in: header type: string required: true description: Session token outputRawFormat: json outputParameters: - name: result type: object value: $. - type: http namespace: symphony-login baseUri: https://acme.symphony.com description: Symphony Login API for RSA-based bot authentication resources: - name: pubkey-auth path: /pubkey/authenticate description: RSA public key based authentication operations: - name: authenticate-bot method: POST description: Authenticate with public key to get session token body: type: json data: token: '{{SYMPHONY_BOT_JWT}}' outputRawFormat: json outputParameters: - name: sessionToken type: string value: $.token - name: authenticate-app method: POST description: Authenticate an app with public key body: type: json data: token: '{{SYMPHONY_BOT_JWT}}' outputRawFormat: json outputParameters: - name: sessionToken type: string value: $.token - name: idm-tokens path: /idm/tokens description: OAuth2 JWT token exchange operations: - name: get-oauth-token method: POST description: Returns a valid OAuth2 access token from a session token inputParameters: - name: sessionToken in: header type: string required: true description: Session authentication token - name: scope in: query type: string required: false description: Space-separated list of scopes outputRawFormat: json outputParameters: - name: accessToken type: string value: $.access_token exposes: - type: rest port: 8080 namespace: symphony-bot-api description: Unified REST API for Symphony bot messaging and automation workflows. resources: - path: /v1/authenticate name: authentication description: Bot and app authentication operations: - method: POST name: authenticate description: Authenticate a bot using RSA key call: symphony-login.authenticate-bot outputParameters: - type: object mapping: $. - path: /v1/messages/{streamId} name: messages description: Message operations on streams operations: - method: GET name: get-messages description: Get messages from a stream call: symphony-agent.get-messages with: sid: rest.streamId outputParameters: - type: object mapping: $. - method: POST name: post-message description: Post a message to a stream call: symphony-agent.create-message with: sid: rest.streamId outputParameters: - type: object mapping: $. - path: /v1/datafeeds name: datafeeds description: Real-time event datafeed management operations: - method: GET name: list-datafeeds description: List active datafeeds call: symphony-agent.list-datafeeds outputParameters: - type: object mapping: $. - method: POST name: create-datafeed description: Create a new datafeed for real-time events call: symphony-agent.create-datafeed outputParameters: - type: object mapping: $. - path: /v1/rooms name: rooms description: Room management operations: - method: POST name: create-room description: Create a new Symphony room call: symphony-pod.create-room outputParameters: - type: object mapping: $. - method: GET name: search-rooms description: Search for rooms call: symphony-pod.search-rooms outputParameters: - type: object mapping: $. - path: /v1/users name: users description: User lookup operations: - method: GET name: search-users description: Search for users by email or username call: symphony-pod.search-users outputParameters: - type: object mapping: $. - path: /v1/signals name: signals description: Signal (keyword alert) management operations: - method: GET name: list-signals description: List available signals call: symphony-agent.list-signals outputParameters: - type: object mapping: $. - method: POST name: create-signal description: Create a new signal call: symphony-agent.create-signal outputParameters: - type: object mapping: $. - path: /v1/streams name: streams description: Stream listing operations: - method: GET name: list-streams description: List all streams call: symphony-pod.list-streams outputParameters: - type: object mapping: $. - path: /v1/dlp/policies name: dlp-policies description: Data Loss Prevention policies operations: - method: GET name: list-dlp-policies description: List DLP policies call: symphony-agent.list-dlp-policies outputParameters: - type: object mapping: $. - type: mcp port: 9090 namespace: symphony-bot-mcp transport: http description: MCP server for AI-assisted Symphony bot messaging and automation. tools: - name: authenticate-bot description: Authenticate a Symphony bot using RSA key pair to obtain session token hints: readOnly: false destructive: false call: symphony-login.authenticate-bot outputParameters: - type: object mapping: $. - name: get-messages description: Retrieve messages from a Symphony stream hints: readOnly: true openWorld: false call: symphony-agent.get-messages with: sid: tools.streamId outputParameters: - type: object mapping: $. - name: post-message description: Post a message to a Symphony stream hints: readOnly: false destructive: false call: symphony-agent.create-message with: sid: tools.streamId outputParameters: - type: object mapping: $. - name: list-datafeeds description: List active Symphony datafeeds for real-time event processing hints: readOnly: true openWorld: false call: symphony-agent.list-datafeeds outputParameters: - type: object mapping: $. - name: create-datafeed description: Create a new datafeed to receive real-time Symphony events hints: readOnly: false destructive: false call: symphony-agent.create-datafeed outputParameters: - type: object mapping: $. - name: create-room description: Create a new Symphony room for team collaboration hints: readOnly: false destructive: false call: symphony-pod.create-room outputParameters: - type: object mapping: $. - name: search-rooms description: Search for Symphony rooms by name or keyword hints: readOnly: true openWorld: false call: symphony-pod.search-rooms outputParameters: - type: object mapping: $. - name: search-users description: Search for Symphony users by email or username hints: readOnly: true openWorld: false call: symphony-pod.search-users outputParameters: - type: object mapping: $. - name: list-streams description: List available Symphony streams hints: readOnly: true openWorld: false call: symphony-pod.list-streams outputParameters: - type: object mapping: $. - name: list-signals description: List Symphony signals (keyword alerts and triggers) hints: readOnly: true openWorld: false call: symphony-agent.list-signals outputParameters: - type: object mapping: $. - name: create-signal description: Create a new Symphony signal for keyword monitoring hints: readOnly: false destructive: false call: symphony-agent.create-signal outputParameters: - type: object mapping: $. - name: list-dlp-policies description: List Data Loss Prevention policies for compliance monitoring hints: readOnly: true openWorld: false call: symphony-agent.list-dlp-policies outputParameters: - type: object mapping: $.