# EVENT GUIDE
## aifitapp-aicoach-service

AI-powered fitness coaching service that generates personalized evidence-based training programs and nutrition plans, manages chatbowt interactions with full validation chains, handles dynamic program modifications via AI tool calls, tracks weaight measurements, enforces moderation and quotas, and provides admin endpoints for moderation history and usage analytics.a

## Architectural Design Credit and Contact Information

The architectural design of this microservice is credited to . For inquiries, feedback, or further information regarding the architecture, please direct your communication to:

Email: 

We encourage open communication and welcome any questions or discussions related to the architectural aspects of this microservice.

# Documentation Scope

Welcome to the official documentation for the `AiCoach` Service Event descriptions. This guide is dedicated to detailing how to subscribe to and listen for state changes within the `AiCoach` Service, offering an exclusive focus on event subscription mechanisms.

**Intended Audience**

This documentation is aimed at developers and integrators looking to monitor `AiCoach` Service state changes. It is especially relevant for those wishing to implement or enhance business logic based on interactions with `AiCoach` objects.

**Overview**

This section provides detailed instructions on monitoring service events, covering payload structures and demonstrating typical use cases through examples.

# Authentication and Authorization

Access to the `AiCoach` service's events is facilitated through the project's Kafka server, which is not accessible to the public. Subscription to a Kafka topic requires being on the same network and possessing valid Kafka user credentials.  This document presupposes that readers have existing access to the Kafka server.

Additionally, the service offers a public subscription option via REST for real-time data management in frontend applications, secured through REST API authentication and authorization mechanisms. To subscribe to service events via the REST API, please consult the Realtime REST API Guide.

# Database Events

Database events are triggered at the database layer, automatically and atomically, in response to any modifications at the data level. These events serve to notify subscribers about the creation, update, or deletion of objects within the database, distinct from any overarching business logic. 

Listening to database events is particularly beneficial for those focused on tracking changes at the database level. A typical use case for subscribing to database events is to replicate the data store of one service within another service's scope, ensuring data consistency and syncronization across services.

For example, while a business operation such as "approve membership" might generate a high-level business event like `membership-approved`, the underlying database changes could involve multiple state updates to different entities. These might be published as separate events, such as `dbevent-member-updated` and `dbevent-user-updated`, reflecting the granular changes at the database level.

Such detailed eventing provides a robust foundation for building responsive, data-driven applications, enabling fine-grained observability and reaction to the dynamics of the data landscape. It also facilitates the architectural pattern of event sourcing, where state changes are captured as a sequence of events, allowing for high-fidelity data replication and history replay for analytical or auditing purposes.

## DbEvent chatMessage-created

**Event topic**: `appaili-aicoach-service-dbevent-chatmessage-created`

This event is triggered upon the creation of a `chatMessage` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent chatMessage-updated

**Event topic**: `appaili-aicoach-service-dbevent-chatmessage-updated`

Activation of this event follows the update of a `chatMessage` data object. The payload contains the updated information under the `chatMessage` attribute, along with the original data prior to update, labeled as `old_chatMessage` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_chatMessage:{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
chatMessage:{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent chatMessage-deleted

**Event topic**: `appaili-aicoach-service-dbevent-chatmessage-deleted`

This event announces the deletion of a `chatMessage` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent coachConversation-created

**Event topic**: `appaili-aicoach-service-dbevent-coachconversation-created`

This event is triggered upon the creation of a `coachConversation` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent coachConversation-updated

**Event topic**: `appaili-aicoach-service-dbevent-coachconversation-updated`

Activation of this event follows the update of a `coachConversation` data object. The payload contains the updated information under the `coachConversation` attribute, along with the original data prior to update, labeled as `old_coachConversation` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_coachConversation:{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
coachConversation:{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent coachConversation-deleted

**Event topic**: `appaili-aicoach-service-dbevent-coachconversation-deleted`

This event announces the deletion of a `coachConversation` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent mealPlan-created

**Event topic**: `appaili-aicoach-service-dbevent-mealplan-created`

This event is triggered upon the creation of a `mealPlan` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent mealPlan-updated

**Event topic**: `appaili-aicoach-service-dbevent-mealplan-updated`

Activation of this event follows the update of a `mealPlan` data object. The payload contains the updated information under the `mealPlan` attribute, along with the original data prior to update, labeled as `old_mealPlan` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_mealPlan:{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
mealPlan:{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent mealPlan-deleted

**Event topic**: `appaili-aicoach-service-dbevent-mealplan-deleted`

This event announces the deletion of a `mealPlan` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent moderationRecord-created

**Event topic**: `appaili-aicoach-service-dbevent-moderationrecord-created`

This event is triggered upon the creation of a `moderationRecord` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent moderationRecord-updated

**Event topic**: `appaili-aicoach-service-dbevent-moderationrecord-updated`

Activation of this event follows the update of a `moderationRecord` data object. The payload contains the updated information under the `moderationRecord` attribute, along with the original data prior to update, labeled as `old_moderationRecord` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_moderationRecord:{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
moderationRecord:{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent moderationRecord-deleted

**Event topic**: `appaili-aicoach-service-dbevent-moderationrecord-deleted`

This event announces the deletion of a `moderationRecord` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}
```  
## DbEvent planMeal-created

**Event topic**: `appaili-aicoach-service-dbevent-planmeal-created`

This event is triggered upon the creation of a `planMeal` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","carbs":"Float","fat":"Float","foods":"Text","mealLabel":"String","mealPlanId":"ID","protein":"Float","sortOrder":"Integer","totalCalories":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent planMeal-updated

**Event topic**: `appaili-aicoach-service-dbevent-planmeal-updated`

Activation of this event follows the update of a `planMeal` data object. The payload contains the updated information under the `planMeal` attribute, along with the original data prior to update, labeled as `old_planMeal` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_planMeal:{"id":"ID","carbs":"Float","fat":"Float","foods":"Text","mealLabel":"String","mealPlanId":"ID","protein":"Float","sortOrder":"Integer","totalCalories":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
planMeal:{"id":"ID","carbs":"Float","fat":"Float","foods":"Text","mealLabel":"String","mealPlanId":"ID","protein":"Float","sortOrder":"Integer","totalCalories":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent planMeal-deleted

**Event topic**: `appaili-aicoach-service-dbevent-planmeal-deleted`

This event announces the deletion of a `planMeal` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","carbs":"Float","fat":"Float","foods":"Text","mealLabel":"String","mealPlanId":"ID","protein":"Float","sortOrder":"Integer","totalCalories":"Integer","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent programExercise-created

**Event topic**: `appaili-aicoach-service-dbevent-programexercise-created`

This event is triggered upon the creation of a `programExercise` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","dayLabel":"String","exerciseName":"String","movementType":"Enum","movementType_idx":"Integer","muscleGroup":"String","progressionRule":"Text","repMax":"Integer","repMin":"Integer","rirTarget":"Integer","sets":"Integer","sortOrder":"Integer","trainingProgramId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent programExercise-updated

**Event topic**: `appaili-aicoach-service-dbevent-programexercise-updated`

Activation of this event follows the update of a `programExercise` data object. The payload contains the updated information under the `programExercise` attribute, along with the original data prior to update, labeled as `old_programExercise` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_programExercise:{"id":"ID","dayLabel":"String","exerciseName":"String","movementType":"Enum","movementType_idx":"Integer","muscleGroup":"String","progressionRule":"Text","repMax":"Integer","repMin":"Integer","rirTarget":"Integer","sets":"Integer","sortOrder":"Integer","trainingProgramId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
programExercise:{"id":"ID","dayLabel":"String","exerciseName":"String","movementType":"Enum","movementType_idx":"Integer","muscleGroup":"String","progressionRule":"Text","repMax":"Integer","repMin":"Integer","rirTarget":"Integer","sets":"Integer","sortOrder":"Integer","trainingProgramId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent programExercise-deleted

**Event topic**: `appaili-aicoach-service-dbevent-programexercise-deleted`

This event announces the deletion of a `programExercise` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","dayLabel":"String","exerciseName":"String","movementType":"Enum","movementType_idx":"Integer","muscleGroup":"String","progressionRule":"Text","repMax":"Integer","repMin":"Integer","rirTarget":"Integer","sets":"Integer","sortOrder":"Integer","trainingProgramId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent quotaConfig-created

**Event topic**: `appaili-aicoach-service-dbevent-quotaconfig-created`

This event is triggered upon the creation of a `quotaConfig` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent quotaConfig-updated

**Event topic**: `appaili-aicoach-service-dbevent-quotaconfig-updated`

Activation of this event follows the update of a `quotaConfig` data object. The payload contains the updated information under the `quotaConfig` attribute, along with the original data prior to update, labeled as `old_quotaConfig` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_quotaConfig:{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
quotaConfig:{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent quotaConfig-deleted

**Event topic**: `appaili-aicoach-service-dbevent-quotaconfig-deleted`

This event announces the deletion of a `quotaConfig` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent trainingProgram-created

**Event topic**: `appaili-aicoach-service-dbevent-trainingprogram-created`

This event is triggered upon the creation of a `trainingProgram` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent trainingProgram-updated

**Event topic**: `appaili-aicoach-service-dbevent-trainingprogram-updated`

Activation of this event follows the update of a `trainingProgram` data object. The payload contains the updated information under the `trainingProgram` attribute, along with the original data prior to update, labeled as `old_trainingProgram` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_trainingProgram:{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
trainingProgram:{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent trainingProgram-deleted

**Event topic**: `appaili-aicoach-service-dbevent-trainingprogram-deleted`

This event announces the deletion of a `trainingProgram` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent userQuota-created

**Event topic**: `appaili-aicoach-service-dbevent-userquota-created`

This event is triggered upon the creation of a `userQuota` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","messageCount":"Integer","periodEnd":"Date","periodStart":"Date","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent userQuota-updated

**Event topic**: `appaili-aicoach-service-dbevent-userquota-updated`

Activation of this event follows the update of a `userQuota` data object. The payload contains the updated information under the `userQuota` attribute, along with the original data prior to update, labeled as `old_userQuota` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_userQuota:{"id":"ID","messageCount":"Integer","periodEnd":"Date","periodStart":"Date","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
userQuota:{"id":"ID","messageCount":"Integer","periodEnd":"Date","periodStart":"Date","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent userQuota-deleted

**Event topic**: `appaili-aicoach-service-dbevent-userquota-deleted`

This event announces the deletion of a `userQuota` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","messageCount":"Integer","periodEnd":"Date","periodStart":"Date","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent weightLog-created

**Event topic**: `appaili-aicoach-service-dbevent-weightlog-created`

This event is triggered upon the creation of a `weightLog` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent weightLog-updated

**Event topic**: `appaili-aicoach-service-dbevent-weightlog-updated`

Activation of this event follows the update of a `weightLog` data object. The payload contains the updated information under the `weightLog` attribute, along with the original data prior to update, labeled as `old_weightLog` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_weightLog:{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
weightLog:{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent weightLog-deleted

**Event topic**: `appaili-aicoach-service-dbevent-weightlog-deleted`

This event announces the deletion of a `weightLog` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent banAppeals-created

**Event topic**: `appaili-aicoach-service-dbevent-banappeals-created`

This event is triggered upon the creation of a `banAppeals` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent banAppeals-updated

**Event topic**: `appaili-aicoach-service-dbevent-banappeals-updated`

Activation of this event follows the update of a `banAppeals` data object. The payload contains the updated information under the `banAppeals` attribute, along with the original data prior to update, labeled as `old_banAppeals` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_banAppeals:{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
banAppeals:{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent banAppeals-deleted

**Event topic**: `appaili-aicoach-service-dbevent-banappeals-deleted`

This event announces the deletion of a `banAppeals` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent additionalQuota-created

**Event topic**: `appaili-aicoach-service-dbevent-additionalquota-created`

This event is triggered upon the creation of a `additionalQuota` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent additionalQuota-updated

**Event topic**: `appaili-aicoach-service-dbevent-additionalquota-updated`

Activation of this event follows the update of a `additionalQuota` data object. The payload contains the updated information under the `additionalQuota` attribute, along with the original data prior to update, labeled as `old_additionalQuota` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_additionalQuota:{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
additionalQuota:{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent additionalQuota-deleted

**Event topic**: `appaili-aicoach-service-dbevent-additionalquota-deleted`

This event announces the deletion of a `additionalQuota` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent sys_additionalQuotaPayment-created

**Event topic**: `appaili-aicoach-service-dbevent-sys_additionalquotapayment-created`

This event is triggered upon the creation of a `sys_additionalQuotaPayment` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent sys_additionalQuotaPayment-updated

**Event topic**: `appaili-aicoach-service-dbevent-sys_additionalquotapayment-updated`

Activation of this event follows the update of a `sys_additionalQuotaPayment` data object. The payload contains the updated information under the `sys_additionalQuotaPayment` attribute, along with the original data prior to update, labeled as `old_sys_additionalQuotaPayment` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_sys_additionalQuotaPayment:{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
sys_additionalQuotaPayment:{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent sys_additionalQuotaPayment-deleted

**Event topic**: `appaili-aicoach-service-dbevent-sys_additionalquotapayment-deleted`

This event announces the deletion of a `sys_additionalQuotaPayment` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent sys_paymentCustomer-created

**Event topic**: `appaili-aicoach-service-dbevent-sys_paymentcustomer-created`

This event is triggered upon the creation of a `sys_paymentCustomer` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent sys_paymentCustomer-updated

**Event topic**: `appaili-aicoach-service-dbevent-sys_paymentcustomer-updated`

Activation of this event follows the update of a `sys_paymentCustomer` data object. The payload contains the updated information under the `sys_paymentCustomer` attribute, along with the original data prior to update, labeled as `old_sys_paymentCustomer` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_sys_paymentCustomer:{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
sys_paymentCustomer:{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent sys_paymentCustomer-deleted

**Event topic**: `appaili-aicoach-service-dbevent-sys_paymentcustomer-deleted`

This event announces the deletion of a `sys_paymentCustomer` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent sys_paymentMethod-created

**Event topic**: `appaili-aicoach-service-dbevent-sys_paymentmethod-created`

This event is triggered upon the creation of a `sys_paymentMethod` data object in the database. The event payload encompasses the newly created data, encapsulated within the root of the paylod.

**Event payload**: 
```json
{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  
## DbEvent sys_paymentMethod-updated

**Event topic**: `appaili-aicoach-service-dbevent-sys_paymentmethod-updated`

Activation of this event follows the update of a `sys_paymentMethod` data object. The payload contains the updated information under the `sys_paymentMethod` attribute, along with the original data prior to update, labeled as `old_sys_paymentMethod` and also you can find the old and new versions of updated-only portion of the data..

**Event payload**: 
```json
{
old_sys_paymentMethod:{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
sys_paymentMethod:{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},
oldDataValues,
newDataValues
}
``` 
## DbEvent sys_paymentMethod-deleted

**Event topic**: `appaili-aicoach-service-dbevent-sys_paymentmethod-deleted`

This event announces the deletion of a `sys_paymentMethod` data object, covering both hard deletions (permanent removal) and soft deletions (where the `isActive` attribute is set to false). Regardless of the deletion type, the event payload will present the data as it was immediately before deletion, highlighting an `isActive` status of false for soft deletions.

**Event payload**: 
```json
{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  


# ElasticSearch Index Events

Within the `AiCoach` service, most data objects are mirrored in ElasticSearch indices, ensuring these indices remain syncronized with their database counterparts through creation, updates, and deletions. These indices serve dual purposes: they act as a data source for external services and furnish aggregated data tailored to enhance frontend user experiences. Consequently, an ElasticSearch index might encapsulate data in its original form or aggregate additional information from other data objects. 

These aggregations can include both one-to-one and one-to-many relationships not only with database objects within the same service but also across different services. This capability allows developers to access comprehensive, aggregated data efficiently. By subscribing to ElasticSearch index events, developers are notified when an index is updated and can directly obtain the aggregated entity within the event payload, bypassing the need for separate ElasticSearch queries.

It's noteworthy that some services may augment another service's index by appending to the entity’s `extends` object. In such scenarios, an `*-extended` event will contain only the newly added data. Should you require the complete dataset, you would need to retrieve the full ElasticSearch index entity using the provided ID.

This approach to indexing and event handling facilitates a modular, interconnected architecture where services can seamlessly integrate and react to changes, enriching the overall data ecosystem and enabling more dynamic, responsive applications.



## Index Event chatmessage-created

**Event topic**: `elastic-index-aifitapp_chatmessage-created`

**Event payload**:
```json
{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event chatmessage-updated

**Event topic**: `elastic-index-aifitapp_chatmessage-created`

**Event payload**:
```json
{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event chatmessage-deleted

**Event topic**: `elastic-index-aifitapp_chatmessage-deleted`

**Event payload**:
```json
{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event chatmessage-extended

**Event topic**: `elastic-index-aifitapp_chatmessage-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event coachconversation-created

**Event topic**: `elastic-index-aifitapp_coachconversation-created`

**Event payload**:
```json
{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event coachconversation-updated

**Event topic**: `elastic-index-aifitapp_coachconversation-created`

**Event payload**:
```json
{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event coachconversation-deleted

**Event topic**: `elastic-index-aifitapp_coachconversation-deleted`

**Event payload**:
```json
{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event coachconversation-extended

**Event topic**: `elastic-index-aifitapp_coachconversation-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event mealplan-created

**Event topic**: `elastic-index-aifitapp_mealplan-created`

**Event payload**:
```json
{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event mealplan-updated

**Event topic**: `elastic-index-aifitapp_mealplan-created`

**Event payload**:
```json
{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event mealplan-deleted

**Event topic**: `elastic-index-aifitapp_mealplan-deleted`

**Event payload**:
```json
{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event mealplan-extended

**Event topic**: `elastic-index-aifitapp_mealplan-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event moderationrecord-created

**Event topic**: `elastic-index-aifitapp_moderationrecord-created`

**Event payload**:
```json
{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event moderationrecord-updated

**Event topic**: `elastic-index-aifitapp_moderationrecord-created`

**Event payload**:
```json
{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event moderationrecord-deleted

**Event topic**: `elastic-index-aifitapp_moderationrecord-deleted`

**Event payload**:
```json
{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event moderationrecord-extended

**Event topic**: `elastic-index-aifitapp_moderationrecord-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event planmeal-created

**Event topic**: `elastic-index-aifitapp_planmeal-created`

**Event payload**:
```json
{"id":"ID","carbs":"Float","fat":"Float","foods":"Text","mealLabel":"String","mealPlanId":"ID","protein":"Float","sortOrder":"Integer","totalCalories":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event planmeal-updated

**Event topic**: `elastic-index-aifitapp_planmeal-created`

**Event payload**:
```json
{"id":"ID","carbs":"Float","fat":"Float","foods":"Text","mealLabel":"String","mealPlanId":"ID","protein":"Float","sortOrder":"Integer","totalCalories":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event planmeal-deleted

**Event topic**: `elastic-index-aifitapp_planmeal-deleted`

**Event payload**:
```json
{"id":"ID","carbs":"Float","fat":"Float","foods":"Text","mealLabel":"String","mealPlanId":"ID","protein":"Float","sortOrder":"Integer","totalCalories":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event planmeal-extended

**Event topic**: `elastic-index-aifitapp_planmeal-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event programexercise-created

**Event topic**: `elastic-index-aifitapp_programexercise-created`

**Event payload**:
```json
{"id":"ID","dayLabel":"String","exerciseName":"String","movementType":"Enum","movementType_idx":"Integer","muscleGroup":"String","progressionRule":"Text","repMax":"Integer","repMin":"Integer","rirTarget":"Integer","sets":"Integer","sortOrder":"Integer","trainingProgramId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event programexercise-updated

**Event topic**: `elastic-index-aifitapp_programexercise-created`

**Event payload**:
```json
{"id":"ID","dayLabel":"String","exerciseName":"String","movementType":"Enum","movementType_idx":"Integer","muscleGroup":"String","progressionRule":"Text","repMax":"Integer","repMin":"Integer","rirTarget":"Integer","sets":"Integer","sortOrder":"Integer","trainingProgramId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event programexercise-deleted

**Event topic**: `elastic-index-aifitapp_programexercise-deleted`

**Event payload**:
```json
{"id":"ID","dayLabel":"String","exerciseName":"String","movementType":"Enum","movementType_idx":"Integer","muscleGroup":"String","progressionRule":"Text","repMax":"Integer","repMin":"Integer","rirTarget":"Integer","sets":"Integer","sortOrder":"Integer","trainingProgramId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event programexercise-extended

**Event topic**: `elastic-index-aifitapp_programexercise-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event quotaconfig-created

**Event topic**: `elastic-index-aifitapp_quotaconfig-created`

**Event payload**:
```json
{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event quotaconfig-updated

**Event topic**: `elastic-index-aifitapp_quotaconfig-created`

**Event payload**:
```json
{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event quotaconfig-deleted

**Event topic**: `elastic-index-aifitapp_quotaconfig-deleted`

**Event payload**:
```json
{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event quotaconfig-extended

**Event topic**: `elastic-index-aifitapp_quotaconfig-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event trainingprogram-created

**Event topic**: `elastic-index-aifitapp_trainingprogram-created`

**Event payload**:
```json
{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event trainingprogram-updated

**Event topic**: `elastic-index-aifitapp_trainingprogram-created`

**Event payload**:
```json
{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event trainingprogram-deleted

**Event topic**: `elastic-index-aifitapp_trainingprogram-deleted`

**Event payload**:
```json
{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event trainingprogram-extended

**Event topic**: `elastic-index-aifitapp_trainingprogram-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event userquota-created

**Event topic**: `elastic-index-aifitapp_userquota-created`

**Event payload**:
```json
{"id":"ID","messageCount":"Integer","periodEnd":"Date","periodStart":"Date","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event userquota-updated

**Event topic**: `elastic-index-aifitapp_userquota-created`

**Event payload**:
```json
{"id":"ID","messageCount":"Integer","periodEnd":"Date","periodStart":"Date","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event userquota-deleted

**Event topic**: `elastic-index-aifitapp_userquota-deleted`

**Event payload**:
```json
{"id":"ID","messageCount":"Integer","periodEnd":"Date","periodStart":"Date","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event userquota-extended

**Event topic**: `elastic-index-aifitapp_userquota-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event weightlog-created

**Event topic**: `elastic-index-aifitapp_weightlog-created`

**Event payload**:
```json
{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event weightlog-updated

**Event topic**: `elastic-index-aifitapp_weightlog-created`

**Event payload**:
```json
{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event weightlog-deleted

**Event topic**: `elastic-index-aifitapp_weightlog-deleted`

**Event payload**:
```json
{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event weightlog-extended

**Event topic**: `elastic-index-aifitapp_weightlog-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event banappeals-created

**Event topic**: `elastic-index-aifitapp_banappeals-created`

**Event payload**:
```json
{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event banappeals-updated

**Event topic**: `elastic-index-aifitapp_banappeals-created`

**Event payload**:
```json
{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event banappeals-deleted

**Event topic**: `elastic-index-aifitapp_banappeals-deleted`

**Event payload**:
```json
{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event banappeals-extended

**Event topic**: `elastic-index-aifitapp_banappeals-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event additionalquota-created

**Event topic**: `elastic-index-aifitapp_additionalquota-created`

**Event payload**:
```json
{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event additionalquota-updated

**Event topic**: `elastic-index-aifitapp_additionalquota-created`

**Event payload**:
```json
{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event additionalquota-deleted

**Event topic**: `elastic-index-aifitapp_additionalquota-deleted`

**Event payload**:
```json
{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event additionalquota-extended

**Event topic**: `elastic-index-aifitapp_additionalquota-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event sys_additionalquotapayment-created

**Event topic**: `elastic-index-aifitapp_sys_additionalquotapayment-created`

**Event payload**:
```json
{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_additionalquotapayment-updated

**Event topic**: `elastic-index-aifitapp_sys_additionalquotapayment-created`

**Event payload**:
```json
{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_additionalquotapayment-deleted

**Event topic**: `elastic-index-aifitapp_sys_additionalquotapayment-deleted`

**Event payload**:
```json
{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_additionalquotapayment-extended

**Event topic**: `elastic-index-aifitapp_sys_additionalquotapayment-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event sys_paymentcustomer-created

**Event topic**: `elastic-index-aifitapp_sys_paymentcustomer-created`

**Event payload**:
```json
{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_paymentcustomer-updated

**Event topic**: `elastic-index-aifitapp_sys_paymentcustomer-created`

**Event payload**:
```json
{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_paymentcustomer-deleted

**Event topic**: `elastic-index-aifitapp_sys_paymentcustomer-deleted`

**Event payload**:
```json
{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_paymentcustomer-extended

**Event topic**: `elastic-index-aifitapp_sys_paymentcustomer-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  



## Index Event sys_paymentmethod-created

**Event topic**: `elastic-index-aifitapp_sys_paymentmethod-created`

**Event payload**:
```json
{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_paymentmethod-updated

**Event topic**: `elastic-index-aifitapp_sys_paymentmethod-created`

**Event payload**:
```json
{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_paymentmethod-deleted

**Event topic**: `elastic-index-aifitapp_sys_paymentmethod-deleted`

**Event payload**:
```json
{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}
```  

## Index Event sys_paymentmethod-extended

**Event topic**: `elastic-index-aifitapp_sys_paymentmethod-extended`

**Event payload**:
```js
{
  id: id,
  extends: {
    [extendName]: "Object",
    [extendName + "_count"]: "Number",
  },
}
``` 

# Route Events

Route events are emitted following the successful execution of a route. While most routes perform CRUD (Create, Read, Update, Delete) operations on data objects, resulting in route events that closely resemble database events, there are distinctions worth noting. A single route execution might trigger multiple CRUD actions and ElasticSearch indexing operations. However, for those primarily concerned with the overarching business logic and its outcomes, listening to the consolidated route event, published once at the conclusion of the route's execution, is more pertinent.

Moreover, routes often deliver aggregated data beyond the primary database object, catering to specific client needs. For instance, creating a data object via a route might not only return the entity's data but also route-specific metrics, such as the executing user's permissions related to the entity. Alternatively, a route might automatically generate default child entities following the creation of a parent object. Consequently, the route event encapsulates a unified dataset encompassing both the parent and its children, in contrast to individual events triggered for each entity created. Therefore, subscribing to route events can offer a richer, more contextually relevant set of information aligned with business logic.

The payload of a route event mirrors the REST response JSON of the route, providing a direct and comprehensive reflection of the data and metadata communicated to the client. This ensures that subscribers to route events receive a payload that encapsulates both the primary data involved and any additional information deemed significant at the business level, facilitating a deeper understanding and integration of the service's functional outcomes.


## Route Event chatmessage-created

**Event topic** : `appaili-aicoach-service-chatmessage-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `chatMessage` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`chatMessage`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"chatMessage","method":"POST","action":"create","appVersion":"Version","rowCount":1,"chatMessage":{"id":"ID","content":"Text","conversationId":"ID","flagged":"Boolean","role":"Enum","role_idx":"Integer","toolCallData":"Text","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event coachconversation-created

**Event topic** : `appaili-aicoach-service-coachconversation-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `coachConversation` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`coachConversation`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"coachConversation","method":"POST","action":"create","appVersion":"Version","rowCount":1,"coachConversation":{"id":"ID","status":"Enum","status_idx":"Integer","userId":"ID","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"activeSubscriptions":"Object"}
```  
## Route Event quotaconfig-created

**Event topic** : `appaili-aicoach-service-quotaconfig-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"POST","action":"create","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event weightlog-created

**Event topic** : `appaili-aicoach-service-weightlog-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `weightLog` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`weightLog`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"weightLog","method":"POST","action":"create","appVersion":"Version","rowCount":1,"weightLog":{"id":"ID","measuredAt":"Date","userId":"ID","weightKg":"Float","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event quotaconfig-updated

**Event topic** : `appaili-aicoach-service-quotaconfig-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `quotaConfig` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`quotaConfig`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"quotaConfig","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"quotaConfig":{"id":"ID","quotaLimit":"Integer","quotaPeriod":"Enum","quotaPeriod_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-deleted

**Event topic** : `appaili-aicoach-service-moderationrecord-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":false}}
```  
## Route Event deletemealplan-done

**Event topic** : `appaili-aicoach-service-deletemealplan-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `mealPlan` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`mealPlan`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"mealPlan","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"mealPlan":{"id":"ID","carbGrams":"Float","dailyCalorieTarget":"Integer","fatGrams":"Float","notes":"Text","proteinGrams":"Float","restDayCalories":"Integer","restDayCarbGrams":"Float","status":"Enum","status_idx":"Integer","trainingDayCalories":"Integer","trainingDayCarbGrams":"Float","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event deletetrainingprogram-done

**Event topic** : `appaili-aicoach-service-deletetrainingprogram-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `trainingProgram` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`trainingProgram`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"trainingProgram","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"trainingProgram":{"id":"ID","cardioDurationMinutes":"Integer","cardioFrequencyPerWeek":"Integer","cardioType":"String","dailyStepTarget":"Integer","deloadIntervalWeeks":"Integer","notes":"Text","splitType":"String","status":"Enum","status_idx":"Integer","userId":"ID","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event moderationrecord-updated

**Event topic** : `appaili-aicoach-service-moderationrecord-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecord` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecord`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecord","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"moderationRecord":{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true}}
```  
## Route Event listmymoderationrecords-done

**Event topic** : `appaili-aicoach-service-listmymoderationrecords-done`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `moderationRecords` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`moderationRecords`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"moderationRecords","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","moderationRecords":[{"id":"ID","action":"Enum","action_idx":"Integer","offenseType":"String","reason":"Text","suspensionExpiresAt":"Date","userId":"ID","content":"String","recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","isActive":true},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeals-listed

**Event topic** : `appaili-aicoach-service-banappeals-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppealses` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppealses`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppealses","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","banAppealses":[{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID","showmoderationRecord":[{"offenseType":"String","reason":"Text","userId":"ID","content":"String"},{},{}]},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event banappeal-created

**Event topic** : `appaili-aicoach-service-banappeal-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"POST","action":"create","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event banappeal-updated

**Event topic** : `appaili-aicoach-service-banappeal-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `banAppeals` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`banAppeals`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"banAppeals","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"banAppeals":{"id":"ID","moderationRecordId":"ID","userId":"ID","appealReason":"String","status":"Enum","status_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquota-created

**Event topic** : `appaili-aicoach-service-additionalquota-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"create","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event myadditionalquota-retrived

**Event topic** : `appaili-aicoach-service-myadditionalquota-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"GET","action":"get","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"myaddQuota":"Object"}
```  
## Route Event additionalquotapayment-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapayment-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayments-listed

**Event topic** : `appaili-aicoach-service-additionalquotapayments-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayments` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayments`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayments","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_additionalQuotaPayments":[{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event additionalquotapayment-created

**Event topic** : `appaili-aicoach-service-additionalquotapayment-created`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"201","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"POST","action":"create","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-updated

**Event topic** : `appaili-aicoach-service-additionalquotapayment-updated`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-deleted

**Event topic** : `appaili-aicoach-service-additionalquotapayment-deleted`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"DELETE","action":"delete","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":false,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbyorderid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbyorderid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapaymentbypaymentid-retrived

**Event topic** : `appaili-aicoach-service-additionalquotapaymentbypaymentid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_additionalQuotaPayment` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_additionalQuotaPayment`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_additionalQuotaPayment","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_additionalQuotaPayment":{"id":"ID","ownerId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"String","statusLiteral":"String","redirectUrl":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event additionalquotapayment-started

**Event topic** : `appaili-aicoach-service-additionalquotapayment-started`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-refreshed

**Event topic** : `appaili-aicoach-service-additionalquotapayment-refreshed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"PATCH","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event additionalquotapayment-calledback

**Event topic** : `appaili-aicoach-service-additionalquotapayment-calledback`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `additionalQuota` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`additionalQuota`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"additionalQuota","method":"POST","action":"update","appVersion":"Version","rowCount":1,"additionalQuota":{"id":"ID","userId":"String","additionalMessage":"Integer","status":"Enum","status_idx":"Integer","currency":"String","pricePaid":"Integer","statusUpdatedAt":"Date","activatedAt":"Date","cancelledAt":"Date","periodEnd":"Date","periodStart":"Date","paymentConfirmation":"Enum","paymentConfirmation_idx":"Integer","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},"paymentResult":{"paymentTicketId":"ID","orderId":"ID","paymentId":"String","paymentStatus":"Enum","paymentIntentInfo":"Object","statusLiteral":"String","amount":"Double","currency":"String","success":true,"description":"String","metadata":"Object","paymentUserParams":"Object"}}
```  
## Route Event paymentcustomerbyuserid-retrived

**Event topic** : `appaili-aicoach-service-paymentcustomerbyuserid-retrived`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomer` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomer`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomer","method":"GET","action":"get","appVersion":"Version","rowCount":1,"sys_paymentCustomer":{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"}}
```  
## Route Event paymentcustomers-listed

**Event topic** : `appaili-aicoach-service-paymentcustomers-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentCustomers` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentCustomers`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentCustomers","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentCustomers":[{"id":"ID","userId":"ID","customerId":"String","platform":"String","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  
## Route Event paymentcustomermethods-listed

**Event topic** : `appaili-aicoach-service-paymentcustomermethods-listed`

**Event payload**:

The event payload, mirroring the REST API response, is structured as an encapsulated JSON. It includes metadata related to the API as well as the `sys_paymentMethods` data object itself. 

The following JSON included in the payload illustrates the fullest representation of the **`sys_paymentMethods`** object. Note, however, that certain properties might be excluded in accordance with the object's inherent logic.

```json
{"status":"OK","statusCode":"200","elapsedMs":126,"ssoTime":120,"source":"db","cacheKey":"hexCode","userId":"ID","sessionId":"ID","requestId":"ID","dataName":"sys_paymentMethods","method":"GET","action":"list","appVersion":"Version","rowCount":"\"Number\"","sys_paymentMethods":[{"id":"ID","paymentMethodId":"String","userId":"ID","customerId":"String","cardHolderName":"String","cardHolderZip":"String","platform":"String","cardInfo":"Object","isActive":true,"recordVersion":"Integer","createdAt":"Date","updatedAt":"Date","_owner":"ID"},{},{}],"paging":{"pageNumber":"Number","pageRowCount":"NUmber","totalRowCount":"Number","pageCount":"Number"},"filters":[],"uiPermissions":[]}
```  




# Copyright
All sources, documents and other digital materials are copyright of .

# About Us
For more information please visit our website: .

.
.
