SERVICE INTEGRATION GUIDE
Airbnb Admin Panel
This document provides detailed information about how the Airbnb Admin Panel integrates with backend services, including configuration, API communication patterns, and service-specific implementation details.
Architectural Design Credit and Contact Information
The architectural design of this service integration is credited to Mindbricks Genesis Engine.
We encourage open communication and welcome any questions or discussions related to the architectural aspects of this service integration.
Documentation Scope
This guide covers the complete integration architecture between the Airbnb Admin Panel and its backend services. It includes configuration management, API communication patterns, authentication flows, and service-specific implementation details.
Intended Audience
This documentation is intended for frontend developers, DevOps engineers, and system integrators who need to understand, configure, or extend the admin panel's service integration capabilities.
Service Integration Architecture
Overview
The admin panel integrates with backend services through service-specific HTTP clients. Each service is configured via environment variables and uses its own Axios instance for API communication.
Integration Components
Service Configuration
- Service URLs configured via environment variables
- Service-specific Axios instances for API communication
API Communication
- Basic HTTP client instances per service
- Simple error handling through response interceptors
Service Configuration
Environment Variables
The admin panel uses environment variables to configure service endpoints and integration settings:
Core Configuration
# Application Configuration
VITE_APP_NAME="Airbnb Admin Panel"
VITE_APP_VERSION="1.2.91"
VITE_ASSETS_DIR="/assets"
**Service Endpoints**
```bash
# Messaging Service
VITE_MESSAGING_SERVICE_URL="https://messaging-api.airbnb3.prod.mindbricks.com"
```bash
# PropertyCatalog Service
VITE_PROPERTYCATALOG_SERVICE_URL="https://propertyCatalog-api.airbnb3.prod.mindbricks.com"
```bash
# AdminPanel Service
VITE_ADMINPANEL_SERVICE_URL="https://adminPanel-api.airbnb3.prod.mindbricks.com"
```bash
# BookingManagement Service
VITE_BOOKINGMANAGEMENT_SERVICE_URL="https://bookingManagement-api.airbnb3.prod.mindbricks.com"
```bash
# ReviewSystem Service
VITE_REVIEWSYSTEM_SERVICE_URL="https://reviewSystem-api.airbnb3.prod.mindbricks.com"
```bash
# Auth Service
VITE_AUTH_SERVICE_URL="https://auth-api.airbnb3.prod.mindbricks.com"
API Communication Patterns
HTTP Client Configuration
Service-Specific Axios Instances
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const messagingAxiosInstance = axios.create({
baseURL: CONFIG.messagingServiceUrl
});
messagingAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default messagingAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const propertyCatalogAxiosInstance = axios.create({
baseURL: CONFIG.propertyCatalogServiceUrl
});
propertyCatalogAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default propertyCatalogAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const adminPanelAxiosInstance = axios.create({
baseURL: CONFIG.adminPanelServiceUrl
});
adminPanelAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default adminPanelAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const bookingManagementAxiosInstance = axios.create({
baseURL: CONFIG.bookingManagementServiceUrl
});
bookingManagementAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default bookingManagementAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const reviewSystemAxiosInstance = axios.create({
baseURL: CONFIG.reviewSystemServiceUrl
});
reviewSystemAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default reviewSystemAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const authAxiosInstance = axios.create({
baseURL: CONFIG.authServiceUrl
});
authAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default authAxiosInstance;
Service Endpoints
Messaging Service Endpoints
export const messagingEndpoints = {
messageThread: {
createMessageThread: '/v1/messagethreads'
,
updateMessageThread: '/v1/messagethreads/:messageThreadId'
,
deleteMessageThread: '/v1/messagethreads/:messageThreadId'
,
getMessageThread: '/v1/messagethreads/:messageThreadId'
,
listMessageThreads: '/v1/messagethreads'
},
messageReport: {
listMessageReports: '/v1/messagereports'
,
createMessageReport: '/v1/messagereports'
,
updateMessageReport: '/v1/messagereports/:messageReportId'
,
getMessageReport: '/v1/messagereports/:messageReportId'
},
message: {
deleteMessage: '/v1/messages/:messageId'
,
updateMessage: '/v1/messages/:messageId'
,
createMessage: '/v1/messages'
,
getMessage: '/v1/messages/:messageId'
,
getThreadMessages: '/v1/threadmessages/:threadId'
,
gotthreadMessages: '/v1/gotthreadmessages/:threadId'
}
};
PropertyCatalog Service Endpoints
export const propertyCatalogEndpoints = {
listingCalendar: {
updateListingCalendar: '/v1/listingcalendars/:listingCalendarId'
,
createListingCalendar: '/v1/listingcalendars'
,
deleteListingCalendar: '/v1/listingcalendars/:listingCalendarId'
,
getListingCalendar: '/v1/listingcalendars/:listingCalendarId'
,
listListingCalendars: '/v1/listingcalendars'
},
listingAmenity: {
listListingAmenities: '/v1/listingamenities'
,
updateListingAmenity: '/v1/listingamenities/:listingAmenityId'
,
getListingAmenity: '/v1/listingamenities/:listingAmenityId'
,
createListingAmenity: '/v1/listingamenities'
,
deleteListingAmenity: '/v1/listingamenities/:listingAmenityId'
},
listing: {
updateListing: '/v1/listings/:listingId'
,
createListing: '/v1/listings'
,
deleteListing: '/v1/listings/:listingId'
,
listListings: '/v1/listings'
,
getListing: '/v1/listings/:listingId'
},
listingLocaleText: {
createListingLocaleText: '/v1/listinglocaletexts'
,
deleteListingLocaleText: '/v1/listinglocaletexts/:listingLocaleTextId'
,
listListingLocaleTexts: '/v1/listinglocaletexts'
,
updateListingLocaleText: '/v1/listinglocaletexts/:listingLocaleTextId'
,
getListingLocaleText: '/v1/listinglocaletexts/:listingLocaleTextId'
}
};
AdminPanel Service Endpoints
export const adminPanelEndpoints = {
localizationSetting: {
createLocalizationSetting: '/v1/localizationsettings'
,
updateLocalizationSetting: '/v1/localizationsettings/:localizationSettingId'
,
listLocalizationSettings: '/v1/localizationsettings'
},
adminDisputeAction: {
listAdminDisputeActions: '/v1/admindisputeactions'
,
createAdminDisputeAction: '/v1/admindisputeactions'
},
apiKey: {
createApiKey: '/v1/apikeys'
,
listApiKeys: '/v1/apikeys'
,
updateApiKey: '/v1/apikeys/:apiKeyId'
},
financialReport: {
getFinancialReport: '/v1/financialreports/:financialReportId'
,
createFinancialReport: '/v1/financialreports'
,
listFinancialReports: '/v1/financialreports'
},
auditLog: {
getAuditLog: '/v1/auditlogs/:auditLogId'
,
listAuditLogs: '/v1/auditlogs'
,
createAuditLog: '/v1/auditlogs'
},
gdprAction: {
updateGdprAction: '/v1/gdpractions/:gdprActionId'
,
listGdprActions: '/v1/gdpractions'
,
createGdprAction: '/v1/gdpractions'
}
};
BookingManagement Service Endpoints
export const bookingManagementEndpoints = {
reservation: {
getReservation: '/v1/reservations/:reservationId'
,
listReservations: '/v1/reservations'
,
createReservation: '/v1/reservations'
,
deleteReservation: '/v1/reservations/:reservationId'
,
updateReservation: '/v1/reservations/:reservationId'
,
startReservationPayment: '/v1/startreservationpayment/:reservationId'
,
refreshReservationPayment: '/v1/refreshreservationpayment/:reservationId'
,
callbackReservationPayment: '/v1/callbackreservationpayment'
},
paymentRecord: {
getPaymentRecord: '/v1/paymentrecords/:paymentRecordId'
,
createPaymentRecord: '/v1/paymentrecords'
,
listPaymentRecords: '/v1/paymentrecords'
},
dispute: {
updateDispute: '/v1/disputes/:disputeId'
,
createDispute: '/v1/disputes'
,
listDisputes: '/v1/disputes'
,
getDispute: '/v1/disputes/:disputeId'
},
sys_reservationPayment: {
getReservationPayment2: '/v1/reservationpayment2/:sys_reservationPaymentId'
,
listReservationPayments2: '/v1/reservationpayments2'
,
createReservationPayment: '/v1/reservationpayment'
,
updateReservationPayment: '/v1/reservationpayment/:sys_reservationPaymentId'
,
deleteReservationPayment: '/v1/reservationpayment/:sys_reservationPaymentId'
,
listReservationPayments2: '/v1/reservationpayments2'
,
getReservationPaymentByOrderId: '/v1/reservationpaymentbyorderid/:orderId'
,
getReservationPaymentByPaymentId: '/v1/reservationpaymentbypaymentid/:paymentId'
,
getReservationPayment2: '/v1/reservationpayment2/:sys_reservationPaymentId'
},
sys_paymentCustomer: {
getPaymentCustomerByUserId: '/v1/paymentcustomers/:userId'
,
listPaymentCustomers: '/v1/paymentcustomers'
},
sys_paymentMethod: {
listPaymentCustomerMethods: '/v1/paymentcustomermethods/:userId'
}
};
ReviewSystem Service Endpoints
export const reviewSystemEndpoints = {
reviewAggregate: {
listReviewAggregates: '/v1/reviewaggregates'
,
getReviewAggregate: '/v1/reviewaggregates/:reviewAggregateId'
},
review: {
getReview: '/v1/reviews/:reviewId'
,
createReview: '/v1/reviews'
,
deleteReview: '/v1/reviews/:reviewId'
,
listReviews: '/v1/reviews'
,
updateReview: '/v1/reviews/:reviewId'
}
};
Auth Service Endpoints
export const authEndpoints = {
login: "/login",
me: "/v1/users/:userId",
logout: "/logout",
user: {
getUser: '/v1/users/:userId'
,
updateUser: '/v1/users/:userId'
,
updateProfile: '/v1/profile/:userId'
,
createUser: '/v1/users'
,
deleteUser: '/v1/users/:userId'
,
archiveProfile: '/v1/archiveprofile/:userId'
,
listUsers: '/v1/users'
,
searchUsers: '/v1/searchusers'
,
updateUserRole: '/v1/userrole/:userId'
,
updateUserPassword: '/v1/userpassword/:userId'
,
updateUserPasswordByAdmin: '/v1/userpasswordbyadmin/:userId'
,
getBriefUser: '/v1/briefuser/:userId'
,
registerUser: '/v1/registeruser'
},
userGroup: {
createUserGroup: '/v1/usergroups'
,
updateUserGroup: '/v1/usergroups/:userGroupId'
,
deleteUserGroup: '/v1/usergroups/:userGroupId'
,
getUserGroup: '/v1/usergroups/:userGroupId'
,
listUserGroups: '/v1/usergroups'
},
userGroupMember: {
getUserGroupMember: '/v1/usergroupmembers/:userGroupMemberId'
,
createUserGroupMember: '/v1/usergroupmembers'
,
deleteUserGroupMember: '/v1/usergroupmembers/:userGroupMemberId'
,
listUserGroupMembers: '/v1/listusergroupmembers/:groupId'
}
};
Authentication Integration
JWT Token Management
Basic Token Handling
// Authentication is handled through the AuthProvider context
// Tokens are managed by the JWT authentication system
Multi-Service Authentication
Service Authentication Implementation
// Basic JWT authentication is used across all services
// Authentication context is shared between services
Data Synchronization
Real-Time Updates
Data Synchronization Implementation
// Data is fetched on-demand through API calls
// No real-time synchronization is required
Optimistic Updates
Update Strategy Implementation
// Data is updated directly through API calls
// Changes are reflected immediately after successful API response
Error Handling and Resilience
Error Handling
Error Handling Implementation
// Basic error handling through Axios response interceptors
// Errors are logged and simplified for display
Retry Mechanisms
Retry Implementation
// Basic error handling through Axios interceptors
// Errors are logged and displayed to users
Service-Specific Integration Details
Messaging Service Integration
Service Overview
-
Service Name:
messaging -
Display Name:
Messaging - Primary Purpose: Enables secure in-app messaging between guests and hosts. Handles threads, messages (with text/media/system types), abuse flagging, and admin moderation for resolution..
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
MessageThread: Thread/conversation between guest and host, optionally linked to a listing/reservation. Tracks participants, context, state, and stats.
-
MessageReport: 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.
-
Message: Single message within a thread (text/media/system). Includes metadata for flagging/moderation. Linked to sender, thread, and content type.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_MESSAGING_SERVICE_URL=https://messaging-api.airbnb3.prod.mindbricks.com
PropertyCatalog Service Integration
Service Overview
-
Service Name:
propertyCatalog -
Display Name:
PropertyCatalog - Primary Purpose: Service for management of property listings, calendars, amenities, and localization for a short-term rental marketplace. Hosts can manage listings, availability, multi-language descriptions, policies, pricing, and attributes, served for global search and discovery...
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
ListingCalendar: Represents daily availability, pricing, and reservation state for a listing (i.e., a property calendar entry).
-
ListingAmenity: Dictionary of possible amenities (wifi, pool, etc.) for hosts to reference in their listings.
-
Listing: 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...
-
ListingLocaleText: Localized title & description texts for a property listing, per language.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_PROPERTYCATALOG_SERVICE_URL=https://propertyCatalog-api.airbnb3.prod.mindbricks.com
AdminPanel Service Integration
Service Overview
-
Service Name:
adminPanel -
Display Name:
AdminPanel - Primary Purpose: Administrative and compliance management backend for moderation, audit, dispute, financial oversight, localization, and GDPR in the Airbnb-style rental platform...
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
LocalizationSetting: Admin-configured valid languages/currencies for site usage and preference.
-
AdminDisputeAction: Record of an admin's moderation/decision action on a dispute.
-
ApiKey: Admin-generated API key for internal/external integration—has revocation, audit trail.
-
FinancialReport: System-generated or admin-generated report snapshots of platform financials for a given period (GDPR/tax).
-
AuditLog: Immutable audit log for recording sensitive admin actions and platform changes.
-
GdprAction: Record of individual user GDPR/consent/export/delete request flow. Used for logs, compliance, and controls.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_ADMINPANEL_SERVICE_URL=https://adminPanel-api.airbnb3.prod.mindbricks.com
BookingManagement Service Integration
Service Overview
-
Service Name:
bookingManagement -
Display Name:
BookingManagement - Primary Purpose: Orchestrates booking, payment, calendar, changewsand dispute flows for Airbnb-style short-term rental marketplace...test Handles reservations, approval, Stripe payments, iCal sync, payment records, and the dispute/refund lifecycle with host/guest/admin visibility.
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
Reservation: Represents a guest's booking for a property listing, including dates, participants, approval/payment/dispute status, and iCal sync info...
-
PaymentRecord: 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.
-
Dispute: 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.
-
Sys_reservationPayment: 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
-
Sys_paymentCustomer: A payment storage object to store the customer values of the payment platform
-
Sys_paymentMethod: A payment storage object to store the payment methods of the platform customers
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_BOOKINGMANAGEMENT_SERVICE_URL=https://bookingManagement-api.airbnb3.prod.mindbricks.com
ReviewSystem Service Integration
Service Overview
-
Service Name:
reviewSystem -
Display Name:
ReviewSystem - Primary Purpose: Handles double-blind, moderated reviews and rating aggregation for stays. Allows guests/hosts to review each other and listings, supports moderation, and exposes aggregate stats for listings/profiles...
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
ReviewAggregate: Cached aggregate rating stats for a listing, host, or guest. Used for fast lookup and display of averages, counts, etc.
-
Review: Review submitted by a guest or host after a completed stay. Enables double-blind, supports moderation, and links to reservation/listing and users.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_REVIEWSYSTEM_SERVICE_URL=https://reviewSystem-api.airbnb3.prod.mindbricks.com
Auth Service Integration
Service Overview
-
Service Name:
auth -
Display Name:
Auth - Primary Purpose: Authentication service for the project
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
User: A data object that stores the user information and handles login settings.
-
UserGroup: A data object that stores the user group information.
-
UserGroupMember: A data object that stores the members of the user group.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_AUTH_SERVICE_URL=https://auth-api.airbnb3.prod.mindbricks.com
Performance Optimization
Caching Strategies
Caching Implementation
// Data is fetched on-demand through API calls
// No caching is required for current use cases
Request Batching
Request Batching Implementation
// Individual API calls are made as needed
// Each operation is handled independently
Monitoring and Logging
Service Monitoring
Monitoring Implementation
// Basic error logging through console.error
// Service health is monitored through API responses
Error Logging
Error Logging Implementation
// Basic error logging through console.error
// Errors are displayed to users through UI components