openapi: 3.0.1
info:
 title: Rasa - Server Endpoints
 version: 1.0.0
 description: >-
 The Rasa server provides endpoints to retrieve trackers of conversations as
 well as endpoints to modify them. Additionally, endpoints for training and
 testing models are provided.
servers:
 \- url: http://localhost:5005
 description: Local development server
paths:
 /:
 get:
 tags:
 \- Server Information
 summary: Health endpoint of Rasa Server
 operationId: getHealth
 description: >-
 This URL can be used as an endpoint to run health checks against. When
 the server is running this will return 200.
 responses:
 '200':
 description: Up and running
 content:
 text/plain:
 schema:
 type: string
 description: Welcome text of Rasa Server
 example: 'Hello from Rasa: 1.0.0'
 /license:
 get:
 tags:
 \- Server Information
 operationId: getLicense
 summary: Information about your Rasa Pro License
 description: Returns the license information about your Rasa Pro License
 responses:
 '200':
 description: Rasa Pro License Information
 content:
 application/json:
 schema:
 type: object
 properties:
 id:
 type: string
 description: Unique identifier for the license
 company:
 type: string
 description: Name of the company the license is issued to
 scope:
 type: string
 description: Scope of the license
 email:
 type: string
 description: Email associated with the license
 expires:
 type: string
 format: date-time
 description: Expiry date of the license in ISO 8601 format
 example:
 id: u5fn8888-e213-4c12-9542-0baslfdkjas
 company: acme
 scope: rasa:pro rasa:voice
 email: acme@email.com
 expires: '2026-01-01T00:00:00+00:00'
 /version:
 get:
 tags:
 \- Server Information
 operationId: getVersion
 summary: Version of Rasa
 description: Returns the version of Rasa.
 responses:
 '200':
 description: Version of Rasa
 content:
 application/json:
 schema:
 type: object
 properties:
 version:
 type: string
 description: Rasa version number
 minimum\_compatible\_version:
 type: string
 description: >-
 Minimum version this Rasa version is able to load models
 from
 example:
 version: 1.0.0
 minimum\_compatible\_version: 1.0.0
 /status:
 get:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: getStatus
 tags:
 \- Server Information
 summary: Status of the Rasa server
 description: Information about the server and the currently loaded Rasa model.
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 type: object
 properties:
 model\_id:
 type: string
 description: ID of the loaded model
 example: 75a985b7b86d442ca013d61ea4781b22
 model\_file:
 type: string
 description: Path of the loaded model
 example: 20190429-103105.tar.gz
 num\_active\_training\_jobs:
 type: integer
 description: Number of running training processes
 example: 2
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 /conversations/{conversation\_id}/tracker:
 get:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: getConversationTracker
 tags:
 \- Tracker
 summary: Retrieve a conversations tracker
 description: >-
 The tracker represents the state of the conversation. The state of the
 tracker is created by applying a sequence of events, which modify the
 state. These events can optionally be included in the response.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 \- $ref: '#/components/parameters/include\_events'
 \- $ref: '#/components/parameters/until'
 responses:
 '200':
 $ref: '#/components/responses/200Tracker'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 delete:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: deleteConversationTracker
 tags:
 \- Tracker
 summary: Delete tracker for a specific conversation
 description: Deletes the tracker of a conversation.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 responses:
 '204':
 description: Tracker successfully deleted.
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '404':
 description: Conversation not found.
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /users/{user\_id}/trackers:
 get:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: getUserTrackers
 tags:
 \- Tracker
 summary: Retrieve all conversations for a user
 description: >-
 Retrieves all conversation trackers for a given user with pagination.
 All the event data is returned. Requires admin authentication (token or
 JWT with \`role\` set to \`admin\`).

Tracker data is read directly from storage as serialized event dicts
 without replaying conversation history through \`DialogueStateTracker\`.
 This keeps response latency constant regardless of conversation volume.

The \`current\_session\_id\` field in each returned tracker is derived from
 the metadata of the last stored event. It is \`null\` when the last event
 is \`ConversationInactive\`.

Use this endpoint in a backend service to control what data is exposed
 to clients. Direct client access should be avoided to maintain security
 and control over sensitive user data.
 parameters:
 \- $ref: '#/components/parameters/user\_id'
 \- $ref: '#/components/parameters/limit'
 \- $ref: '#/components/parameters/offset'
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/UserTrackersResponse'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /conversations/{conversation\_id}/tracker/events:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: addConversationTrackerEvents
 tags:
 \- Tracker
 summary: Append events to a tracker
 description: >-
 Appends one or multiple new events to the tracker state of the
 conversation. Any existing events will be kept and the new events will
 be appended, updating the existing state. If events are appended to a
 new conversation ID, the tracker will be initialised with a new session.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 \- $ref: '#/components/parameters/include\_events'
 \- $ref: '#/components/parameters/output\_channel'
 \- in: query
 name: execute\_side\_effects
 schema:
 type: boolean
 default: false
 description: >-
 If \`true\`, any \`\`BotUttered\`\` event will be forwarded to the
 channel specified in the \`\`output\_channel\`\` parameter. Any
 \`\`ReminderScheduled\`\` or \`\`ReminderCancelled\`\` event will also be
 processed.
 requestBody:
 required: true
 content:
 application/json:
 schema:
 oneOf:
 \- $ref: '#/components/schemas/Event'
 \- $ref: '#/components/schemas/EventList'
 responses:
 '200':
 $ref: '#/components/responses/200Tracker'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 put:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: replaceConversationTrackerEvents
 tags:
 \- Tracker
 summary: Replace a trackers events
 description: >-
 Replaces all events of a tracker with the passed list of events. This
 endpoint should not be used to modify trackers in a production setup,
 but rather for creating training data.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 \- $ref: '#/components/parameters/include\_events'
 requestBody:
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/EventList'
 responses:
 '200':
 $ref: '#/components/responses/200Tracker'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /conversations/{conversation\_id}/story:
 get:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: getConversationStory
 tags:
 \- Tracker
 summary: Retrieve an end-to-end story corresponding to a conversation
 description: >-
 The story represents the whole conversation in end-to-end format. This
 can be posted to the '/test/stories' endpoint and used as a test.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 \- $ref: '#/components/parameters/until'
 \- $ref: '#/components/parameters/all\_sessions'
 responses:
 '200':
 $ref: '#/components/responses/200Story'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /conversations/{conversation\_id}/execute:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: executeConversationAction
 tags:
 \- Tracker
 summary: Run an action in a conversation
 deprecated: true
 description: >-
 DEPRECATED. Runs the action, calling the action server if necessary. Any
 responses sent by the executed action will be forwarded to the channel
 specified in the output\_channel parameter. If no output channel is
 specified, any messages that should be sent to the user will be included
 in the response of this endpoint.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 \- $ref: '#/components/parameters/include\_events'
 \- $ref: '#/components/parameters/output\_channel'
 requestBody:
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/ActionRequest'
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 type: object
 properties:
 tracker:
 $ref: '#/components/schemas/Tracker'
 messages:
 type: array
 items:
 $ref: '#/components/schemas/BotMessage'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /conversations/{conversation\_id}/trigger\_intent:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: triggerConversationIntent
 tags:
 \- Tracker
 summary: Inject an intent into a conversation
 description: >-
 Sends a specified intent and list of entities in place of a user
 message. The bot then predicts and executes a response action. Any
 responses sent by the executed action will be forwarded to the channel
 specified in the \`\`output\_channel\`\` parameter. If no output channel is
 specified, any messages that should be sent to the user will be included
 in the response of this endpoint.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 \- $ref: '#/components/parameters/include\_events'
 \- $ref: '#/components/parameters/output\_channel'
 requestBody:
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/IntentTriggerRequest'
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 type: object
 properties:
 tracker:
 $ref: '#/components/schemas/Tracker'
 messages:
 type: array
 items:
 $ref: '#/components/schemas/BotMessage'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /conversations/{conversation\_id}/predict:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: predictConversationAction
 tags:
 \- Tracker
 summary: Predict the next action
 description: >-
 Runs the conversations tracker through the model's policies to predict
 the scores of all actions present in the model's domain. Actions are
 returned in the 'scores' array, sorted on their 'score' values. The
 state of the tracker is not modified.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/PredictResult'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /conversations/{conversation\_id}/messages:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: addConversationMessage
 tags:
 \- Tracker
 summary: Add a message to a tracker
 description: >-
 Adds a message to a tracker. This doesn't trigger the prediction loop.
 It will log the message on the tracker and return, no actions will be
 predicted or run. This is often used together with the predict endpoint.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 \- $ref: '#/components/parameters/include\_events'
 requestBody:
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Message'
 responses:
 '200':
 $ref: '#/components/responses/200Tracker'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /conversations/{conversation\_id}/capabilities:
 get:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: getConversationCapabilities
 tags:
 \- Tracker
 summary: Retrieve capabilities for a conversation
 description: >-
 Returns structured, conversation-aware capabilities metadata for all
 flows, including whether each flow is currently startable based on guard
 evaluation for the given conversation state. This endpoint is intended
 for use by custom actions and external integrations to build dynamic
 "what can you do?" responses without hard-coded flow lists.
 parameters:
 \- $ref: '#/components/parameters/conversation\_id'
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/ConversationCapabilities'
 example:
 flows:
 \- id: transfer\_money
 name: Transfer Money
 description: Transfer money to another account.
 guard\_condition: null
 startable: true
 always\_include\_in\_prompt: false
 trigger\_intents:
 \- transfer\_money
 \- id: check\_balance
 name: Check Balance
 description: Check your current account balance.
 guard\_condition: has\_verified\_account
 startable: false
 always\_include\_in\_prompt: false
 trigger\_intents:
 \- check\_balance
 \- check\_my\_balance
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '404':
 description: Conversation not found.
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /model/train:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: trainModel
 tags:
 \- Model
 summary: Train a Rasa model
 description: >-
 Trains a new Rasa model. Depending on the data given only a dialogue
 model, only a NLU model, or a model combining a trained dialogue model
 with an NLU model will be trained. The new model is not loaded by
 default.
 parameters:
 \- in: query
 name: save\_to\_default\_model\_directory
 schema:
 type: boolean
 default: true
 description: >-
 If \`true\` (default) the trained model will be saved in the default
 model directory, if \`false\` it will be saved in a temporary
 directory
 \- in: query
 name: force\_training
 schema:
 type: boolean
 default: false
 description: Force a model training even if the data has not changed
 \- in: query
 name: augmentation
 schema:
 type: string
 default: 50
 description: How much data augmentation to use during training
 \- in: query
 name: num\_threads
 schema:
 type: string
 default: 1
 description: Maximum amount of threads to use when training
 \- $ref: '#/components/parameters/callback\_url'
 requestBody:
 required: true
 description: The training data should be in YAML format.
 content:
 application/yaml:
 schema:
 $ref: '#/components/schemas/YAMLTrainingRequest'
 example: \|
 pipeline: \[\]

policies: \[\]

intents:
 \- greet
 \- goodbye

entities: \[\]

slots:
 contacts\_list:
 type: text
 mappings:
 \- type: custom
 action: list\_contacts

actions:
 \- list\_contacts

forms: {}
 e2e\_actions: \[\]

responses:
 utter\_greet:
 \- text: "Hey! How are you?"

utter\_goodbye:
 \- text: "Bye"

utter\_list\_contacts:
 \- text: "You currently have the following contacts:\\n{contacts\_list}"

utter\_no\_contacts:
 \- text: "You have no contacts in your list."

session\_config:
 session\_expiration\_time: 60
 carry\_over\_slots\_to\_new\_session: true

nlu:
 \- intent: greet
 examples: \|
 \- hey
 \- hello

\- intent: goodbye
 examples: \|
 \- bye
 \- goodbye

rules:

\- rule: Say goodbye anytime the user says goodbye
 steps:
 \- intent: goodbye
 \- action: utter\_goodbye

stories:

\- story: happy path
 steps:
 \- intent: greet
 \- action: utter\_greet
 \- intent: goodbye
 \- action: utter\_goodbye

flows:
 list\_contacts:
 name: list your contacts
 description: show your contact list
 steps:
 \- action: list\_contacts
 next:
 \- if: "slots.contacts\_list"
 then:
 \- action: utter\_list\_contacts
 next: END
 \- else:
 \- action: utter\_no\_contacts
 next: END
 responses:
 '200':
 description: Zipped Rasa model
 headers:
 filename:
 schema:
 type: string
 description: File name of the trained model.
 content:
 application/octet-stream:
 schema:
 $ref: '#/components/schemas/TrainingResult'
 '204':
 $ref: '#/components/responses/204Callback'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '500':
 $ref: '#/components/responses/500ServerError'
 /model/test/stories:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: testModelStories
 tags:
 \- Model
 summary: Evaluate stories
 description: >-
 Evaluates one or multiple stories against the currently loaded Rasa
 model.
 parameters:
 \- $ref: '#/components/parameters/e2e'
 requestBody:
 required: true
 content:
 text/yml:
 schema:
 $ref: '#/components/schemas/StoriesTrainingData'
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/EvaluationStoriesResult'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /model/test/intents:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: testModelIntent
 tags:
 \- Model
 summary: Perform an intent evaluation
 description: Evaluates NLU model against a model or using cross-validation.
 parameters:
 \- $ref: '#/components/parameters/model'
 \- $ref: '#/components/parameters/callback\_url'
 \- in: query
 name: cross\_validation\_folds
 schema:
 type: integer
 default: null
 description: >-
 Number of cross validation folds. If this parameter is specified
 the given training data will be used for a cross-validation
 instead of using it as test set for the specified model. Note that
 this is only supported for YAML data.
 requestBody:
 required: true
 content:
 application/x-yaml:
 schema:
 type: string
 description: >-
 NLU training data and model configuration. The model
 configuration is only required if cross-validation is used.
 example: \|-
 nlu: - intent: greet
 examples: \|
 \- hey
 \- hello
 \- hi
 \- intent: bye
 examples: \|
 \- goodbye
 \- bye
 \- cheers

pipeline: - name: KeywordIntentClassifier
 application/json:
 schema:
 $ref: '#/components/schemas/RasaNLUData'
 responses:
 '200':
 description: NLU evaluation result
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/NLUEvaluationResult'
 '204':
 $ref: '#/components/responses/204Callback'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /model/predict:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: predictModelAction
 tags:
 \- Model
 summary: Predict an action on a temporary state
 description: >-
 Predicts the next action on the tracker state as it is posted to this
 endpoint. Rasa will create a temporary tracker from the provided events
 and will use it to predict an action. No messages will be sent and no
 action will be run.
 parameters:
 \- $ref: '#/components/parameters/include\_events'
 requestBody:
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/EventList'
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/PredictResult'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '409':
 $ref: '#/components/responses/409Conflict'
 '500':
 $ref: '#/components/responses/500ServerError'
 /model/parse:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: parseModelMessage
 tags:
 \- Model
 summary: Parse a message using the Rasa model
 description: >-
 Predicts the intent and entities of the message posted to this endpoint.
 No messages will be stored to a conversation and no action will be run.
 This will just retrieve the NLU parse results.
 parameters:
 \- $ref: '#/components/parameters/emulation\_mode'
 requestBody:
 required: true
 content:
 application/json:
 schema:
 type: object
 properties:
 text:
 type: string
 description: Message to be parsed
 example: Hello, I am Rasa!
 message\_id:
 type: string
 description: Optional ID for message to be parsed
 example: b2831e73-1407-4ba0-a861-0f30a42a2a5a
 responses:
 '200':
 description: Success
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/ModelParseResult'
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '500':
 $ref: '#/components/responses/500ServerError'
 /model:
 put:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: replaceModel
 tags:
 \- Model
 summary: Replace the currently loaded model
 description: >-
 Updates the currently loaded model. First, tries to load the model from
 the local (note: local to Rasa server) storage system. Secondly, tries
 to load the model from the provided model server configuration. Last,
 tries to load the model from the provided remote storage.
 requestBody:
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/ModelRequest'
 responses:
 '204':
 description: Model was successfully replaced.
 '400':
 $ref: '#/components/responses/400BadRequest'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '500':
 $ref: '#/components/responses/500ServerError'
 delete:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: unloadModel
 tags:
 \- Model
 summary: Unload the trained model
 description: Unloads the currently loaded trained model from the server.
 responses:
 '204':
 description: Model was sucessfully unloaded.
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 /flows:
 get:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: getFlows
 tags:
 \- Flows
 summary: Retrieve the flows of the assistant
 description: Returns the assistant was trained on.
 responses:
 '200':
 description: Flows were successfully retrieved.
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/FlowList'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '406':
 $ref: '#/components/responses/406InvalidHeader'
 '500':
 $ref: '#/components/responses/500ServerError'
 /domain:
 get:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: getDomain
 tags:
 \- Domain
 summary: Retrieve the loaded domain
 description: Returns the domain specification the currently loaded model is using.
 responses:
 '200':
 description: Domain was successfully retrieved.
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Domain'
 application/yaml:
 schema:
 $ref: '#/components/schemas/Domain'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '406':
 $ref: '#/components/responses/406InvalidHeader'
 '500':
 $ref: '#/components/responses/500ServerError'
 /webhooks/{rest\_channel}/webhook:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: postMessageRestChannel
 tags:
 \- Channel Webhooks
 summary: Post user message from a REST channel
 description: >-
 Post a message from the user and forward it to the assistant. Return the
 message of the assistant to the user.
 parameters:
 \- $ref: '#/components/parameters/rest\_channel'
 requestBody:
 description: The user message payload
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/BasicMessagePayload'
 responses:
 '200':
 description: The message was processed successfully
 content:
 application/json:
 schema:
 type: array
 items:
 anyOf:
 \- $ref: '#/components/schemas/BotTextMessage'
 \- $ref: '#/components/schemas/BotImageMessage'
 \- $ref: '#/components/schemas/BotButtonsMessage'
 \- $ref: '#/components/schemas/BotAttachmentMessage'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '406':
 $ref: '#/components/responses/406InvalidHeader'
 '500':
 $ref: '#/components/responses/500ServerError'
 /webhooks/{custom\_channel}/webhook:
 post:
 security:
 \- TokenAuth: \[\]
 \- JWT: \[\]
 operationId: postMessageCustomChannel
 tags:
 \- Channel Webhooks
 summary: Post user message from a custom channel
 description: >-
 Post a message from the user and forward it to the assistant. Return the
 message of the assistant to the user. This is from a custom channel.
 parameters:
 \- $ref: '#/components/parameters/custom\_channel'
 requestBody:
 description: The user message payload
 required: true
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/MessagePayload'
 responses:
 '200':
 description: The message was processed successfully
 content:
 application/json:
 schema:
 type: object
 properties:
 messages:
 type: array
 items:
 $ref: '#/components/schemas/BotMessage'
 metadata:
 type: object
 description: Additional metadata
 conversation\_id:
 type: string
 description: The conversation ID
 tracker\_state:
 $ref: '#/components/schemas/Tracker'
 '401':
 $ref: '#/components/responses/401NotAuthenticated'
 '403':
 $ref: '#/components/responses/403NotAuthorized'
 '406':
 $ref: '#/components/responses/406InvalidHeader'
 '500':
 $ref: '#/components/responses/500ServerError'
components:
 securitySchemes:
 TokenAuth:
 type: apiKey
 in: query
 name: token
 description: >
 A plaintext token to secure your server, specified at startup in the
 argument \`--auth-token thisismysecret\`
 JWT:
 type: http
 scheme: bearer
 bearerFormat: JWT
 description: >
 A JWT token that is signed using the JWT secret specified at startup in
 the argument \`--jwt-secret thisismysecret\`,

using the \`HS256\` algorithm.

The token's payload must contain an object under the \`user\` key,

which in turn must contain the \`username\` and \`role\` attributes.

The following is an example payload for a JWT token:

\`\`\`json

{
 "user": {
 "username": "",
 "role": "user"
 }
 }

\`\`\`

If the \`role\` is \`admin\`, all endpoints are accessible.

If the \`role\` is \`user\`, endpoints with a \`sender\_id\` parameter are only
 accessible

if the \`sender\_id\` matches the payload's \`username\` property.

For the user trackers endpoint (\`GET /users/{user\_id}/trackers\`), you
 should use \`user\_id\` instead of \`username\` in the payload.

In this case, the path \`user\_id\` parameter is matched against the
 payload's \`username\` property. For example:

\`\`\`json

{
 "user": {
 "username": "",
 "role": "user"
 }
 }

\`\`\`
 parameters:
 conversation\_id:
 in: path
 name: conversation\_id
 description: Id of the conversation
 example: default
 schema:
 type: string
 required: true
 user\_id:
 in: path
 name: user\_id
 description: Unique identifier of the user to retrieve conversations for
 example: user-123
 schema:
 type: string
 required: true
 limit:
 in: query
 name: limit
 description: Maximum number of conversations to return (for pagination)
 example: 50
 schema:
 type: integer
 required: false
 offset:
 in: query
 name: offset
 description: Number of conversations to skip (for pagination)
 example: 5
 schema:
 type: integer
 required: false
 batch\_size:
 in: query
 name: batch\_size
 description: Batch size to use for training.
 example: 5
 schema:
 type: number
 default: 5
 required: false
 epochs:
 in: query
 name: epochs
 description: Number of epochs to train.
 example: 30
 schema:
 type: number
 default: 30
 required: false
 e2e:
 in: query
 name: e2e
 description: Perform an end-to-end evaluation on the posted stories.
 example: false
 schema:
 type: boolean
 default: false
 required: false
 all\_sessions:
 in: query
 name: all\_sessions
 description: >-
 Whether to fetch all sessions in a conversation, or only the latest
 session

\\* \`true\` - fetch all conversation sessions.

\\* \`false\` - \[default\] fetch only the latest conversation session.
 example: false
 schema:
 type: boolean
 default: false
 required: false
 model:
 in: query
 name: model
 description: >-
 Model that should be used for evaluation. If the parameter is set, the
 model will be fetched with the currently loaded configuration setup.
 However, the currently loaded model will not be updated. The state of
 the server will not change. If the parameter is not set, the currently
 loaded model will be used for the evaluation.
 example: rasa-model.tar.gz
 schema:
 type: string
 required: false
 include\_events:
 in: query
 name: include\_events
 description: >-
 Specify which events of the tracker the response should contain.

\\* \`ALL\` - every logged event.

\\* \`APPLIED\` - only events that contribute to the trackers state. This
 excludes reverted utterances and actions that got undone.

\\* \`AFTER\_RESTART\` - all events since the last \`restarted\` event.
 This includes utterances that got reverted and actions that got undone.

\\* \`NONE\` - no events.
 example: AFTER\_RESTART
 schema:
 type: string
 default: AFTER\_RESTART
 enum:
 \- ALL
 \- APPLIED
 \- AFTER\_RESTART
 \- NONE
 emulation\_mode:
 in: query
 name: emulation\_mode
 description: >-
 Specify the emulation mode to use. Emulation mode transforms the
 response JSON to the format expected by the service specified as the
 emulation\_mode. Requests must still be sent in the regular Rasa format.
 example: LUIS
 schema:
 type: string
 enum:
 \- WIT
 \- LUIS
 \- DIALOGFLOW
 until:
 in: query
 name: until
 description: >-
 All events previous to the passed timestamp will be replayed. Events
 that occur exactly at the target time will be included.
 example: 1559744410
 schema:
 type: number
 default: None
 required: false
 output\_channel:
 in: query
 name: output\_channel
 description: >-
 The bot's utterances will be forwarded to this channel. It uses the
 credentials listed in \`credentials.yml\` to connect. In case the channel
 does not support this, the utterances will be returned in the response
 body. Use \`latest\` to try to send the messages to the latest channel the
 user used. Currently supported channels are listed in the permitted
 values for the parameter.
 example: slack
 schema:
 type: string
 enum:
 \- latest
 \- slack
 \- callback
 \- facebook
 \- rocketchat
 \- telegram
 \- twilio
 \- webexteams
 \- socketio
 callback\_url:
 in: query
 name: callback\_url
 description: >-
 If specified the call will return immediately with an empty response and
 status code 204. The actual result or any errors will be sent to the
 given callback URL as the body of a post request.
 example: https://example.com/rasa\_evaluations
 schema:
 type: string
 default: None
 required: false
 rest\_channel:
 in: path
 name: rest\_channel
 description: >-
 The REST channel used for custom integrations. They provide a URL where
 you can post messages and either receive response messages directly, or
 asynchronously via a webhook.
 required: true
 schema:
 type: string
 enum:
 \- rest
 \- callback
 custom\_channel:
 in: path
 name: custom\_channel
 description: >-
 The custom channel connector used for integration. They provide a URL
 where you can post and receive messages.
 required: true
 schema:
 type: string
 example: my\_custom\_channel
 responses:
 200Tracker:
 description: Success
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Tracker'
 200Story:
 description: Success
 content:
 text/yml:
 example: \|-
 \- story: story\_00055028
 steps:
 \- user: \|
 hello
 intent: greet
 \- action: utter\_ask\_howcanhelp
 \- user: \|
 I'm looking for a \[moderately priced\]{"entity": "price", "value": "moderate"} \[Indian\]{"entity": "cuisine"} restaurant for \[two\]({"entity": "people"}) people
 intent: inform
 \- action: utter\_on\_it
 \- action: utter\_ask\_location
 204Callback:
 description: >-
 The incoming request specified a \`callback\_url\` and hence the request
 will return immediately with an empty response. The actual response will
 be sent to the provided \`callback\_url\` via POST request.
 400BadRequest:
 description: Bad Request
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Error'
 example:
 version: 1.0.0
 status: failure
 reason: BadRequest
 code: 400
 401NotAuthenticated:
 description: User is not authenticated.
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Error'
 example:
 version: 1.0.0
 status: failure
 reason: NotAuthenticated
 message: User is not authenticated to access resource.
 code: 401
 403NotAuthorized:
 description: User has insufficient permission.
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Error'
 example:
 version: 1.0.0
 status: failure
 reason: NotAuthorized
 message: User has insufficient permission to access resource.
 code: 403
 406InvalidHeader:
 description: Invalid header provided.
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Error'
 example:
 version: 1.0.0
 status: failure
 reason: InvalidHeader
 message: Invalid header was provided with the request.
 code: 406
 409Conflict:
 description: The request conflicts with the currently loaded model.
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Error'
 example:
 version: 1.0.0
 status: failure
 reason: Conflict
 message: The request conflicts with the currently loaded model.
 code: 409
 500ServerError:
 description: An unexpected error occurred.
 content:
 application/json:
 schema:
 $ref: '#/components/schemas/Error'
 example:
 version: 1.0.0
 status: ServerError
 message: An unexpected error occurred.
 code: 500
 schemas:
 ModelRequest:
 type: object
 properties:
 model\_file:
 type: string
 description: Path to model file
 example: /absolute-path-to-models-directory/models/20190512.tar.gz
 model\_server:
 $ref: '#/components/schemas/EndpointConfig'
 remote\_storage:
 description: Name of remote storage system
 type: string
 example: aws
 enum:
 \- aws
 \- gcs
 \- azure
 ActionRequest:
 type: object
 properties:
 name:
 description: Name of the action to be executed.
 type: string
 example: utter\_greet
 policy:
 description: Name of the policy that predicted the action.
 type: string
 nullable: true
 confidence:
 description: Confidence of the prediction.
 type: number
 nullable: true
 example: 0.987232
 required:
 \- name
 IntentTriggerRequest:
 type: object
 properties:
 name:
 description: Name of the intent to be executed.
 type: string
 example: greet
 entities:
 description: Entities to be passed on.
 type: object
 nullable: true
 example:
 temperature: high
 required:
 \- name
 Message:
 type: object
 properties:
 text:
 type: string
 description: Message text
 example: Hello!
 sender:
 type: string
 description: Origin of the message - who sent it
 example: user
 enum:
 \- user
 parse\_data:
 $ref: '#/components/schemas/ParseResult'
 required:
 \- text
 \- sender
 Entity:
 type: object
 description: Entities within a message
 properties:
 start:
 type: integer
 description: Char offset of the start
 end:
 type: integer
 description: Char offset of the end
 value:
 type: string
 description: Found value for entity
 entity:
 type: string
 description: Type of the entity
 confidence:
 type: number
 required:
 \- start
 \- end
 \- value
 \- entity
 Intent:
 type: object
 description: Intent of the text
 properties:
 confidence:
 type: number
 description: Confidence of the intent
 example: 0.6323
 name:
 type: string
 description: Intent name
 example: greet
 required:
 \- confidence
 \- name
 Command:
 anyOf:
 \- $ref: '#/components/schemas/StartFlowCommand'
 \- $ref: '#/components/schemas/CancelFlowCommand'
 \- $ref: '#/components/schemas/ClarifyCommand'
 \- $ref: '#/components/schemas/SetSlotCommand'
 \- $ref: '#/components/schemas/ChitChatAnswerCommand'
 \- $ref: '#/components/schemas/KnowledgeAnswerCommand'
 \- $ref: '#/components/schemas/HumanHandoffCommand'
 \- $ref: '#/components/schemas/SkipQuestionCommand'
 BasicCommand:
 type: object
 properties:
 command:
 type: string
 description: Command to be executed
 example: very basic
 StartFlowCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- start flow
 example: start flow
 flow:
 type: string
 description: Name of the flow to be started
 example: transfer\_money
 CancelFlowCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- cancel flow
 example: cancel flow
 ClarifyCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- clarify
 example: clarify
 options:
 type: array
 items:
 type: string
 SetSlotCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- set slot
 example: set slot
 name:
 type: string
 description: Name of the slot to be set
 example: name
 value:
 type: any
 description: Value of the slot to be set
 example: John Doe
 ChitChatAnswerCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- chitchat
 example: chitchat
 KnowledgeAnswerCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- knowledge
 example: knowledge
 HumanHandoffCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- human handoff
 example: human handoff
 SkipQuestionCommand:
 allOf:
 \- $ref: '#/components/schemas/BasicCommand'
 \- type: object
 properties:
 command:
 enum:
 \- skip question
 example: skip question
 ParseResult:
 type: object
 properties:
 entities:
 type: array
 description: Parsed entities
 items:
 $ref: '#/components/schemas/Entity'
 intent:
 $ref: '#/components/schemas/Intent'
 intent\_ranking:
 type: array
 description: Scores of all intents
 items:
 $ref: '#/components/schemas/Intent'
 text:
 type: string
 description: Text of the message
 example: Hello!
 message\_id:
 type: string
 description: ID of the message
 example: b2831e73-1407-4ba0-a861-0f30a42a2a5a
 metadata:
 type: object
 properties: {}
 commands:
 type: array
 description: Commands to be executed
 items:
 $ref: '#/components/schemas/Command'
 flows\_from\_semantic\_search:
 type: array
 items:
 type: array
 items:
 \- type: string
 example: transfer\_money
 \- type: number
 example: 0.9035494923591614
 flows\_in\_prompt:
 type: array
 items:
 type: string
 example: transfer\_money
 description: >-
 NLU parser information. If set, message will not be passed through NLU,
 but instead this parsing information will be used.
 required:
 \- text
 ModelParseResult:
 type: object
 properties:
 entities:
 type: array
 description: Parsed entities
 items:
 $ref: '#/components/schemas/Entity'
 intent:
 $ref: '#/components/schemas/Intent'
 text:
 type: string
 description: Text of the message
 example: Hello!
 commands:
 type: array
 description: Commands to be executed
 items:
 $ref: '#/components/schemas/Command'
 description: >-
 NLU parser information. If set, message will not be passed through NLU,
 but instead this parsing information will be used.
 required:
 \- text
 LatestAction:
 type: object
 properties:
 action\_name:
 type: string
 description: latest action name
 action\_text:
 type: string
 description: text of last bot utterance
 description: Latest bot action.
 Event:
 anyOf:
 \- $ref: '#/components/schemas/UserEvent'
 \- $ref: '#/components/schemas/BotEvent'
 \- $ref: '#/components/schemas/SessionStartedEvent'
 \- $ref: '#/components/schemas/ActionEvent'
 \- $ref: '#/components/schemas/SlotEvent'
 \- $ref: '#/components/schemas/ResetSlotsEvent'
 \- $ref: '#/components/schemas/RestartEvent'
 \- $ref: '#/components/schemas/ReminderEvent'
 \- $ref: '#/components/schemas/CancelReminderEvent'
 \- $ref: '#/components/schemas/PauseEvent'
 \- $ref: '#/components/schemas/ResumeEvent'
 \- $ref: '#/components/schemas/FollowupEvent'
 \- $ref: '#/components/schemas/ExportEvent'
 \- $ref: '#/components/schemas/UndoEvent'
 \- $ref: '#/components/schemas/RewindEvent'
 \- $ref: '#/components/schemas/AgentEvent'
 \- $ref: '#/components/schemas/EntitiesAddedEvent'
 \- $ref: '#/components/schemas/UserFeaturizationEvent'
 \- $ref: '#/components/schemas/ActionExecutionRejectedEvent'
 \- $ref: '#/components/schemas/FormValidationEvent'
 \- $ref: '#/components/schemas/LoopInterruptedEvent'
 \- $ref: '#/components/schemas/FormEvent'
 \- $ref: '#/components/schemas/ActiveLoopEvent'
 \- $ref: '#/components/schemas/StackEvent'
 \- $ref: '#/components/schemas/FlowStartedEvent'
 \- $ref: '#/components/schemas/FlowCompletedEvent'
 BasicEvent:
 type: object
 properties:
 event:
 type: string
 description: Event name
 example: slot
 timestamp:
 type: number
 description: Unix timestamp (float) of when the event was applied.
 example: 1774447464.622012
 metadata:
 type: object
 description: >-
 Arbitrary metadata attached to the event by the channel or model,
 e.g. session\_id, model\_id, assistant\_id, model\_name.
 additionalProperties: true
 example:
 session\_id: eed351b9-a996-4bb8-83ea-1d18e7cd4905
 model\_id: 80687713793f4d07957e8e51f73df866
 assistant\_id: my-assistant
 required:
 \- event
 UserEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 description: Event for incoming user message.
 properties:
 event:
 enum:
 \- user
 example: user
 text:
 type: string
 nullable: true
 description: Text of user message.
 input\_channel:
 type: string
 nullable: true
 message\_id:
 type: string
 nullable: true
 parse\_data:
 $ref: '#/components/schemas/ParseResult'
 anonymized\_at:
 type: string
 nullable: true
 description: >-
 ISO 8601 timestamp of when PII in this event was anonymized, or
 \`null\` if the event has not been anonymized.
 ActionEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- action
 example: action
 policy:
 type: string
 nullable: true
 confidence:
 type: number
 nullable: true
 name:
 type: string
 nullable: true
 hide\_rule\_turn:
 type: boolean
 action\_text:
 type: string
 nullable: true
 SlotEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- slot
 example: slot
 name:
 type: string
 value: {}
 filled\_by:
 type: string
 nullable: true
 description: >-
 Identifier of the extractor that filled the slot (e.g. \`LLM\`,
 \`CommandPayloadReader\`), or \`null\` if not set by an extractor.
 example: LLM
 anonymized\_at:
 type: string
 nullable: true
 description: >-
 ISO 8601 timestamp of when PII in this event was anonymized, or
 \`null\` if the event has not been anonymized.
 required:
 \- name
 \- value
 EntitiesAddedEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- entities
 example: entities
 entities:
 type: array
 items:
 type: object
 properties:
 start:
 type: integer
 end:
 type: integer
 entity:
 type: string
 confidence:
 type: number
 extractor:
 type: string
 nullable: true
 value: {}
 role:
 type: string
 nullable: true
 group:
 type: string
 nullable: true
 required:
 \- entity
 \- value
 required:
 \- entities
 UserFeaturizationEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- user\_featurization
 example: user\_featurization
 use\_text\_for\_featurization:
 type: boolean
 description: Whether the user message text was used for featurization.
 example: false
 CancelReminderEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- cancel\_reminder
 example: cancel\_reminder
 ReminderEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- reminder
 example: reminder
 ActionExecutionRejectedEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- action\_execution\_rejected
 example: action\_execution\_rejected
 FormValidationEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- form\_validation
 example: form\_validation
 LoopInterruptedEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- loop\_interrupted
 example: loop\_interrupted
 FormEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- form
 example: form
 ActiveLoopEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- active\_loop
 example: active\_loop
 StackEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 description: >-
 CALM dialogue stack update event. Contains a JSON Patch document
 describing the change applied to the conversation stack.
 properties:
 event:
 enum:
 \- stack
 example: stack
 update:
 type: string
 description: >-
 JSON Patch (RFC 6902) string describing the stack mutation, e.g.
 add/replace/remove operations on stack frames.
 example: >-
 \[{"op": "add", "path": "/0", "value": {"frame\_id": "Z9X2EAS9",\
 "flow\_id": "tax\_issue", "step\_id": "START", "frame\_type":\
 "regular", "type": "flow"}}\]
 required:
 \- update
 FlowStartedEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 description: Emitted when a CALM flow begins execution.
 properties:
 event:
 enum:
 \- flow\_started
 example: flow\_started
 flow\_id:
 type: string
 description: ID of the flow that started.
 example: tax\_issue
 required:
 \- flow\_id
 FlowCompletedEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 description: Emitted when a CALM flow finishes execution.
 properties:
 event:
 enum:
 \- flow\_completed
 example: flow\_completed
 flow\_id:
 type: string
 description: ID of the flow that completed.
 example: tax\_issue
 step\_id:
 type: string
 description: ID of the last step executed before the flow completed.
 example: tax\_issue\_4\_utter\_submit\_issue
 required:
 \- flow\_id
 ResetSlotsEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- reset\_slots
 example: reset\_slots
 ResumeEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- resume
 example: resume
 PauseEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- pause
 example: pause
 FollowupEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- followup
 example: followup
 ExportEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- export
 example: export
 RestartEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- restart
 example: restart
 UndoEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- undo
 example: undo
 RewindEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- rewind
 example: rewind
 BotEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 description: Event for an outgoing bot message.
 properties:
 event:
 enum:
 \- bot
 example: bot
 text:
 type: string
 nullable: true
 description: Text of the bot response.
 data:
 type: object
 nullable: true
 description: Rich response payload (buttons, images, attachments, etc.).
 properties:
 image:
 type: string
 nullable: true
 buttons:
 type: array
 nullable: true
 items:
 type: object
 attachment:
 type: string
 nullable: true
 elements:
 type: array
 nullable: true
 items:
 type: object
 quick\_replies:
 type: array
 nullable: true
 items:
 type: object
 custom:
 nullable: true
 anonymized\_at:
 type: string
 nullable: true
 description: >-
 ISO 8601 timestamp of when PII in this event was anonymized, or
 \`null\` if the event has not been anonymized.
 SessionStartedEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- session\_started
 example: session\_started
 AgentEvent:
 allOf:
 \- $ref: '#/components/schemas/BasicEvent'
 \- type: object
 properties:
 event:
 enum:
 \- agent
 example: agent
 EventList:
 type: array
 items:
 $ref: '#/components/schemas/Event'
 Domain:
 type: object
 description: The bot's domain.
 properties:
 config:
 type: object
 description: Addional option
 properties:
 store\_entities\_as\_slots:
 type: boolean
 description: Store all entites as slot when found
 example: false
 intents:
 type: array
 description: All intent names and properties
 items:
 $ref: '#/components/schemas/IntentDescription'
 entities:
 type: array
 description: All entity names
 items:
 type: string
 example:
 \- person
 \- location
 slots:
 description: Slot names and configuration
 type: object
 additionalProperties:
 $ref: '#/components/schemas/SlotDescription'
 responses:
 description: Bot response templates
 type: object
 additionalProperties:
 $ref: '#/components/schemas/TemplateDescription'
 actions:
 description: Available action names
 type: array
 items:
 type: string
 example:
 \- action\_greet
 \- action\_goodbye
 \- action\_listen
 BotMessage:
 type: object
 properties:
 recipient\_id:
 type: string
 description: Id of the message receiver
 text:
 type: string
 description: Message
 image:
 type: string
 description: Image URL
 buttons:
 type: array
 description: Quick reply buttons
 items:
 type: object
 properties:
 title:
 type: string
 description: Button caption
 payload:
 type: string
 description: Payload to be sent if button is clicked
 attachement:
 type: array
 description: Additional information
 items:
 type: object
 properties:
 title:
 type: string
 description: Attachement caption
 payload:
 type: string
 description: Attachement payload
 FlowList:
 type: array
 items:
 $ref: '#/components/schemas/Flow'
 Flow:
 type: object
 properties:
 id:
 type: string
 description: ID of the flow
 example: check\_balance
 name:
 type: string
 description: Name of the flow
 example: check balance
 description:
 type: string
 description: Description of the flow
 example: check the user's account balance
 steps:
 type: array
 description: Steps of the flow
 items:
 type: object
 UserTrackersResponse:
 type: object
 description: Paginated list of conversation trackers for a user.
 properties:
 conversations:
 type: array
 description: List of serialized conversation trackers for the user
 items:
 $ref: '#/components/schemas/SerializedTracker'
 limit:
 type: integer
 description: Maximum number of conversations returned
 example: 50
 offset:
 type: integer
 description: Number of conversations skipped for pagination
 example: 5
 required:
 \- conversations
 \- limit
 \- offset
 SerializedTracker:
 type: object
 description: >-
 Serialized conversation tracker as returned by \`GET
 /users/{user\_id}/trackers\`. Contains the raw event list read directly
 from storage — no computed state fields (slots, latest\_message, stack,
 etc.) are included.
 properties:
 sender\_id:
 type: string
 description: Conversation ID (sender\_id)
 example: e6a3b3158a8444dd998aab17b9e1af3c
 user\_id:
 type: string
 nullable: true
 description: >-
 End-user identifier associated with this conversation. Omitted from
 serialized output when \`null\`.
 example: load-test-user-C
 conversation\_started\_timestamp:
 type: number
 description: Unix timestamp (float) when the conversation was first started.
 example: 1774447463.67712
 current\_session\_id:
 type: string
 nullable: true
 description: >-
 Session ID derived from the metadata of the last stored event.
 \`null\` when the last event is \`ConversationInactive\`.
 example: eed351b9-a996-4bb8-83ea-1d18e7cd4905
 events:
 type: array
 description: Ordered list of raw event dicts as stored in the tracker store.
 items:
 $ref: '#/components/schemas/Event'
 required:
 \- sender\_id
 \- events
 \- conversation\_started\_timestamp
 Tracker:
 type: object
 description: Conversation tracker which stores the conversation state.
 properties:
 sender\_id:
 type: string
 description: ID of the conversation
 example: default
 user\_id:
 type: string
 nullable: true
 description: >-
 Optional identifier of the end user associated with this
 conversation. Omitted from serialized output when \`null\`.
 example: usr\_a1b2c3d4e5f6
 current\_session\_id:
 type: string
 nullable: true
 description: >-
 Session ID derived from the metadata of the last stored event.
 \`null\` when the last event is \`ConversationInactive\`, indicating no
 active session.
 example: 4b3c1e2a-91f0-4d8e-b123-abc123def456
 slots:
 type: array
 description: Slot values
 items:
 $ref: '#/components/schemas/Slot'
 latest\_message:
 $ref: '#/components/schemas/ParseResult'
 latest\_event\_time:
 type: number
 description: Most recent event time
 example: 1537645578.314389
 followup\_action:
 type: string
 description: Deterministic scheduled next action
 paused:
 type: boolean
 description: Bot is paused
 example: false
 stack:
 type: array
 nullable: true
 items:
 type: object
 properties: {}
 example:
 frame\_id: 8UJPHH5C
 flow\_id: transfer\_money
 step\_id: START
 frame\_type: regular
 type: flow
 events:
 description: Event history
 $ref: '#/components/schemas/EventList'
 latest\_input\_channel:
 type: string
 description: Communication channel
 example: rest
 latest\_action\_name:
 type: string
 description: Name of last bot action
 example: action\_listen
 latest\_action:
 $ref: '#/components/schemas/LatestAction'
 active\_loop:
 type: object
 description: Name of the active loop
 properties:
 name:
 type: string
 description: Name of the active loop
 example: restaurant\_form
 Error:
 type: object
 properties:
 version:
 type: string
 description: Rasa version
 status:
 type: string
 enum:
 \- failure
 description: Status of the requested action
 message:
 type: string
 description: Error message
 reason:
 type: string
 description: Error category
 details:
 type: object
 description: Additional error information
 help:
 type: string
 description: Optional URL to additonal material
 code:
 type: number
 description: HTTP status code
 PredictResult:
 type: object
 properties:
 scores:
 type: array
 description: Prediction results
 items:
 type: object
 properties:
 action:
 type: string
 description: Action name
 example: utter\_greet
 score:
 type: number
 description: Assigned score
 example: 1
 policy:
 type: string
 description: Policy which predicted the most likely action
 example: policy\_2\_TEDPolicy
 confidence:
 type: number
 description: Confidence of the prediction
 example: 0.057
 tracker:
 $ref: '#/components/schemas/Tracker'
 EndpointConfig:
 type: object
 properties:
 url:
 type: string
 description: URL pointing to model
 params:
 type: object
 description: Parameters of request
 headers:
 type: object
 description: HTTP headers
 basic\_auth:
 description: Basic authentification data
 type: object
 token:
 description: Token
 type: string
 token\_name:
 description: Name of token
 type: string
 wait\_time\_between\_pulls:
 type: integer
 description: Time to wait between pulls from model server
 YAMLTrainingRequest:
 type: object
 properties:
 pipeline:
 description: Pipeline list
 type: array
 policies:
 description: Policies list
 type: array
 entities:
 description: Entity list
 type: array
 slots:
 description: Slots list
 type: array
 actions:
 description: Action list
 type: array
 forms:
 description: Forms list
 type: array
 e2e\_actions:
 description: E2E Action list
 type: array
 responses:
 description: Bot response templates
 type: object
 additionalProperties:
 $ref: '#/components/schemas/TemplateDescription'
 session\_config:
 description: Session configuration options
 type: object
 properties:
 session\_expiration\_time:
 type: integer
 carry\_over\_slots\_to\_new\_session:
 type: boolean
 nlu:
 description: Rasa NLU data, array of intents
 type: array
 rules:
 description: Rule list
 type: array
 stories:
 description: Rasa Core stories in YAML format
 type: array
 flows:
 description: Rasa Pro flows in YAML format
 type: object
 force:
 type: boolean
 description: Force a model training even if the data has not changed
 example: false
 deprecated: true
 save\_to\_default\_model\_directory:
 type: boolean
 description: >-
 If \`true\` (default) the trained model will be saved in the default
 model directory, if \`false\` it will be saved in a temporary
 directory
 deprecated: true
 RetrievalIntentsTrainingData:
 type: string
 description: Rasa response texts for retrieval intents in YAML format
 example: >-
 chitchat/ask\_name: - text: my name is Sara, Rasa's documentation bot!
 chitchat/ask\_weather: - text: it's always sunny where I live
 StoriesTrainingData:
 type: string
 description: Rasa Core stories in YAML format
 example: \|-
 \- story: happy path
 steps:
 \- intent: greet
 \- action: utter\_greet
 \- intent: mood\_great
 \- action: utter\_happy

\- story: sad path 1
 steps:
 \- intent: greet
 \- action: utter\_greet
 \- intent: mood\_unhappy
 \- action: utter\_cheer\_up
 \- action: utter\_did\_that\_help
 \- intent: affirm
 \- action: utter\_happy

\- story: sad path 2
 steps:
 \- intent: greet
 \- action: utter\_greet
 \- intent: mood\_unhappy
 \- action: utter\_cheer\_up
 \- action: utter\_did\_that\_help
 \- intent: deny
 \- action: utter\_goodbye

\- story: say goodbye
 steps:
 \- intent: goodbye
 \- action: utter\_goodbye
 TrainingResult:
 type: string
 format: binary
 NLUEvaluationResult:
 type: object
 properties:
 intent\_evaluation:
 description: Rasa NLU intent evaluation
 $ref: '#/components/schemas/EvaluationItem'
 response\_selection\_evaluation:
 description: Evaluation for the retrieval intents
 $ref: '#/components/schemas/EvaluationItem'
 entity\_evaluation:
 description: Rasa NLU entity evaluation.
 type: object
 additionalProperties:
 type: object
 description: Evaluation for a specific extractor
 $ref: '#/components/schemas/EvaluationItem'
 EvaluationItem:
 type: object
 description: Evaluation Result
 properties:
 report:
 $ref: '#/components/schemas/EvaluationReport'
 accuracy:
 type: number
 example: 0.19047619047619047
 f1\_score:
 type: number
 example: 0.06095238095238095
 precision:
 type: number
 example: 0.036281179138321996
 predictions:
 type: array
 description: The predictions for each item in the test set
 items:
 type: object
 properties:
 intent:
 type: string
 example: greet
 predicted:
 type: string
 example: greet
 text:
 type: string
 example: hey
 confidence:
 type: number
 example: 0.9973567
 errors:
 description: The errors which were made during the testing.
 type: array
 items:
 oneOf:
 \- $ref: '#/components/schemas/IntentTestError'
 \- $ref: '#/components/schemas/EntityTestError'
 \- $ref: '#/components/schemas/ResponseSelectorTestError'
 IntentTestError:
 description: Intent prediction errors which was made during testing
 type: object
 properties:
 text:
 type: string
 description: Test message
 example: are you alright?
 intent\_response\_key\_target:
 description: Expected intent
 type: string
 intent\_response\_key\_prediction:
 description: Predicted intent
 $ref: '#/components/schemas/Intent'
 EntityTestError:
 description: Entity prediction errors which was made during testing
 type: object
 properties:
 text:
 type: string
 description: Test message
 example: what is the weather in zurich?
 entities:
 description: Expected entities
 type: array
 items:
 $ref: '#/components/schemas/Entity'
 predicted\_entities:
 description: Predicted entities
 type: array
 items:
 $ref: '#/components/schemas/Entity'
 ResponseSelectorTestError:
 description: Error during response prediction which was made during testing
 type: object
 properties:
 text:
 type: string
 description: Test message
 example: are you alright?
 intent\_response\_key\_target:
 description: Expected retrieval intent
 type: string
 intent\_response\_key\_prediction:
 description: Predicted retrieval intent
 $ref: '#/components/schemas/Intent'
 EvaluationReport:
 type: object
 description: >-
 Sklearn classification report, see
 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification\_report.html
 example:
 greet:
 precision: 0.123
 recall: 0.456
 f1-score: 0.12
 support: 100
 confused\_with:
 chitchat: 3
 nlu\_fallback: 5
 micro avg:
 precision: 0.123
 recall: 0.456
 f1-score: 0.12
 support: 100
 macro avg:
 precision: 0.123
 recall: 0.456
 f1-score: 0.12
 support: 100
 weightedq avg:
 precision: 0.123
 recall: 0.456
 f1-score: 0.12
 support: 100
 EvaluationStoriesResult:
 type: object
 properties:
 actions:
 type: array
 items:
 type: object
 properties:
 action:
 type: string
 description: Name of the actual action
 example: utter\_ask\_howcanhelp
 predicted:
 type: string
 description: Name of the predicted action
 example: utter\_ask\_howcanhelp
 policy:
 type: string
 description: Machine-learning policy used in the prediction
 example: policy\_0\_MemoizationPolicy
 confidence:
 type: string
 description: Confidence score of the prediction
 example: 1
 description: >-
 Accuracy of the classification,
 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy\_score.html
 is\_end\_to\_end\_evaluation:
 type: boolean
 description: True if evaluation is end-to-end, false otherwise
 example: true
 precision:
 type: number
 description: >-
 Precision of the classification, see
 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision\_score.html
 example: 1
 f1:
 type: number
 description: >-
 F1 score of the classification,
 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision\_score.html
 example: 0.9333333333333333
 accuracy:
 type: number
 description: >-
 Accuracy of the classification,
 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy\_score.html
 example: 0.9
 in\_training\_data\_fraction:
 type: number
 description: >-
 Fraction of stories that are present in the training data of the
 model loaded at evaluation time.
 example: 0.8571428571428571
 report:
 type: object
 description: >-
 Sklearn classification reported extended with information about
 conversation accuracy.
 additionalProperties:
 type: object
 properties:
 intent\_name:
 type: string
 classification\_report:
 $ref: '#/components/schemas/EvaluationReport'
 properties:
 conversation\_accuracy:
 $ref: '#/components/schemas/ConversationAccuracyReport'
 ConversationAccuracyReport:
 type: object
 properties:
 accuracy:
 type: number
 example: 0.19047619047619047
 correct:
 type: number
 example: 18
 with\_warnings:
 type: number
 example: 1
 total:
 type: number
 example: 20
 Slot:
 type: object
 additionalProperties:
 $ref: '#/components/schemas/SlotValue'
 example:
 slot\_name: slot\_value
 SlotValue:
 oneOf:
 \- type: string
 \- type: array
 items:
 type: string
 SlotDescription:
 type: object
 properties:
 auto\_fill:
 type: boolean
 initial\_value:
 type: string
 nullable: true
 type:
 type: string
 values:
 type: array
 items:
 type: string
 required:
 \- type
 \- auto\_fill
 TemplateDescription:
 type: object
 properties:
 text:
 type: string
 description: Template text
 required:
 \- text
 IntentDescription:
 type: object
 additionalProperties:
 type: object
 properties:
 use\_entities:
 type: boolean
 RasaNLUData:
 type: object
 properties:
 common\_examples:
 type: object
 items:
 type: array
 items:
 $ref: '#/components/schemas/CommonExample'
 example:
 rasa\_nlu\_data:
 common\_examples:
 \- text: hey
 intent: greet
 entities: \[\]
 \- text: dear sir
 intent: greet
 entities: \[\]
 \- text: i'm looking for a place to eat
 intent: restaurant\_search
 entities: \[\]
 \- text: i'm looking for a place in the north of town
 intent: restaurant\_search
 entities:
 \- start: 31
 end: 36
 value: north
 entity: location
 \- text: show me a mexican place in the centre
 intent: restaurant\_search
 entities:
 \- start: 31
 end: 37
 value: centre
 entity: location
 \- start: 10
 end: 17
 value: mexican
 entity: cuisine
 CommonExample:
 type: object
 properties:
 entities:
 description: Expected entities
 type: array
 items:
 $ref: '#/components/schemas/Entity'
 intent:
 type: string
 description: Intent name
 text:
 type: string
 description: Text of the message
 example: Hello!
 BasicMessagePayload:
 type: object
 properties:
 sender:
 type: string
 description: The sender ID
 example: default
 message:
 type: string
 description: The message text
 example: Hello!
 MessagePayload:
 type: object
 properties:
 sender:
 type: string
 description: The sender ID
 message:
 type: string
 description: The message text
 stream:
 type: boolean
 description: Whether to use streaming response
 input\_channel:
 type: string
 description: Input channel name
 metadata:
 type: object
 description: Additional metadata
 BotTextMessage:
 type: object
 properties:
 recipient\_id:
 type: string
 description: Id of the message receiver
 example: default
 text:
 type: string
 description: Message
 example: Hello!
 BotImageMessage:
 type: object
 properties:
 recipient\_id:
 type: string
 description: Id of the message receiver
 example: default
 image:
 type: string
 description: Image URL
 example: https://example.com/image.jpg
 BotButtonsMessage:
 type: object
 properties:
 recipient\_id:
 type: string
 description: Id of the message receiver
 example: default
 buttons:
 type: array
 description: Quick reply buttons
 items:
 type: object
 properties:
 title:
 type: string
 description: Button caption
 payload:
 type: string
 description: Payload to be sent if button is clicked
 example:
 \- title: 'Yes'
 payload: 'yes'
 \- title: 'No'
 payload: 'no'
 BotAttachmentMessage:
 type: object
 properties:
 recipient\_id:
 type: string
 description: Id of the message receiver
 example: default
 attachement:
 type: array
 description: Additional information
 items:
 type: object
 properties:
 title:
 type: string
 description: Attachment caption
 example: Attachment Title
 payload:
 type: string
 description: Attachment payload
 example: Attachment Payload
 FlowCapability:
 type: object
 description: Capability metadata for a single flow.
 properties:
 id:
 type: string
 description: Unique identifier of the flow.
 example: transfer\_money
 name:
 type: string
 description: >-
 Human-readable name of the flow. Uses the flow's custom name if
 defined, otherwise falls back to the flow id.
 example: Transfer Money
 description:
 type: string
 description: Description of what the flow does.
 example: Transfer money to another account.
 nullable: true
 guard\_condition:
 type: string
 description: >-
 The guard condition expression that must be satisfied for the flow
 to be startable, if any.
 example: has\_verified\_account
 nullable: true
 startable:
 type: boolean
 description: >-
 Whether the flow can currently be started given the active
 conversation state and guard evaluation results.
 example: true
 always\_include\_in\_prompt:
 type: boolean
 description: >-
 Whether the flow should always be included in the LLM prompt,
 regardless of its startability.
 example: false
 trigger\_intents:
 type: array
 description: Sorted list of NLU intents that can trigger this flow.
 items:
 type: string
 example:
 \- transfer\_money
 required:
 \- id
 \- name
 \- startable
 \- always\_include\_in\_prompt
 \- trigger\_intents
 ConversationCapabilities:
 type: object
 description: >-
 Structured, conversation-aware capabilities metadata returned by \`GET
 /conversations/{conversation\_id}/capabilities\`.
 properties:
 flows:
 type: array
 description: >-
 List of all flows with their capability metadata, including whether
 each flow is currently startable for this conversation.
 items:
 $ref: '#/components/schemas/FlowCapability'
 required:
 \- flows
