Airbnb-Style Rental Marketplace Backend

data-object-management • 1/2/2026

DATA OBJECT MANAGEMENT

Airbnb Admin Panel

This document provides comprehensive information about how the Airbnb Admin Panel manages data objects, including CRUD operations, validation, relationships, and user interface generation.

Architectural Design Credit and Contact Information

The architectural design of this data object management system is credited to Mindbricks Genesis Engine.

We encourage open communication and welcome any questions or discussions related to the architectural aspects of this data object management system.

Documentation Scope

This guide covers the complete data object management system within the Airbnb Admin Panel. It includes dynamic UI generation, CRUD operations, data validation, relationship management, and user experience patterns.

Intended Audience

This documentation is intended for frontend developers, UI/UX designers, and system administrators who need to understand how data objects are managed, displayed, and manipulated within the admin panel.

Data Object Architecture

Overview

The admin panel implements a basic data object management system that generates simple CRUD interfaces for data objects defined in the backend services. Each data object is represented by a data grid for listing and basic modal components for create/update/delete operations.

Data Object Structure

Core Data Object Properties

  • Name: Unique identifier for the data object
  • Display Name: Human-readable name for UI display
  • Component Name: React component name for rendering
  • Properties: Array of data object properties with types

Dynamic UI Generation

Component Generation Pattern



// Data object component structure Messaging messageThread
const DataObjectComponentMessagingMessageThread = {
  // List view for displaying multiple records
  ListView: {
    component: 'MessagingMessageThreadAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'MessagingMessageThreadAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'MessagingMessageThreadAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'MessagingMessageThreadAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure Messaging messageReport
const DataObjectComponentMessagingMessageReport = {
  // List view for displaying multiple records
  ListView: {
    component: 'MessagingMessageReportAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'MessagingMessageReportAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'MessagingMessageReportAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'MessagingMessageReportAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure Messaging message
const DataObjectComponentMessagingMessage = {
  // List view for displaying multiple records
  ListView: {
    component: 'MessagingMessageAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'MessagingMessageAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'MessagingMessageAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'MessagingMessageAppPageDeleteModal',
    lazy: true
  }
};



// Data object component structure PropertyCatalog listingCalendar
const DataObjectComponentPropertyCatalogListingCalendar = {
  // List view for displaying multiple records
  ListView: {
    component: 'PropertyCatalogListingCalendarAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'PropertyCatalogListingCalendarAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'PropertyCatalogListingCalendarAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'PropertyCatalogListingCalendarAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure PropertyCatalog listingAmenity
const DataObjectComponentPropertyCatalogListingAmenity = {
  // List view for displaying multiple records
  ListView: {
    component: 'PropertyCatalogListingAmenityAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'PropertyCatalogListingAmenityAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'PropertyCatalogListingAmenityAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'PropertyCatalogListingAmenityAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure PropertyCatalog listing
const DataObjectComponentPropertyCatalogListing = {
  // List view for displaying multiple records
  ListView: {
    component: 'PropertyCatalogListingAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'PropertyCatalogListingAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'PropertyCatalogListingAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'PropertyCatalogListingAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure PropertyCatalog listingLocaleText
const DataObjectComponentPropertyCatalogListingLocaleText = {
  // List view for displaying multiple records
  ListView: {
    component: 'PropertyCatalogListingLocaleTextAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'PropertyCatalogListingLocaleTextAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'PropertyCatalogListingLocaleTextAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'PropertyCatalogListingLocaleTextAppPageDeleteModal',
    lazy: true
  }
};



// Data object component structure AdminPanel localizationSetting
const DataObjectComponentAdminPanelLocalizationSetting = {
  // List view for displaying multiple records
  ListView: {
    component: 'AdminPanelLocalizationSettingAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AdminPanelLocalizationSettingAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AdminPanelLocalizationSettingAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AdminPanelLocalizationSettingAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure AdminPanel adminDisputeAction
const DataObjectComponentAdminPanelAdminDisputeAction = {
  // List view for displaying multiple records
  ListView: {
    component: 'AdminPanelAdminDisputeActionAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AdminPanelAdminDisputeActionAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AdminPanelAdminDisputeActionAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AdminPanelAdminDisputeActionAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure AdminPanel apiKey
const DataObjectComponentAdminPanelApiKey = {
  // List view for displaying multiple records
  ListView: {
    component: 'AdminPanelApiKeyAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AdminPanelApiKeyAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AdminPanelApiKeyAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AdminPanelApiKeyAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure AdminPanel financialReport
const DataObjectComponentAdminPanelFinancialReport = {
  // List view for displaying multiple records
  ListView: {
    component: 'AdminPanelFinancialReportAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AdminPanelFinancialReportAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AdminPanelFinancialReportAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AdminPanelFinancialReportAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure AdminPanel auditLog
const DataObjectComponentAdminPanelAuditLog = {
  // List view for displaying multiple records
  ListView: {
    component: 'AdminPanelAuditLogAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AdminPanelAuditLogAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AdminPanelAuditLogAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AdminPanelAuditLogAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure AdminPanel gdprAction
const DataObjectComponentAdminPanelGdprAction = {
  // List view for displaying multiple records
  ListView: {
    component: 'AdminPanelGdprActionAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AdminPanelGdprActionAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AdminPanelGdprActionAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AdminPanelGdprActionAppPageDeleteModal',
    lazy: true
  }
};



// Data object component structure BookingManagement reservation
const DataObjectComponentBookingManagementReservation = {
  // List view for displaying multiple records
  ListView: {
    component: 'BookingManagementReservationAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'BookingManagementReservationAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'BookingManagementReservationAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'BookingManagementReservationAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure BookingManagement paymentRecord
const DataObjectComponentBookingManagementPaymentRecord = {
  // List view for displaying multiple records
  ListView: {
    component: 'BookingManagementPaymentRecordAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'BookingManagementPaymentRecordAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'BookingManagementPaymentRecordAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'BookingManagementPaymentRecordAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure BookingManagement dispute
const DataObjectComponentBookingManagementDispute = {
  // List view for displaying multiple records
  ListView: {
    component: 'BookingManagementDisputeAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'BookingManagementDisputeAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'BookingManagementDisputeAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'BookingManagementDisputeAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure BookingManagement sys_reservationPayment
const DataObjectComponentBookingManagementSys_reservationPayment = {
  // List view for displaying multiple records
  ListView: {
    component: 'BookingManagementSys_reservationPaymentAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'BookingManagementSys_reservationPaymentAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'BookingManagementSys_reservationPaymentAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'BookingManagementSys_reservationPaymentAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure BookingManagement sys_paymentCustomer
const DataObjectComponentBookingManagementSys_paymentCustomer = {
  // List view for displaying multiple records
  ListView: {
    component: 'BookingManagementSys_paymentCustomerAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'BookingManagementSys_paymentCustomerAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'BookingManagementSys_paymentCustomerAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'BookingManagementSys_paymentCustomerAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure BookingManagement sys_paymentMethod
const DataObjectComponentBookingManagementSys_paymentMethod = {
  // List view for displaying multiple records
  ListView: {
    component: 'BookingManagementSys_paymentMethodAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'BookingManagementSys_paymentMethodAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'BookingManagementSys_paymentMethodAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'BookingManagementSys_paymentMethodAppPageDeleteModal',
    lazy: true
  }
};



// Data object component structure ReviewSystem reviewAggregate
const DataObjectComponentReviewSystemReviewAggregate = {
  // List view for displaying multiple records
  ListView: {
    component: 'ReviewSystemReviewAggregateAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'ReviewSystemReviewAggregateAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'ReviewSystemReviewAggregateAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'ReviewSystemReviewAggregateAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure ReviewSystem review
const DataObjectComponentReviewSystemReview = {
  // List view for displaying multiple records
  ListView: {
    component: 'ReviewSystemReviewAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'ReviewSystemReviewAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'ReviewSystemReviewAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'ReviewSystemReviewAppPageDeleteModal',
    lazy: true
  }
};



// Data object component structure Auth user
const DataObjectComponentAuthUser = {
  // List view for displaying multiple records
  ListView: {
    component: 'AuthUserAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AuthUserAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AuthUserAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AuthUserAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure Auth userGroup
const DataObjectComponentAuthUserGroup = {
  // List view for displaying multiple records
  ListView: {
    component: 'AuthUserGroupAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AuthUserGroupAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AuthUserGroupAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AuthUserGroupAppPageDeleteModal',
    lazy: true
  }
};

// Data object component structure Auth userGroupMember
const DataObjectComponentAuthUserGroupMember = {
  // List view for displaying multiple records
  ListView: {
    component: 'AuthUserGroupMemberAppPage',
    features: ['data-grid', 'export', 'filtering', 'search']
  },
  
  // Modal components for data manipulation
  CreateModal: {
    component: 'AuthUserGroupMemberAppPageCreateModal',
    lazy: true
  },
  
  UpdateModal: {
    component: 'AuthUserGroupMemberAppPageUpdateModal',
    lazy: true
  },
  
  // Action components
  DeleteModal: {
    component: 'AuthUserGroupMemberAppPageDeleteModal',
    lazy: true
  }
};


Service Data Objects

Messaging Service Data Objects

Service Overview

  • Service Name: messaging
  • Service Display Name: Messaging
  • Total Data Objects: 3

Data Objects

MessageThread Data Object

Basic Information

  • Object Name: messageThread
  • Display Name: MessageThread
  • Component Name: MessagingMessageThreadAppPage
  • Description: Thread/conversation between guest and host, optionally linked to a listing/reservation. Tracks participants, context, state, and stats.

Object Properties

Property Name Type Required Default Definition

| messageCount | Integer | | N/A | Total number of messages in thread. |

| isOpen | Boolean | | N/A | Thread is open for messaging (not closed/archived). |

| guestId | ID | | N/A | Guest user in this thread. |

| lastMessageAt | Date | | N/A | Last message sent in thread. |

| listingId | ID | | N/A | Listing related to this thread if any. |

| hostId | ID | | N/A | Host user in this thread. |

| reservationId | ID | | N/A | Reservation related to thread if any. |

Generated UI Components

  • List Component: MessagingMessageThreadAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: MessagingMessageThreadAppPageCreateModal - Form for creating new records
  • Update Modal: MessagingMessageThreadAppPageUpdateModal - Form for editing existing records
  • Delete Modal: MessagingMessageThreadAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /messageThread/list - Retrieve paginated list of records
  • Get: GET /messageThread/get - Retrieve single record by ID
  • Create: POST /messageThread/create - Create new record
  • Update: PUT /messageThread/update - Update existing record
  • Delete: DELETE /messageThread/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/messaging/messageThread
  • Create Route: /dashboard/messaging/messageThread/create
  • Update Route: /dashboard/messaging/messageThread/update/:id
  • Delete Route: /dashboard/messaging/messageThread/delete/:id

MessageReport Data Object

Basic Information

  • Object Name: messageReport
  • Display Name: MessageReport
  • Component Name: MessagingMessageReportAppPage
  • Description: Report/in-app abuse complaint filed for a message by a user. Tracks status, admin handling, and resolution notes. Only visible to involved parties and admins.

Object Properties

Property Name Type Required Default Definition

| reportedBy | ID | | N/A | User reporting this message. |

| reportReason | String | | N/A | Reporter-supplied reason for report/abuse claim. |

| moderationStatus | Enum | | N/A | Status of admin moderation/response. |

| messageId | ID | | N/A | Message being reported (abuse/inappropriate). |

| adminId | ID | | N/A | Admin assigned/reviewing this report (if any). |

| reportedAt | Date | | N/A | Datetime when report was filed. |

| resolutionNotes | Text | | N/A | Admin/moderator notes regarding outcome/resolution. |

Enum Properties

moderationStatus Enum Property

Property Definition: Status of admin moderation/response.

Enum Options

Name Value Index

| pending | "pending" | 0 |

| reviewed | "reviewed" | 1 |

| closed | "closed" | 2 |

Generated UI Components

  • List Component: MessagingMessageReportAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: MessagingMessageReportAppPageCreateModal - Form for creating new records
  • Update Modal: MessagingMessageReportAppPageUpdateModal - Form for editing existing records
  • Delete Modal: MessagingMessageReportAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /messageReport/list - Retrieve paginated list of records
  • Get: GET /messageReport/get - Retrieve single record by ID
  • Create: POST /messageReport/create - Create new record
  • Update: PUT /messageReport/update - Update existing record
  • Delete: DELETE /messageReport/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/messaging/messageReport
  • Create Route: /dashboard/messaging/messageReport/create
  • Update Route: /dashboard/messaging/messageReport/update/:id
  • Delete Route: /dashboard/messaging/messageReport/delete/:id

Message Data Object

Basic Information

  • Object Name: message
  • Display Name: Message
  • Component Name: MessagingMessageAppPage
  • Description: Single message within a thread (text/media/system). Includes metadata for flagging/moderation. Linked to sender, thread, and content type.

Object Properties

Property Name Type Required Default Definition

| threadId | ID | | N/A | Thread this message belongs to. |

| content | Text | | N/A | Message content (text or system message). |

| senderId | ID | | N/A | User who sent this message (must be guest/host in thread). |

| sentAt | Date | | N/A | When this message was sent (from client/server). |

| messageType | Enum | | N/A | Message type: text/media/system. |

| mediaUrl | String | | N/A | URL of media if type=media (optional, else null). |

| isModerated | Boolean | | N/A | True if message reviewed by admin (can be marked in moderation). |

| isFlagged | Boolean | | N/A | Message flagged as abuse/inappropriate. |

| flaggedBy | ID | | N/A | User who flagged, if any. |

| flagReason | String | | N/A | Reason for flagging, if provided. |

| isRead | Boolean | | N/A | marks a last array point if message is read or not |

Enum Properties

messageType Enum Property

Property Definition: Message type: text/media/system.

Enum Options

Name Value Index

| text | "text" | 0 |

| media | "media" | 1 |

| system | "system" | 2 |

Generated UI Components

  • List Component: MessagingMessageAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: MessagingMessageAppPageCreateModal - Form for creating new records
  • Update Modal: MessagingMessageAppPageUpdateModal - Form for editing existing records
  • Delete Modal: MessagingMessageAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /message/list - Retrieve paginated list of records
  • Get: GET /message/get - Retrieve single record by ID
  • Create: POST /message/create - Create new record
  • Update: PUT /message/update - Update existing record
  • Delete: DELETE /message/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/messaging/message
  • Create Route: /dashboard/messaging/message/create
  • Update Route: /dashboard/messaging/message/update/:id
  • Delete Route: /dashboard/messaging/message/delete/:id

PropertyCatalog Service Data Objects

Service Overview

  • Service Name: propertyCatalog
  • Service Display Name: PropertyCatalog
  • Total Data Objects: 4

Data Objects

ListingCalendar Data Object

Basic Information

  • Object Name: listingCalendar
  • Display Name: ListingCalendar
  • Component Name: PropertyCatalogListingCalendarAppPage
  • Description: Represents daily availability, pricing, and reservation state for a listing (i.e., a property calendar entry).

Object Properties

Property Name Type Required Default Definition

| priceOverride | Double | | N/A | Override price for this specific date (if exists). |

| date | Date | | N/A | Specific date for this calendar entry (YYYY-MM-DD). |

| minStay | Integer | | N/A | Minimum stay enforced for this date (overrides listing value). |

| listingId | ID | | N/A | Listing this calendar date belongs to. |

| bookedBy | ID | | N/A | User ID who reserved this date, if any. |

| iCalUrl | String | | N/A | iCal export URL for calendar sync (guest/owner use). |

| externalCalendarIds | String | | N/A | IDs for synchronized (imported) external calendars. |

| isAvailable | Boolean | | N/A | If true, date is bookable (else is blocked/reserved). |

Generated UI Components

  • List Component: PropertyCatalogListingCalendarAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: PropertyCatalogListingCalendarAppPageCreateModal - Form for creating new records
  • Update Modal: PropertyCatalogListingCalendarAppPageUpdateModal - Form for editing existing records
  • Delete Modal: PropertyCatalogListingCalendarAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /listingCalendar/list - Retrieve paginated list of records
  • Get: GET /listingCalendar/get - Retrieve single record by ID
  • Create: POST /listingCalendar/create - Create new record
  • Update: PUT /listingCalendar/update - Update existing record
  • Delete: DELETE /listingCalendar/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/propertyCatalog/listingCalendar
  • Create Route: /dashboard/propertyCatalog/listingCalendar/create
  • Update Route: /dashboard/propertyCatalog/listingCalendar/update/:id
  • Delete Route: /dashboard/propertyCatalog/listingCalendar/delete/:id

ListingAmenity Data Object

Basic Information

  • Object Name: listingAmenity
  • Display Name: ListingAmenity
  • Component Name: PropertyCatalogListingAmenityAppPage
  • Description: Dictionary of possible amenities (wifi, pool, etc.) for hosts to reference in their listings.

Object Properties

Property Name Type Required Default Definition

| iconUrl | String | | N/A | URL of amenity icon. |

| name | String | | N/A | Amenity name (pool, wifi, etc). |

Generated UI Components

  • List Component: PropertyCatalogListingAmenityAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: PropertyCatalogListingAmenityAppPageCreateModal - Form for creating new records
  • Update Modal: PropertyCatalogListingAmenityAppPageUpdateModal - Form for editing existing records
  • Delete Modal: PropertyCatalogListingAmenityAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /listingAmenity/list - Retrieve paginated list of records
  • Get: GET /listingAmenity/get - Retrieve single record by ID
  • Create: POST /listingAmenity/create - Create new record
  • Update: PUT /listingAmenity/update - Update existing record
  • Delete: DELETE /listingAmenity/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/propertyCatalog/listingAmenity
  • Create Route: /dashboard/propertyCatalog/listingAmenity/create
  • Update Route: /dashboard/propertyCatalog/listingAmenity/update/:id
  • Delete Route: /dashboard/propertyCatalog/listingAmenity/delete/:id

Listing Data Object

Basic Information

  • Object Name: listing
  • Display Name: Listing
  • Component Name: PropertyCatalogListingAppPage
  • Description: Represents a property or space offered for short-term rental by a host. Includes host ref, core attributes, pricing, location, seasonal pricing, media, and booking/policy properties...

Object Properties

Property Name Type Required Default Definition

| title | String | | N/A | Default listing title (host language)—localized titles in listingLocaleText. |

| amenityIds | ID | | N/A | Array of amenities from 'listingAmenity'. |

| hostId | ID | | N/A | The user (host) who owns this listing. |

| mainPhoto | String | | N/A | URL of the primary listing photo. |

| photos | String | | N/A | Array of photo URLs. |

| address | String | | N/A | Free-form address (not necessarily geo-coded). |

| pricePerNight | Double | | N/A | Base nightly price in platform currency. |

| description | Text | | N/A | Default listing description (host language)—localized via listingLocaleText. |

| propertyType | Enum | | N/A | Type of property (e.g. apartment, house, villa, room). |

| location | Object | | N/A | Geo-location object (latitude and longitude). |

| maxStay | Integer | | N/A | Maximum nights allowed for booking. |

| minStay | Integer | | N/A | Minimum nights required for booking. |

| currency | String | | N/A | Currency code (ISO 4217). |

| seasonalPricing | Object | | N/A | Objects defining season/date-specific price adjustments. |

| approvalType | Enum | | N/A | Whether bookings require approval or are instant. |

| bookingPolicies | Object | | N/A | Object describing booking rules and platform-enforced restrictions. |

| cancellationPolicy | Object | | N/A | Object snapshot of cancellation policy details for this listing. |

| languagesSupported | String | | N/A | Array of ISO codes for localized content supported in this listing. |

| houseRules | Text | | N/A | Free-form rules set by the host for this listing. |

| isPublished | Boolean | | N/A | If true, listing is public/discoverable. |

| cityTaxPercent | Double | | N/A | City or tourism tax as a percentage set for this listing's location/region. |

Enum Properties

propertyType Enum Property

Property Definition: Type of property (e.g. apartment, house, villa, room).

Enum Options

Name Value Index

| apartment | "apartment" | 0 |

| house | "house" | 1 |

| villa | "villa" | 2 |

| room | "room" | 3 |

| condo | "condo" | 4 |

| loft | "loft" | 5 |

| studio | "studio" | 6 |

| other | "other" | 7 |

approvalType Enum Property

Property Definition: Whether bookings require approval or are instant.

Enum Options

Name Value Index

| instant | "instant" | 0 |

| manual | "manual" | 1 |

Generated UI Components

  • List Component: PropertyCatalogListingAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: PropertyCatalogListingAppPageCreateModal - Form for creating new records
  • Update Modal: PropertyCatalogListingAppPageUpdateModal - Form for editing existing records
  • Delete Modal: PropertyCatalogListingAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /listing/list - Retrieve paginated list of records
  • Get: GET /listing/get - Retrieve single record by ID
  • Create: POST /listing/create - Create new record
  • Update: PUT /listing/update - Update existing record
  • Delete: DELETE /listing/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/propertyCatalog/listing
  • Create Route: /dashboard/propertyCatalog/listing/create
  • Update Route: /dashboard/propertyCatalog/listing/update/:id
  • Delete Route: /dashboard/propertyCatalog/listing/delete/:id

ListingLocaleText Data Object

Basic Information

  • Object Name: listingLocaleText
  • Display Name: ListingLocaleText
  • Component Name: PropertyCatalogListingLocaleTextAppPage
  • Description: Localized title & description texts for a property listing, per language.

Object Properties

Property Name Type Required Default Definition

| localizedDescription | Text | | N/A | Localized description for this language. |

| localizedTitle | String | | N/A | Listing title translated for this language. |

| listingId | ID | | N/A | Listing this translation belongs to. |

| languageCode | String | | N/A | ISO 639-1 or -2 code for language. |

Generated UI Components

  • List Component: PropertyCatalogListingLocaleTextAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: PropertyCatalogListingLocaleTextAppPageCreateModal - Form for creating new records
  • Update Modal: PropertyCatalogListingLocaleTextAppPageUpdateModal - Form for editing existing records
  • Delete Modal: PropertyCatalogListingLocaleTextAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /listingLocaleText/list - Retrieve paginated list of records
  • Get: GET /listingLocaleText/get - Retrieve single record by ID
  • Create: POST /listingLocaleText/create - Create new record
  • Update: PUT /listingLocaleText/update - Update existing record
  • Delete: DELETE /listingLocaleText/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/propertyCatalog/listingLocaleText
  • Create Route: /dashboard/propertyCatalog/listingLocaleText/create
  • Update Route: /dashboard/propertyCatalog/listingLocaleText/update/:id
  • Delete Route: /dashboard/propertyCatalog/listingLocaleText/delete/:id

AdminPanel Service Data Objects

Service Overview

  • Service Name: adminPanel
  • Service Display Name: AdminPanel
  • Total Data Objects: 6

Data Objects

LocalizationSetting Data Object

Basic Information

  • Object Name: localizationSetting
  • Display Name: LocalizationSetting
  • Component Name: AdminPanelLocalizationSettingAppPage
  • Description: Admin-configured valid languages/currencies for site usage and preference.

Object Properties

Property Name Type Required Default Definition

| languageCode | String | | N/A | ISO 639-1 language code (e.g., 'en', 'fr'). |

| effectiveFrom | Date | | N/A | Start datetime this setting becomes effective. |

| effectiveTo | Date | | N/A | End datetime this setting is valid (null=open ended). |

| currencyCode | String | | N/A | ISO 4217 currency code (e.g., 'USD', 'EUR'). |

| isCurrencyActive | Boolean | | N/A | Is currency enabled for offer/usage? |

Generated UI Components

  • List Component: AdminPanelLocalizationSettingAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AdminPanelLocalizationSettingAppPageCreateModal - Form for creating new records
  • Update Modal: AdminPanelLocalizationSettingAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AdminPanelLocalizationSettingAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /localizationSetting/list - Retrieve paginated list of records
  • Get: GET /localizationSetting/get - Retrieve single record by ID
  • Create: POST /localizationSetting/create - Create new record
  • Update: PUT /localizationSetting/update - Update existing record
  • Delete: DELETE /localizationSetting/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/adminPanel/localizationSetting
  • Create Route: /dashboard/adminPanel/localizationSetting/create
  • Update Route: /dashboard/adminPanel/localizationSetting/update/:id
  • Delete Route: /dashboard/adminPanel/localizationSetting/delete/:id

AdminDisputeAction Data Object

Basic Information

  • Object Name: adminDisputeAction
  • Display Name: AdminDisputeAction
  • Component Name: AdminPanelAdminDisputeActionAppPage
  • Description: Record of an admin's moderation/decision action on a dispute.

Object Properties

Property Name Type Required Default Definition

| disputeId | ID | | N/A | Dispute (from bookingManagement:dispute) referenced by this action. |

| actionTaken | String | | N/A | Action performed (e.g., 'approvedRefund', 'requestedEvidence', 'closedDispute'). |

| notes | Text | | N/A | Admin notes or reasoning for this action (for audit trail/auditLog). |

| adminId | ID | | N/A | Admin user performing action. |

| outcome | String | | N/A | Outcome, summary, or state after action (e.g., 'refund_issued', 'rejected', 'dispute_closed'). |

| actionDate | Date | | N/A | Timestamp of action (UTC). |

Generated UI Components

  • List Component: AdminPanelAdminDisputeActionAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AdminPanelAdminDisputeActionAppPageCreateModal - Form for creating new records
  • Update Modal: AdminPanelAdminDisputeActionAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AdminPanelAdminDisputeActionAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /adminDisputeAction/list - Retrieve paginated list of records
  • Get: GET /adminDisputeAction/get - Retrieve single record by ID
  • Create: POST /adminDisputeAction/create - Create new record
  • Update: PUT /adminDisputeAction/update - Update existing record
  • Delete: DELETE /adminDisputeAction/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/adminPanel/adminDisputeAction
  • Create Route: /dashboard/adminPanel/adminDisputeAction/create
  • Update Route: /dashboard/adminPanel/adminDisputeAction/update/:id
  • Delete Route: /dashboard/adminPanel/adminDisputeAction/delete/:id

ApiKey Data Object

Basic Information

  • Object Name: apiKey
  • Display Name: ApiKey
  • Component Name: AdminPanelApiKeyAppPage
  • Description: Admin-generated API key for internal/external integration—has revocation, audit trail.

Object Properties

Property Name Type Required Default Definition

| key | String | | N/A | API key string (generated, unique). |

| active | Boolean | | N/A | Is the API key currently active? |

| description | String | | N/A | Description/label for the API key/purpose. |

| revokedAt | Date | | N/A | UTC time this key was revoked. |

| createdBy | ID | | N/A | Admin user who generated the key. |

Generated UI Components

  • List Component: AdminPanelApiKeyAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AdminPanelApiKeyAppPageCreateModal - Form for creating new records
  • Update Modal: AdminPanelApiKeyAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AdminPanelApiKeyAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /apiKey/list - Retrieve paginated list of records
  • Get: GET /apiKey/get - Retrieve single record by ID
  • Create: POST /apiKey/create - Create new record
  • Update: PUT /apiKey/update - Update existing record
  • Delete: DELETE /apiKey/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/adminPanel/apiKey
  • Create Route: /dashboard/adminPanel/apiKey/create
  • Update Route: /dashboard/adminPanel/apiKey/update/:id
  • Delete Route: /dashboard/adminPanel/apiKey/delete/:id

FinancialReport Data Object

Basic Information

  • Object Name: financialReport
  • Display Name: FinancialReport
  • Component Name: AdminPanelFinancialReportAppPage
  • Description: System-generated or admin-generated report snapshots of platform financials for a given period (GDPR/tax).

Object Properties

Property Name Type Required Default Definition

| period | String | | N/A | Reporting period (e.g., '2025-Q1', '2025-05') |

| cityTaxByLocation | Object | | N/A | Breakdown object for city/local/tourism taxes within period (e.g., {"Paris": 1200, "New York": 940}). |

| totalPayouts | Double | | N/A | Total host payouts (for report currency/period). |

| createdBy | ID | | N/A | Admin/automated process that created the report. |

| totalRefunds | Double | | N/A | Total amount refunded during report period (currency match report). |

| currency | String | | N/A | ISO 4217 currency code for report (e.g., 'USD', 'EUR'). |

| generatedAt | Date | | N/A | Timestamp when report was generated. |

| totalRevenue | Double | | N/A | Total gross revenue (in report currency) for period. |

Generated UI Components

  • List Component: AdminPanelFinancialReportAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AdminPanelFinancialReportAppPageCreateModal - Form for creating new records
  • Update Modal: AdminPanelFinancialReportAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AdminPanelFinancialReportAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /financialReport/list - Retrieve paginated list of records
  • Get: GET /financialReport/get - Retrieve single record by ID
  • Create: POST /financialReport/create - Create new record
  • Update: PUT /financialReport/update - Update existing record
  • Delete: DELETE /financialReport/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/adminPanel/financialReport
  • Create Route: /dashboard/adminPanel/financialReport/create
  • Update Route: /dashboard/adminPanel/financialReport/update/:id
  • Delete Route: /dashboard/adminPanel/financialReport/delete/:id

AuditLog Data Object

Basic Information

  • Object Name: auditLog
  • Display Name: AuditLog
  • Component Name: AdminPanelAuditLogAppPage
  • Description: Immutable audit log for recording sensitive admin actions and platform changes.

Object Properties

Property Name Type Required Default Definition

| performedBy | ID | | N/A | User (usually admin) who performed the action. |

| objectId | ID | | N/A | ID of the affected object (e.g., reviewId, disputeId, apiKeyId). |

| details | Object | | N/A | Free-form object containing action details, parameters, or change snapshot. |

| ipAddress | String | | N/A | IP address/address metadata of performer (for compliance tracing). |

| actionObject | String | | N/A | Object/type this action refers to (e.g. 'review', 'dispute', 'apiKey'). |

| occurredAt | Date | | N/A | UTC timestamp of the action. |

| actionType | String | | N/A | Type of action (e.g., 'approveDispute', 'financialExport', 'updateReviewStatus'). |

Generated UI Components

  • List Component: AdminPanelAuditLogAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AdminPanelAuditLogAppPageCreateModal - Form for creating new records
  • Update Modal: AdminPanelAuditLogAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AdminPanelAuditLogAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /auditLog/list - Retrieve paginated list of records
  • Get: GET /auditLog/get - Retrieve single record by ID
  • Create: POST /auditLog/create - Create new record
  • Update: PUT /auditLog/update - Update existing record
  • Delete: DELETE /auditLog/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/adminPanel/auditLog
  • Create Route: /dashboard/adminPanel/auditLog/create
  • Update Route: /dashboard/adminPanel/auditLog/update/:id
  • Delete Route: /dashboard/adminPanel/auditLog/delete/:id

GdprAction Data Object

Basic Information

  • Object Name: gdprAction
  • Display Name: GdprAction
  • Component Name: AdminPanelGdprActionAppPage
  • Description: Record of individual user GDPR/consent/export/delete request flow. Used for logs, compliance, and controls.

Object Properties

Property Name Type Required Default Definition

| requestedAt | Date | | N/A | Datetime when user made the request. |

| status | Enum | | N/A | GDPR request status: pending, complete, or failed. |

| actionType | String | | N/A | Type of GDPR request: export, delete, consent-change. |

| userId | ID | | N/A | User who submitted this request. |

| processedAt | Date | | N/A | Datetime when handled or process complete/logged. |

Enum Properties

status Enum Property

Property Definition: GDPR request status: pending, complete, or failed.

Enum Options

Name Value Index

| pending | "pending" | 0 |

| complete | "complete" | 1 |

| failed | "failed" | 2 |

Generated UI Components

  • List Component: AdminPanelGdprActionAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AdminPanelGdprActionAppPageCreateModal - Form for creating new records
  • Update Modal: AdminPanelGdprActionAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AdminPanelGdprActionAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /gdprAction/list - Retrieve paginated list of records
  • Get: GET /gdprAction/get - Retrieve single record by ID
  • Create: POST /gdprAction/create - Create new record
  • Update: PUT /gdprAction/update - Update existing record
  • Delete: DELETE /gdprAction/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/adminPanel/gdprAction
  • Create Route: /dashboard/adminPanel/gdprAction/create
  • Update Route: /dashboard/adminPanel/gdprAction/update/:id
  • Delete Route: /dashboard/adminPanel/gdprAction/delete/:id

BookingManagement Service Data Objects

Service Overview

  • Service Name: bookingManagement
  • Service Display Name: BookingManagement
  • Total Data Objects: 6

Data Objects

Reservation Data Object

Basic Information

  • Object Name: reservation
  • Display Name: Reservation
  • Component Name: BookingManagementReservationAppPage
  • Description: Represents a guest's booking for a property listing, including dates, participants, approval/payment/dispute status, and iCal sync info...

Object Properties

Property Name Type Required Default Definition

| listingId | ID | | N/A | Property being booked. |

| approvalType | Enum | | N/A | Reservation requires instant approval (0) or host/manual (1). |

| bookingStatus | Enum | | N/A | Current status of reservation (0: pending, 1: confirmed, 2: complete, 3: cancelled, 4: declined). |

| hostId | ID | | N/A | Host user for the property (listing owner at booking creation). |

| checkOut | Date | | N/A | Check-out date (YYYY-MM-DD, exclusive). |

| guestId | ID | | N/A | User making the reservation (guest). |

| checkIn | Date | | N/A | Check-in date (YYYY-MM-DD). |

| currency | String | | N/A | Currency code (ISO 4217). |

| guestCount | Integer | | N/A | Number of guests for this reservation. |

| totalPrice | Double | | N/A | Total price for reservation (including fees/taxes). |

| iCalExportUrl | String | | N/A | URL for iCal .ics export for guest/host calendar sync. |

| disputeStatus | Enum | | N/A | Current dispute status on reservation (0: none, 1: requested, 2: active, 3: resolved). |

| bookingPoliciesSnapshot | Object | | N/A | Snapshot of listing booking policies at booking time (for dispute/reference). |

| iCalImportSource | String | | N/A | (Optional) iCal import source URL for syncing external calendars. |

| cancellationPolicySnapshot | Object | | N/A | Snapshot of listing cancellation policy at booking time. |

| _paymentConfirmation | Enum | | N/A | An automatic property that is used to check the confirmed status of the payment set by webhooks. |

Enum Properties

approvalType Enum Property

Property Definition: Reservation requires instant approval (0) or host/manual (1).

Enum Options

Name Value Index

| instant | "instant" | 0 |

| manual | "manual" | 1 |

bookingStatus Enum Property

Property Definition: Current status of reservation (0: pending, 1: confirmed, 2: complete, 3: cancelled, 4: declined).

Enum Options

Name Value Index

| pending | "pending" | 0 |

| confirmed | "confirmed" | 1 |

| complete | "complete" | 2 |

| cancelled | "cancelled" | 3 |

| declined | "declined" | 4 |

disputeStatus Enum Property

Property Definition: Current dispute status on reservation (0: none, 1: requested, 2: active, 3: resolved).

Enum Options

Name Value Index

| none | "none" | 0 |

| requested | "requested" | 1 |

| active | "active" | 2 |

| resolved | "resolved" | 3 |

_paymentConfirmation Enum Property

Property Definition: An automatic property that is used to check the confirmed status of the payment set by webhooks.

Enum Options

Name Value Index

| pending | "pending" | 0 |

| processing | "processing" | 1 |

| paid | "paid" | 2 |

| canceled | "canceled" | 3 |

Generated UI Components

  • List Component: BookingManagementReservationAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: BookingManagementReservationAppPageCreateModal - Form for creating new records
  • Update Modal: BookingManagementReservationAppPageUpdateModal - Form for editing existing records
  • Delete Modal: BookingManagementReservationAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /reservation/list - Retrieve paginated list of records
  • Get: GET /reservation/get - Retrieve single record by ID
  • Create: POST /reservation/create - Create new record
  • Update: PUT /reservation/update - Update existing record
  • Delete: DELETE /reservation/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/bookingManagement/reservation
  • Create Route: /dashboard/bookingManagement/reservation/create
  • Update Route: /dashboard/bookingManagement/reservation/update/:id
  • Delete Route: /dashboard/bookingManagement/reservation/delete/:id

PaymentRecord Data Object

Basic Information

  • Object Name: paymentRecord
  • Display Name: PaymentRecord
  • Component Name: BookingManagementPaymentRecordAppPage
  • Description: Stores payment and payout records (Stripe-driven) linked to a reservation (guest booking), including platform fees, taxes, host payouts, and status updates. Immutable after creation, never hard deleted.

Object Properties

Property Name Type Required Default Definition

| reservationId | ID | | N/A | Reservation this payment refers to. |

| stripeChargeId | String | | N/A | Stripe charge object ID, if payment succeeded. |

| payoutAmountHost | Double | | N/A | Amount paid out to host user (after platform fees/taxes). |

| paymentIntentId | String | | N/A | Payment intent ID from Stripe (for validation, refunds, disputes). |

| currency | String | | N/A | Currency (ISO 4217) of payment. |

| cityTax | Double | | N/A | City/locality tax portion for the booking. |

| refundAmount | Double | | N/A | Refunded amount, if booking is cancelled/disputed. |

| amountPaid | Double | | N/A | Total amount paid by guest (including fees/taxes, in cents). |

| paymentStatus | Enum | | N/A | Status of payment (0: pending, 1: paid, 2: refunded, 3: failed). |

| platformFee | Double | | N/A | Platform fee deducted from amount paid by guest. |

| paymentDate | Date | | N/A | UTC datetime of payment/refund event. |

Enum Properties

paymentStatus Enum Property

Property Definition: Status of payment (0: pending, 1: paid, 2: refunded, 3: failed).

Enum Options

Name Value Index

| pending | "pending" | 0 |

| paid | "paid" | 1 |

| refunded | "refunded" | 2 |

| failed | "failed" | 3 |

Generated UI Components

  • List Component: BookingManagementPaymentRecordAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: BookingManagementPaymentRecordAppPageCreateModal - Form for creating new records
  • Update Modal: BookingManagementPaymentRecordAppPageUpdateModal - Form for editing existing records
  • Delete Modal: BookingManagementPaymentRecordAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /paymentRecord/list - Retrieve paginated list of records
  • Get: GET /paymentRecord/get - Retrieve single record by ID
  • Create: POST /paymentRecord/create - Create new record
  • Update: PUT /paymentRecord/update - Update existing record
  • Delete: DELETE /paymentRecord/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/bookingManagement/paymentRecord
  • Create Route: /dashboard/bookingManagement/paymentRecord/create
  • Update Route: /dashboard/bookingManagement/paymentRecord/update/:id
  • Delete Route: /dashboard/bookingManagement/paymentRecord/delete/:id

Dispute Data Object

Basic Information

  • Object Name: dispute
  • Display Name: Dispute
  • Component Name: BookingManagementDisputeAppPage
  • Description: Represents a dispute, refund request, or booking issue reported by guest/host/admin for a reservation. Flows to admin for handling, resolves with resolutionStatus and reference to any refund/payment involved.

Object Properties

Property Name Type Required Default Definition

| reportedAt | Date | | N/A | Datetime when dispute was initiated. |

| reservationId | ID | | N/A | Reservation being disputed. |

| raisedBy | ID | | N/A | User who reported or opened dispute (guest/host). |

| adminId | ID | | N/A | Admin assigned for resolution, if any. |

| issueType | String | | N/A | Free-form or predefined dispute/refund type (e.g. refund, property damage, host no-show). |

| description | Text | | N/A | Dispute description for admin review, evidence, etc. |

| relatedPaymentId | ID | | N/A | Linked payment record (for referencing refund or adjustment). |

| resolutionStatus | Enum | | N/A | Dispute resolution state (0: pending, 1: reviewing, 2: resolved, 3: rejected). |

| resolvedAt | Date | | N/A | When the dispute was resolved (populated if resolutionStatus changed to resolved/rejected). |

| refundApproved | Boolean | | N/A | If a refund has been approved by admin for this dispute. |

Enum Properties

resolutionStatus Enum Property

Property Definition: Dispute resolution state (0: pending, 1: reviewing, 2: resolved, 3: rejected).

Enum Options

Name Value Index

| pending | "pending" | 0 |

| reviewing | "reviewing" | 1 |

| resolved | "resolved" | 2 |

| rejected | "rejected" | 3 |

Generated UI Components

  • List Component: BookingManagementDisputeAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: BookingManagementDisputeAppPageCreateModal - Form for creating new records
  • Update Modal: BookingManagementDisputeAppPageUpdateModal - Form for editing existing records
  • Delete Modal: BookingManagementDisputeAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /dispute/list - Retrieve paginated list of records
  • Get: GET /dispute/get - Retrieve single record by ID
  • Create: POST /dispute/create - Create new record
  • Update: PUT /dispute/update - Update existing record
  • Delete: DELETE /dispute/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/bookingManagement/dispute
  • Create Route: /dashboard/bookingManagement/dispute/create
  • Update Route: /dashboard/bookingManagement/dispute/update/:id
  • Delete Route: /dashboard/bookingManagement/dispute/delete/:id

Sys_reservationPayment Data Object

Basic Information

  • Object Name: sys_reservationPayment
  • Display Name: Sys_reservationPayment
  • Component Name: BookingManagementSys_reservationPaymentAppPage
  • Description: A payment storage object to store the payment life cyle of orders based on reservation object. It is autocreated based on the source object's checkout config

Object Properties

Property Name Type Required Default Definition

| ownerId | ID | | N/A | * An ID value to represent owner user who created the order* |

| orderId | ID | | N/A | an ID value to represent the orderId which is the ID parameter of the source reservation object |

| paymentId | String | | N/A | A String value to represent the paymentId which is generated on the Stripe gateway. This id may represent different objects due to the payment gateway and the chosen flow type |

| paymentStatus | String | | N/A | A string value to represent the payment status which belongs to the lifecyle of a Stripe payment. |

| statusLiteral | String | | N/A | A string value to represent the logical payment status which belongs to the application lifecycle itself. |

| redirectUrl | String | | N/A | A string value to represent return page of the frontend to show the result of the payment, this is used when the callback is made to server not the client. |

Generated UI Components

  • List Component: BookingManagementSys_reservationPaymentAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: BookingManagementSys_reservationPaymentAppPageCreateModal - Form for creating new records
  • Update Modal: BookingManagementSys_reservationPaymentAppPageUpdateModal - Form for editing existing records
  • Delete Modal: BookingManagementSys_reservationPaymentAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /sys_reservationPayment/list - Retrieve paginated list of records
  • Get: GET /sys_reservationPayment/get - Retrieve single record by ID
  • Create: POST /sys_reservationPayment/create - Create new record
  • Update: PUT /sys_reservationPayment/update - Update existing record
  • Delete: DELETE /sys_reservationPayment/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/bookingManagement/sys_reservationPayment
  • Create Route: /dashboard/bookingManagement/sys_reservationPayment/create
  • Update Route: /dashboard/bookingManagement/sys_reservationPayment/update/:id
  • Delete Route: /dashboard/bookingManagement/sys_reservationPayment/delete/:id

Sys_paymentCustomer Data Object

Basic Information

  • Object Name: sys_paymentCustomer
  • Display Name: Sys_paymentCustomer
  • Component Name: BookingManagementSys_paymentCustomerAppPage
  • Description: A payment storage object to store the customer values of the payment platform

Object Properties

Property Name Type Required Default Definition

| userId | ID | | N/A | * An ID value to represent the user who is created as a stripe customer* |

| customerId | String | | N/A | A string value to represent the customer id which is generated on the Stripe gateway. This id is used to represent the customer in the Stripe gateway |

| platform | String | | N/A | A String value to represent payment platform which is used to make the payment. It is stripe as default. It will be used to distinguesh the payment gateways in the future. |

Generated UI Components

  • List Component: BookingManagementSys_paymentCustomerAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: BookingManagementSys_paymentCustomerAppPageCreateModal - Form for creating new records
  • Update Modal: BookingManagementSys_paymentCustomerAppPageUpdateModal - Form for editing existing records
  • Delete Modal: BookingManagementSys_paymentCustomerAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /sys_paymentCustomer/list - Retrieve paginated list of records
  • Get: GET /sys_paymentCustomer/get - Retrieve single record by ID
  • Create: POST /sys_paymentCustomer/create - Create new record
  • Update: PUT /sys_paymentCustomer/update - Update existing record
  • Delete: DELETE /sys_paymentCustomer/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/bookingManagement/sys_paymentCustomer
  • Create Route: /dashboard/bookingManagement/sys_paymentCustomer/create
  • Update Route: /dashboard/bookingManagement/sys_paymentCustomer/update/:id
  • Delete Route: /dashboard/bookingManagement/sys_paymentCustomer/delete/:id

Sys_paymentMethod Data Object

Basic Information

  • Object Name: sys_paymentMethod
  • Display Name: Sys_paymentMethod
  • Component Name: BookingManagementSys_paymentMethodAppPage
  • Description: A payment storage object to store the payment methods of the platform customers

Object Properties

Property Name Type Required Default Definition

| paymentMethodId | String | | N/A | A string value to represent the id of the payment method on the payment platform. |

| userId | ID | | N/A | * An ID value to represent the user who owns the payment method* |

| customerId | String | | N/A | A string value to represent the customer id which is generated on the payment gateway. |

| cardHolderName | String | | N/A | A string value to represent the name of the card holder. It can be different than the registered customer. |

| cardHolderZip | String | | N/A | A string value to represent the zip code of the card holder. It is used for address verification in specific countries. |

| platform | String | | N/A | A String value to represent payment platform which teh paymentMethod belongs. It is stripe as default. It will be used to distinguesh the payment gateways in the future. |

| cardInfo | Object | | N/A | A Json value to store the card details of the payment method. |

Generated UI Components

  • List Component: BookingManagementSys_paymentMethodAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: BookingManagementSys_paymentMethodAppPageCreateModal - Form for creating new records
  • Update Modal: BookingManagementSys_paymentMethodAppPageUpdateModal - Form for editing existing records
  • Delete Modal: BookingManagementSys_paymentMethodAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /sys_paymentMethod/list - Retrieve paginated list of records
  • Get: GET /sys_paymentMethod/get - Retrieve single record by ID
  • Create: POST /sys_paymentMethod/create - Create new record
  • Update: PUT /sys_paymentMethod/update - Update existing record
  • Delete: DELETE /sys_paymentMethod/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/bookingManagement/sys_paymentMethod
  • Create Route: /dashboard/bookingManagement/sys_paymentMethod/create
  • Update Route: /dashboard/bookingManagement/sys_paymentMethod/update/:id
  • Delete Route: /dashboard/bookingManagement/sys_paymentMethod/delete/:id

ReviewSystem Service Data Objects

Service Overview

  • Service Name: reviewSystem
  • Service Display Name: ReviewSystem
  • Total Data Objects: 2

Data Objects

ReviewAggregate Data Object

Basic Information

  • Object Name: reviewAggregate
  • Display Name: ReviewAggregate
  • Component Name: ReviewSystemReviewAggregateAppPage
  • Description: Cached aggregate rating stats for a listing, host, or guest. Used for fast lookup and display of averages, counts, etc.

Object Properties

Property Name Type Required Default Definition

| revieweeId | ID | | N/A | Listing or user profile receiving aggregate. |

| revieweeType | Enum | | N/A | Type of aggregate: host/listing/guest/profile. |

| averageRating | Double | | N/A | Numeric average of all published & approved review ratings for target entity. |

| reviewCount | Integer | | N/A | Count of reviews for this listing or profile (where published & approved). |

| visibilityStatus | Enum | | N/A | Should this rating be public or hidden (due to moderation, privacy, lack of reviews)? |

Enum Properties

revieweeType Enum Property

Property Definition: Type of aggregate: host/listing/guest/profile.

Enum Options

Name Value Index

| host | "host" | 0 |

| guest | "guest" | 1 |

| listing | "listing" | 2 |

visibilityStatus Enum Property

Property Definition: Should this rating be public or hidden (due to moderation, privacy, lack of reviews)?

Enum Options

Name Value Index

| public | "public" | 0 |

| hidden | "hidden" | 1 |

Generated UI Components

  • List Component: ReviewSystemReviewAggregateAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: ReviewSystemReviewAggregateAppPageCreateModal - Form for creating new records
  • Update Modal: ReviewSystemReviewAggregateAppPageUpdateModal - Form for editing existing records
  • Delete Modal: ReviewSystemReviewAggregateAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /reviewAggregate/list - Retrieve paginated list of records
  • Get: GET /reviewAggregate/get - Retrieve single record by ID
  • Create: POST /reviewAggregate/create - Create new record
  • Update: PUT /reviewAggregate/update - Update existing record
  • Delete: DELETE /reviewAggregate/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/reviewSystem/reviewAggregate
  • Create Route: /dashboard/reviewSystem/reviewAggregate/create
  • Update Route: /dashboard/reviewSystem/reviewAggregate/update/:id
  • Delete Route: /dashboard/reviewSystem/reviewAggregate/delete/:id

Review Data Object

Basic Information

  • Object Name: review
  • Display Name: Review
  • Component Name: ReviewSystemReviewAppPage
  • Description: Review submitted by a guest or host after a completed stay. Enables double-blind, supports moderation, and links to reservation/listing and users.

Object Properties

Property Name Type Required Default Definition

| moderationStatus | Enum | | N/A | Review moderation status: pending, approved, rejected. |

| isPublished | Boolean | | N/A | True if review is visible (published by double-blind business logic and moderation). |

| reviewText | Text | | N/A | Full review content written by reviewer. |

| rating | Integer | | N/A | Numeric rating (e.g. 1-5 stars or 1-10 scale). |

| blindSubmissionCode | String | | N/A | Random token used for double-blind: links the pair of reviews for a reservation (hidden until both submit or timer expires). |

| revieweeId | ID | | N/A | User or listing being reviewed (host/guest or listing). |

| reservationId | ID | | N/A | Booking this review is about. |

| reviewerId | ID | | N/A | User writing this review (host/guest of reservation). |

| revieweeType | Enum | | N/A | Entity being reviewed: host, guest, or listing. |

| submittedAt | Date | | N/A | Timestamp when review was created/submitted. |

Enum Properties

moderationStatus Enum Property

Property Definition: Review moderation status: pending, approved, rejected.

Enum Options

Name Value Index

| pending | "pending" | 0 |

| approved | "approved" | 1 |

| rejected | "rejected" | 2 |

revieweeType Enum Property

Property Definition: Entity being reviewed: host, guest, or listing.

Enum Options

Name Value Index

| host | "host" | 0 |

| guest | "guest" | 1 |

| listing | "listing" | 2 |

Generated UI Components

  • List Component: ReviewSystemReviewAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: ReviewSystemReviewAppPageCreateModal - Form for creating new records
  • Update Modal: ReviewSystemReviewAppPageUpdateModal - Form for editing existing records
  • Delete Modal: ReviewSystemReviewAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /review/list - Retrieve paginated list of records
  • Get: GET /review/get - Retrieve single record by ID
  • Create: POST /review/create - Create new record
  • Update: PUT /review/update - Update existing record
  • Delete: DELETE /review/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/reviewSystem/review
  • Create Route: /dashboard/reviewSystem/review/create
  • Update Route: /dashboard/reviewSystem/review/update/:id
  • Delete Route: /dashboard/reviewSystem/review/delete/:id

Auth Service Data Objects

Service Overview

  • Service Name: auth
  • Service Display Name: Auth
  • Total Data Objects: 3

Data Objects

User Data Object

Basic Information

  • Object Name: user
  • Display Name: User
  • Component Name: AuthUserAppPage
  • Description: A data object that stores the user information and handles login settings.

Object Properties

Property Name Type Required Default Definition

| email | String | | N/A | * A string value to represent the user's email.* |

| password | String | | N/A | * A string value to represent the user's password. It will be stored as hashed.* |

| fullname | String | | N/A | A string value to represent the fullname of the user |

| avatar | String | | N/A | The avatar url of the user. A random avatar will be generated if not provided |

| roleId | String | | N/A | A string value to represent the roleId of the user. |

| emailVerified | Boolean | | N/A | A boolean value to represent the email verification status of the user. |

Generated UI Components

  • List Component: AuthUserAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AuthUserAppPageCreateModal - Form for creating new records
  • Update Modal: AuthUserAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AuthUserAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /user/list - Retrieve paginated list of records
  • Get: GET /user/get - Retrieve single record by ID
  • Create: POST /user/create - Create new record
  • Update: PUT /user/update - Update existing record
  • Delete: DELETE /user/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/auth/user
  • Create Route: /dashboard/auth/user/create
  • Update Route: /dashboard/auth/user/update/:id
  • Delete Route: /dashboard/auth/user/delete/:id

UserGroup Data Object

Basic Information

  • Object Name: userGroup
  • Display Name: UserGroup
  • Component Name: AuthUserGroupAppPage
  • Description: A data object that stores the user group information.

Object Properties

Property Name Type Required Default Definition

| groupName | String | | N/A | * A string value to represent the group name.* |

| avatar | String | | N/A | * A string value to represent the groups icon.* |

Generated UI Components

  • List Component: AuthUserGroupAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AuthUserGroupAppPageCreateModal - Form for creating new records
  • Update Modal: AuthUserGroupAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AuthUserGroupAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /userGroup/list - Retrieve paginated list of records
  • Get: GET /userGroup/get - Retrieve single record by ID
  • Create: POST /userGroup/create - Create new record
  • Update: PUT /userGroup/update - Update existing record
  • Delete: DELETE /userGroup/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/auth/userGroup
  • Create Route: /dashboard/auth/userGroup/create
  • Update Route: /dashboard/auth/userGroup/update/:id
  • Delete Route: /dashboard/auth/userGroup/delete/:id

UserGroupMember Data Object

Basic Information

  • Object Name: userGroupMember
  • Display Name: UserGroupMember
  • Component Name: AuthUserGroupMemberAppPage
  • Description: A data object that stores the members of the user group.

Object Properties

Property Name Type Required Default Definition

| groupId | ID | | N/A | * An ID value to represent the group that the user is asssigned as a memeber to.* |

| userId | ID | | N/A | * An ID value to represent the user that is assgined as a member to the group.* |

| ownerId | ID | | N/A | An ID value to represent the admin user who assgined the member. |

Generated UI Components

  • List Component: AuthUserGroupMemberAppPageList - Displays paginated data with filtering and sorting
  • Create Modal: AuthUserGroupMemberAppPageCreateModal - Form for creating new records
  • Update Modal: AuthUserGroupMemberAppPageUpdateModal - Form for editing existing records
  • Delete Modal: AuthUserGroupMemberAppPageDeleteModal - Confirmation dialog for deletion

API Endpoints

  • List: GET /userGroupMember/list - Retrieve paginated list of records
  • Get: GET /userGroupMember/get - Retrieve single record by ID
  • Create: POST /userGroupMember/create - Create new record
  • Update: PUT /userGroupMember/update - Update existing record
  • Delete: DELETE /userGroupMember/delete - Delete record by ID

Route Configuration

  • List Route: /dashboard/auth/userGroupMember
  • Create Route: /dashboard/auth/userGroupMember/create
  • Update Route: /dashboard/auth/userGroupMember/update/:id
  • Delete Route: /dashboard/auth/userGroupMember/delete/:id

CRUD Operations

Create Operations

Create Form Implementation

// Create forms are generated as lazy-loaded modal components
// Basic form fields are rendered based on data object properties

Create API Integration

// Create operations are handled through service-specific API calls
// Basic validation is performed client-side

Read Operations

List View Implementation

// List views are implemented using MUI DataGrid
// Data is fetched through service-specific API calls

Update Operations

Update Form Implementation

// Update forms are generated as lazy-loaded modal components
// Basic form fields are pre-populated with existing data

Update API Integration

// Update operations are handled through service-specific API calls
// Basic validation is performed client-side

Delete Operations

Delete Implementation

// Delete operations are handled through service-specific API calls
// Confirmation dialogs are implemented as modal components

Data Validation

Client-Side Validation

Validation Implementation

// Basic validation is performed on form fields
// Required fields are validated before submission

Server-Side Validation Integration

API Error Handling

// Server validation errors are displayed to users
// Error messages are shown in the UI components

Data Relationships

Relationship Management

Relationship Implementation

// Basic data relationships are handled through form fields
// Related data is displayed in select components

User Experience Patterns

Loading States

Loading Implementation

// Loading states are handled by MUI DataGrid
// Skeleton loading is provided by the data grid component

Error States

Error Handling UI

// Error states are displayed through UI components
// Error messages are shown to users

Empty States

Empty State UI

// Empty states are handled by MUI DataGrid
// Empty content is displayed when no data is available

Performance Optimization

Data Pagination

Pagination Implementation

// Pagination is handled by MUI DataGrid
// Data is loaded in pages as needed