PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.15
Yatra – Travel Booking & Tour Operator Software v3.0.15
3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 2.0.1 2.0.10 All 83 releases
yatra / resources / js / lib / api-endpoints.ts

api-endpoints.ts in Yatra – Travel Booking & Tour Operator Software 3.0.15, at resources/js/lib/api-endpoints.ts

258 lines 10.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * API Endpoints Configuration
3 *
4 * Central path definitions for `yatra/v1`. Use `resources/js/api/*-api.ts`
5 * modules for typed `apiClient` calls instead of hardcoding strings in pages.
6 */
7
8 export const API_ENDPOINTS = {
9 // Bookings
10 BOOKINGS: "/bookings",
11 BOOKING_GET: (id: string | number) => `/bookings/${id}`,
12 BOOKING_STATUS: (id: string | number) => `/bookings/${id}/status`,
13 BOOKING_DELETE: (id: string | number) => `/bookings/${id}`,
14 BOOKINGS_BULK: "/bookings/bulk",
15 BOOKINGS_STATS: "/bookings/stats",
16 /** POST body: `{ booking_id }` — returns `{ checkout_url }` in `data`. */
17 PAYMENT_REMAINING_SESSION: "/payment/remaining/session",
18 BOOKING_CONSENT_STATUS: (id: string | number) =>
19 `/bookings/${id}/consent-status`,
20
21 // Customers
22 CUSTOMERS: "/customers",
23 CUSTOMER_GET: (id: string | number) => `/customers/${id}`,
24 CUSTOMER_DELETE: (id: string | number) => `/customers/${id}`,
25 CUSTOMERS_BULK: "/customers/bulk",
26 CUSTOMER_STATS: "/customers/stats",
27 CUSTOMER_BOOKINGS: (id: string | number) => `/customers/${id}/bookings`,
28 CUSTOMER_ME: "/customers/me",
29 CUSTOMER_CHANGE_PASSWORD: "/customers/me/password",
30 CUSTOMER_CHANGE_EMAIL: "/customers/me/email",
31 CUSTOMER_RESEND_EMAIL_CHANGE: "/customers/me/email/resend",
32 CUSTOMER_MY_BOOKINGS: "/customers/my-bookings",
33 CUSTOMER_MY_PAYMENTS: "/customers/my-payments",
34 CUSTOMER_MY_DOCUMENTS: "/customers/my-documents",
35 CUSTOMER_MY_SUPPORT_TICKETS: "/customers/my-support-tickets",
36 /** GET single booking for current user (details view). */
37 CUSTOMER_MY_BOOKING: (id: string | number) => `/customers/my-bookings/${id}`,
38
39 // Travelers
40 TRAVELERS: "/travelers",
41 TRAVELERS_BULK: "/travelers/bulk",
42
43 // Reviews
44 REVIEWS: "/reviews",
45 REVIEW_DELETE: (id: string | number) => `/reviews/${id}`,
46 REVIEW_STATUS: (id: string | number) => `/reviews/${id}/status`,
47 REVIEWS_BULK: "/reviews/bulk",
48
49 // Trips
50 TRIPS: "/trips",
51 TRIP_GET: (id: string | number) => `/trips/${id}`,
52 TRIP_DELETE: (id: string | number) => `/trips/${id}`,
53 TRIP_PERMANENT_DELETE: (id: string | number) =>
54 `/trips/${id}/permanent-delete`,
55 TRIP_DUPLICATE: (id: string | number) => `/trips/${id}/duplicate`,
56 TRIPS_STATS: "/trips/stats",
57 TRIP_ATTRIBUTES: (id: string | number) => `/trips/${id}/attributes`,
58 TRIP_AVAILABLE_DATES: (id: string | number) => `/trips/${id}/available-dates`,
59
60 // Departures
61 DEPARTURES: "/departures",
62 TRIP_DEPARTURES: (tripId: string | number) => `/trips/${tripId}/departures`,
63 DEPARTURE_GET: (tripId: string | number, id: string | number) =>
64 `/trips/${tripId}/departures/${id}`,
65 DEPARTURE_UPDATE: (tripId: string | number, id: string | number) =>
66 `/trips/${tripId}/departures/${id}`,
67 DEPARTURE_DELETE: (tripId: string | number, id: string | number) =>
68 `/trips/${tripId}/departures/${id}`,
69 TRIP_DEPARTURES_PAST: (tripId: string | number) =>
70 `/trips/${tripId}/departures/past`,
71
72 // Recurring Rules
73 RECURRING_RULES: (tripId: string | number) =>
74 `/trips/${tripId}/recurring-rules`,
75 RECURRING_RULE_GET: (tripId: string | number, ruleId: string | number) =>
76 `/trips/${tripId}/recurring-rules/${ruleId}`,
77
78 // Payments
79 PAYMENTS: "/payments",
80 PAYMENTS_STATS: "/payments/stats",
81 PAYMENT_GET: (id: string | number) => `/payments/${id}`,
82 PAYMENT_DELETE: (id: string | number) => `/payments/${id}`,
83
84 // Usage tracking (opt-in telemetry)
85 USAGE_TRACKING_STATUS: "/usage-tracking/status",
86 USAGE_TRACKING_SETTINGS: "/usage-tracking/settings",
87 USAGE_TRACKING_SEND: "/usage-tracking/send",
88 USAGE_TRACKING_PREVIEW: "/usage-tracking/preview",
89 USAGE_TRACKING_CLEAR_CACHE: "/usage-tracking/clear-cache",
90 USAGE_TRACKING_DELETE_SNAPSHOTS: "/usage-tracking/delete-snapshots",
91
92 // Settings
93 SETTINGS: "/settings",
94 SETTINGS_GROUP: (group: string) => `/settings?group=${group}`,
95 // Booking form config, optionally resolved for one trip (Pro form conditions)
96 SETTINGS_BOOKING_FORM: "/settings/booking-form",
97 SETTINGS_PAGES: "/settings/pages",
98 SETTINGS_FLUSH_REWRITE_RULES: "/settings/flush-rewrite-rules",
99 SETTINGS_CHECK_SHORTCODE: (pageId: string | number) =>
100 `/settings/check-shortcode/${pageId}`,
101 SETTINGS_INSERT_SHORTCODE: (pageId: string | number) =>
102 `/settings/insert-shortcode/${pageId}`,
103 SETTINGS_EMAIL_TEMPLATE_PREVIEW: "/settings/email-template-preview",
104
105 // Payment (definitions for admin Settings UI)
106 PAYMENT_GATEWAY_DEFINITIONS: "/payment/gateways/definitions",
107
108 // Enquiries
109 ENQUIRIES: "/enquiries",
110 ENQUIRY_GET: (id: string | number) => `/enquiries/${id}`,
111 ENQUIRY_DELETE: (id: string | number) => `/enquiries/${id}`,
112 ENQUIRIES_BULK: "/enquiries/bulk",
113 ENQUIRY_STATS: "/enquiries/stats",
114 ENQUIRY_RESPOND: (id: string | number) => `/enquiries/${id}/respond`,
115
116 // Scheduled balance payments (Yatra Pro — Scheduled Payments module).
117 // These routes only exist while that module is enabled; the UI is gated on
118 // the same `scheduledPaymentsEnabled` flag the module localizes.
119 SCHEDULED_PAYMENTS: "/scheduled-payments",
120 SCHEDULED_PAYMENTS_STATS: "/scheduled-payments/stats",
121 SCHEDULED_PAYMENT_CANCEL: (id: string | number) =>
122 `/scheduled-payments/${id}/cancel`,
123 SCHEDULED_PAYMENTS_OUTSTANDING: "/scheduled-payments/outstanding",
124 SCHEDULED_PAYMENT_SEND_LINK: (bookingId: string | number) =>
125 `/scheduled-payments/outstanding/${bookingId}/send-link`,
126
127 // Reports
128 REPORTS: "/reports",
129 REPORTS_EXPORT: (type: string) => `/reports/export?type=${type}`,
130
131 // Modules
132 MODULES: "/modules",
133
134 // Facebook Pixel
135 FACEBOOK_PIXEL_SETTINGS: "/facebook-pixel/settings",
136 FACEBOOK_PIXEL_TEST: "/facebook-pixel/test",
137 FACEBOOK_PIXEL_TEST_TOKEN: "/facebook-pixel/test-token",
138 FACEBOOK_PIXEL_EVENTS: "/facebook-pixel/events",
139 FACEBOOK_PIXEL_EVENT_LOGS: "/facebook-pixel/event-logs",
140
141 // Google Analytics 4
142 GOOGLE_ANALYTICS_SETTINGS: "/google-analytics/settings",
143 GOOGLE_ANALYTICS_TEST: "/google-analytics/test",
144 GOOGLE_ANALYTICS_VALIDATE_MEASUREMENT_ID:
145 "/google-analytics/validate/measurement-id",
146 GOOGLE_ANALYTICS_VALIDATE_API_SECRET: "/google-analytics/validate/api-secret",
147 GOOGLE_ANALYTICS_EVENTS: "/google-analytics/events",
148 GOOGLE_ANALYTICS_EVENT_LOGS: "/google-analytics/logs",
149
150 // Abandoned Bookings
151 ABANDONED_BOOKINGS: "/abandoned-bookings",
152 ABANDONED_BOOKING_GET: (id: string | number) => `/abandoned-bookings/${id}`,
153 ABANDONED_BOOKING_DELETE: (id: string | number) =>
154 `/abandoned-bookings/${id}`,
155 ABANDONED_BOOKINGS_SETTINGS: "/abandoned-bookings/settings",
156 ABANDONED_BOOKINGS_STATISTICS: "/abandoned-bookings/statistics",
157 ABANDONED_BOOKING_SEND_EMAIL: (id: string | number) =>
158 `/abandoned-bookings/${id}/send-email`,
159 ABANDONED_BOOKINGS_CAMPAIGNS: "/abandoned-bookings/campaigns",
160 ABANDONED_BOOKINGS_CAMPAIGN_GET: (id: string | number) =>
161 `/abandoned-bookings/campaigns/${id}`,
162
163 // Google Calendar
164 GOOGLE_CALENDAR_SETTINGS: "/google-calendar/settings",
165 GOOGLE_CALENDAR_CONNECT: "/google-calendar/connect",
166 GOOGLE_CALENDAR_DISCONNECT: "/google-calendar/disconnect",
167 GOOGLE_CALENDAR_SYNC_ALL: "/google-calendar/sync-all",
168
169 // Tools
170 TOOLS_SYSTEM_STATUS: "/tools/system-status",
171 TOOLS_ACTIVE_JOBS: "/tools/active-jobs",
172 TOOLS_LOGS: (type: string, page: number) =>
173 `/tools/logs/${type}?page=${page}`,
174 TOOLS_LOGS_CLEAR: (type: string) => `/tools/logs/${type}/clear`,
175 TOOLS_EXPORT_JOB: "/tools/export-job",
176 TOOLS_JOB_ACTION: (endpoint: string, jobId: string) =>
177 `/tools/${endpoint}/${jobId}`,
178 TOOLS_EXPORT_DOWNLOAD: (jobId: string) =>
179 `/tools/export-job/${jobId}/download`,
180 TOOLS_EXPORT_DELETE: (jobId: string) => `/tools/export-job/${jobId}`,
181 TOOLS_EXPORT_STATUS: (jobId: string) => `/tools/export-job/${jobId}`,
182 TOOLS_IMPORT_JOB: "/tools/import-job",
183 TOOLS_IMPORT_JOB_GET: (jobId: string) => `/tools/import-job/${jobId}`,
184 TOOLS_ALL_JOBS: "/tools/all-jobs",
185 TOOLS_CRON_JOBS: "/tools/cron-jobs",
186 TOOLS_CRON_RUN: (hook: string) => `/tools/cron-jobs/${hook}/run`,
187 TOOLS_CLEAR_CACHE: "/tools/clear-cache",
188 TOOLS_CACHE_VIEW: "/cache/view",
189 TOOLS_CACHE_CLEAR_ITEM: "/cache/clear-item",
190
191 // Migration
192 MIGRATION_STATUS: "/migration/status",
193 MIGRATION_CLEAR: "/migration/clear",
194 MIGRATION_PROGRESS: "/migration/progress",
195 MIGRATION_MIGRATE_ALL: "/migration/migrate-all",
196 MIGRATION_CANCEL: "/migration/cancel",
197
198 // Payment Gateways
199 PAYMENT_GATEWAYS: "/payment/gateways",
200
201 // Signed Consents
202 SIGNED_CONSENTS: "/signed-consents",
203 SIGNED_CONSENT_GET: (id: string | number) => `/signed-consents/${id}`,
204 SIGNED_CONSENT_PDF: (id: string | number) => `/signed-consents/${id}/pdf`,
205 SIGNED_CONSENTS_PREVIEW: "/signed-consents/preview",
206
207 // Dynamic Pricing
208 DYNAMIC_PRICING_SETTINGS: "/dynamic-pricing/settings",
209
210 // Availability
211 AVAILABILITY: (tripId: string | number) => `/trips/${tripId}/availability`,
212
213 // Itinerary
214 ITINERARY: "/itinerary",
215 ITINERARY_GET: (id: string | number, mode?: string) =>
216 mode ? `/itinerary/${id}?mode=${mode}` : `/itinerary/${id}`,
217 ITINERARY_DELETE: (id: string | number, mode?: string) =>
218 mode ? `/itinerary/${id}?mode=${mode}` : `/itinerary/${id}`,
219 ITINERARY_BY_TRIP: (tripId: string | number) =>
220 `/itinerary?trip_id=${tripId}`,
221 ITINERARY_DAY_ENTRY_BY_DAY_ID: (dayId: string | number) =>
222 `/itinerary/day-entry-by-day-id/${dayId}`,
223 // One-shot save of every activity for a single day. Replaces N sequential
224 // PUTs (one per activity) with a single batch request — the controller
225 // dispatches each row to update/create and returns per-row results.
226 ITINERARY_DAY_ACTIVITIES_BULK: (dayId: string | number) =>
227 `/itinerary/day/${dayId}/activities/bulk`,
228
229 // Saved Trips
230 SAVED_TRIPS: "/saved-trips",
231
232 // Email automation (Yatra Pro module — routes registered when module is active)
233 EMAIL_TEMPLATES: "/email-templates",
234 EMAIL_TEMPLATE_GET: (id: string | number) => `/email-templates/${id}`,
235 EMAIL_TEMPLATE_PREVIEW: (id: string | number) =>
236 `/email-templates/${id}/preview`,
237 EMAIL_TEMPLATE_TEST: (id: string | number) => `/email-templates/${id}/test`,
238 EMAIL_TEMPLATE_DUPLICATE: (id: string | number) =>
239 `/email-templates/${id}/duplicate`,
240 EMAIL_TEMPLATE_VARIABLES: "/email-templates/variables",
241 // Trip-specific overrides of a global template (Pro Email Automation)
242 EMAIL_TEMPLATE_OVERRIDE: (id: string | number) =>
243 `/email-templates/${id}/override`,
244 EMAIL_TEMPLATE_OVERRIDES_REORDER: "/email-templates/overrides/reorder",
245 EMAIL_TEMPLATE_RESOLVE: "/email-templates/resolve",
246 EMAIL_TEMPLATE_EVENTS: "/email-templates/events",
247 EMAIL_SEQUENCES: "/email-sequences",
248 EMAIL_SEQUENCE_GET: (id: string | number) => `/email-sequences/${id}`,
249 EMAIL_LOGS: "/email-logs",
250
251 // Notices (Admin UI + WP notices)
252 NOTICES: "/notices",
253 NOTICE_DISMISS: (id: string) => `/notices/${id}/dismiss`,
254 } as const;
255
256 // Type for endpoint keys
257 export type ApiEndpointKey = keyof typeof API_ENDPOINTS;
258