A progressive Node.js framework for building efficient and scalable server-side applications.
# Install dependencies
$ npm install# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:covThis section provides a comprehensive guide to the GraphQL API endpoints.
https://sehembz-travel-backend.onrender.com/graphql
Authentication: For protected endpoints, you must include an Authorization header with the Bearer token.
{
"Authorization": "Bearer <YOUR_ACCESS_TOKEN>"
}Sign Up
Mutation
mutation signup($data: CreateUserInput!) {
signUp(data: $data) {
message
user {
firstName
email
}
}
}Variables
{
"data": {
"email": "example@gmail.com",
"password": "Userpassword1234",
"firstName": "<NAME>"
}
}Login
Mutation
mutation Login($data: LoginUserInput!) {
login(data: $data) {
accessToken
user {
id
email
firstName
}
}
}Variables
{
"data": {
"email": "user@example.com",
"password": "strongPassword123"
}
}Request Password Reset
Mutation
mutation RequestPasswordReset($data: RequestPasswordResetInput!) {
requestPasswordReset(data: $data) {
message
resetLink
}
}Variables
{
"data": {
"email": "user@example.com"
}
}Reset Password
Mutation
mutation ResetPassword($data: ResetPasswordInput!) {
resetPassword(data: $data) {
message
}
}Variables
{
"data": {
"token": "",
"newPassword": "",
"confirmNewPassword": ""
}
}Change Password
Mutation
mutation ChangePassword($userId: String!, $data: ChangePasswordInput!) {
changePassword(userId: $userId, data: $data) {
message
}
}Variables
{
"userId": "12c18e30-24a7-4709-8898-56783b5474d8",
"data": {
"currentPassword": "Test1234",
"newPassword": "User1234",
"confirmNewPassword": "User1234"
}
}Update Personal Info
Mutation
mutation UpdatePersonalInfo($userId: String!, $data: UpdatePersonalInfoInput!) {
updatePersonalInfo(userId: $userId, data: $data) {
message
user {
id
firstName
lastName
}
}
}Variables
{
"userId": "<USER_ID>",
"data": {
"firstName": "",
"lastName": ""
}
}Fetch Current User
Query
query getCurrentUser {
getCurrentUser {
id
email
firstName
lastName
}
}Create Blog Tag
query
mutation CreateBlogTag($data: CreateBlogTagInput!) {
createBlogTag(data: $data) {
id
name
createdAt
updatedAt
}
}variable
{
"data": {
"name": "Food"
}
}Update Blog Tag
query
mutation EditBlogTag($id: String!, $data: EditBlogTagInput!) {
editBlogTag(id: $id, data: $data) {
id
name
createdAt
updatedAt
}
}variable
{
"id": "59417c76-af85-4ef1-996d-35e38b56c415",
"data": {
"name": "Travel & Adventure"
}
}Fetch all Blog Tag
query
query GetAllBlogTags {
getAllBlogTags {
id
name
createdAt
updatedAt
}
}Delete Blog Tag
query
mutation DeleteBlogTag($id: String!) {
deleteBlogTag(id: $id)
}variable
{
"id": "59417c76-af85-4ef1-996d-35e38b56c415"
}Create Blog
Set status to DRAFT if you want to save as draft and to PUBLISHED if you want to publish directly after creating
query
mutation CreateBlog($data: CreateBlogInput!) {
createBlog(data: $data) {
message
blog {
id
title
content
coverMedia
status
highlighted
archived
tag {
id
name
}
createdAt
updatedAt
}
}
}variable
status should be set as DRAFT if you want to save as draft and as PUBLISHED if you want to publish directly
{
"data": {
"title": " ",
"content": "",
"coverMedia": "<image url>",
"tagId": "<TAG ID>",
"status": "DRAFT"
}
}Edit Blog
query
mutation EditBlog($id: String!, $data: EditBlogInput!) {
editBlog(id: $id, data: $data) {
message
blog {
id
title
content
status
coverMedia
tag {
id
name
}
updatedAt
}
}
}variable
status should be set as DRAFT if you want to save as draft and as PUBLISHED if you want to publish directly
{
"id": "<BLOG ID>",
"data": {
"title": "",
"content": "",
"status": "",
"coverMedia": "",
"tagId": ""
}
}Update Blog Status
query
mutation UpdateBlogStatus($id: String!, $status: Status!) {
updateBlogStatus(id: $id, status: $status) {
message
blog {
id
title
status
archived
highlighted
datePublished
}
}
}variable
{
"id": "<BLOG ID>",
"status": ""
}(enum) Status
DRAFT
PUBLISHED
ARCHIVED
HIGHLIGHTED
Delete a Blog
query
mutation DeleteBlog($id: String!) {
deleteBlog(id: $id)
}variable
{
"id": "9d58909b-240f-4177-8eab-b46435da6f90"
}Fetch One Blog Details
query
query GetOneBlog($id: String!) {
getOneBlog(id: $id) {
id
title
content
status
tag {
id
name
}
}
}variable
{
"id": "9d58909b-240f-4177-8eab-b46435da6f90"
}Get All Published Blogs
query
query GetAllPublishedBlogs {
getAllPublishedBlogs {
id
title
status
coverMedia
content
tag {
id
name
}
}
}Get Highlighted Blog
query
query GetHighlightedBlog {
getHighlightedBlog {
id
title
status
highlighted
tag {
id
name
}
}
}Get All Blogs(filters and pagination)
query
query GetAllBlogs($filter: BlogFilterInput) {
getAllBlogs(filter: $filter) {
data {
id
title
status
datePublished
tag {
id
name
}
}
total
page
pageSize
}
}variable for Differet scenerio
filter by status
{
"filter": {
"status": "ARCHIVED"
}
}filter by tag
{
"filter": {
"tagId": "982f2cc9-15f2-4340-be68-b21034761152"
}
}filter by pre-defined dates
{
"filter": {
"dateRangePreset": "last_7_days"
}
}
other predefined dates
"today"
"last_14_days"
"month_to_date"
"last_3_months"
"last_12_months"
"year_to_date"filter by a start date and end date the user will choose. set date range to be "custom" then provide the selected dates.
{
"filter": {
"dateRangePreset": "custom",
"startDate": "2025-10-01T00:00:00Z",
"endDate": "2025-10-30T23:59:59Z"
}
}no chose filter, just paginated results of all data
{
"filter": {
"page": 2,
"pageSize": 5
}
}Search Blogs by title (auto suggests based on user input)
query
query SearchBlogs($title: String!) {
searchBlogs(title: $title) {
id
title
status
tag {
id
name
}
}
}variable
{
"title": "<User Input>"
}Add Tour Type
query
mutation createTourType($data: CreateTourTypeInput!) {
createTourType(data: $data) {
id
name
createdAt
}
}variable
{
"data": {
"name": "<TOUR-TYPE-NAME>"
}
}Update Tour Type
query
mutation updateTourType($id: String!, $data: EditTourTypeInput!) {
editTourType(id: $id, data: $data) {
id
name
}
}variable
{
"id": "<TOUR-TYPE-ID>",
"data": {
"name": "<NAME TO UPDATE TO>"
}
}Fetch all Tour Type
query
query {
getAllTourTypes {
id
name
createdAt
}
}Delete Tour Type
query
mutation deleteTourType($id: String!) {
deleteTourType(id: $id)
}variable
{
"id": "<TOUR-TYPE-ID>"
}Create Tour Package
query
mutation CreateTourPackage($data: CreateTourPackageInput!) {
createTourPackage(data: $data) {
message
tour {
id
tourTitle
location
status
minimumPrice
duration
coverMedia
activities
paymentDeadline
tourType {
id
name
}
clientPriceOptions {
id
currency
categoryName
price
}
}
}
}variable
{
"data": {
"tourTitle": "",
"location": "",
"minimumPrice": 1500.50,
"tourTypeId": "<TOUR-TYPEID>",
"status": "DRAFT",
"highlighted": false,
"coverMedia": [
"<IMAGE URL 1>",
"<IMAGE URL 2>"
],
"departureDate": "2026-02-15T00:00:00Z",
"returnDate": "2026-02-25T00:00:00Z",
"description": "",
"activities": "",
"priceOptions": [
{
"categoryName": "",
"price": 1500.50
},
{
"categoryName": "",
"price": 750.25
}
]
}
}
Set status to DRAFT if you want to save as draft and to PUBLISHED if you want to publish directly after creating.
Edit Tour Package
query
mutation EditTourPackage($id: String!, $data: EditTourPackageInput!) {
editTourPackage(id: $id, data: $data) {
message
tour {
id
tourTitle
location
status
updatedAt
tourType {
id
name
}
}
}
}variable
{
"tourId": "TOUR_ID_HERE",
"input": {
"tourTitle": "The Magical Mediterranean Cruise (Updated)",
"location": "Europe and North Africa",
"minimumPrice": 1250.00,
"status": "DRAFT",
"departureDate": "2026-06-15T00:00:00Z",
"returnDate": "2026-06-25T00:00:00Z",
"coverMedia": [
"https://example.com/new_image_1.jpg",
"https://example.com/new_image_2.jpg"
],
"description": null,
"activities": "Updated list of activities after review.",
"highlighted": true,
"priceOptionsToUpsert": [
{
"id": "EXISTING_PRICE_ID_TO_UPDATE",
"categoryName": "Premium Client Tier",
"price": 2500.00
},
{
"categoryName": "Budget Traveler",
"price": 999.00
}
],
"priceOptionIdsToDelete": [
"EXISTING_PRICE_ID_TO_DELETE_1",
"EXISTING_PRICE_ID_TO_DELETE_2"
]
}
}
Set status to DRAFT if you want to save as draft and to PUBLISHED if you want to publish directly after creating.
Update Tour Package Status
query
mutation UpdateTourPackageStatus($id: String!, $status: Status!) {
updateTourPackageStatus(id: $id, status: $status) {
message
tour {
id
tourTitle
status
archived
highlighted
datePublished
createdAt
updatedAt
}
}
}variable
{
"id": "12efab79-9da7-47ac-aeb5-1e990f45825d",
"status": "PUBLISHED"
}Delete Package
same endpoint is used for unpinquery
mutation DeleteTourPackage($id: String!) {
deleteTourPackage(id: $id)
}variable
{
"id": "<TOUR PACKAGE ID>"
}Get Highlighted Package
query
query GetHighlightedTourPackage {
getHighlightedTourPackage {
id
tourTitle
location
highlighted
status
}
}Get One Tour Package Details
query
query GetOneTourPackage($id: String!) {
getOneTourPackage(id: $id) {
id
tourTitle
location
description
activities
status
coverMedia
clientPriceOptions {
id
categoryName
price
}
}
}variable
{
"id": "<TOUR PACKAGE ID>"
}Get all Published Tour Packages
query
query GetAllPublishedTours {
getAllPublishedTours {
id
tourTitle
location
status
coverMedia
tourType {
id
name
}
}
}Get All Tour Packages (filter and pagination)
query
query GetAllTours($filter: TourFilterInput) {
getAllTours(filter: $filter) {
data {
id
tourTitle
location
status
tourType {
id
name
}
}
total
page
pageSize
}
}variable for different filter cases
no filter
{
"filter": {}
}filter by status
{
"filter": {
"status": "PUBLISHED"
}
}filter by location
{
"filter": {
"location": "Kenya"
}
}Filter by tour type
{
"filter": {
"tourTypeId": "6db7ec6a-390d-46f9-bd6f-89484b84de13"
}
}Filter by date range
{
"filter": {
"startDate": "2025-01-01T00:00:00Z",
"endDate": "2025-10-14T23:59:59Z",
"page": 2
}
}Search Tour Package By Title
query
query searchTours($title: String!) {
searchTours(title: $title) {
id
tourTitle
location
}
}variable
{
"title": "<User Input>"
}Create Destination
query
mutation CreateDestinationTravel($data: CreateDestinationTravelInput!) {
createDestinationTravel(data: $data) {
message
destination {
id
tourTitle
location
status
duration
coverMedia
clientPriceOptions {
id
categoryName
price
}
}
}
}variable
Set status to DRAFT if you want to save as draft and to PUBLISHED if you want to publish directly after creating
{
"data": {
"tourTitle": "",
"location": " ",
"departureDate": "2026-04-10T00:00:00Z",
"returnDate": "2026-04-17T00:00:00Z",
"description": "",
"activities": "Sightseeing, Wine Tasting, Art Tours",
"status": " ",
"coverMedia": ["<IMGE URL>g", "<IMAGE URL>"],
"priceOptions": [
{
"categoryName": " ",
"price": 1800
},
{
"categoryName": " ",
"price": 3200
}
]
}
}Edit Destination Travel
query
mutation editDestinationTravel($id: ID!, $input: EditDestinationTravelInput!) {
editDestination(id: $id, data: $input) {
message
destination {
id
tourTitle
status
datePublished
coverMedia
departureDate
returnDate
description
activities
clientPriceOptions {
id
categoryName
price
}
}
}
}variable
Set status to DRAFT if you want to save as draft and to PUBLISHED if you want to publish directly after creating
{
"id": "DESTINATION_ID_TO_EDIT",
"input": {
"tourTitle": "",
"location": "",
"minimumPrice": 3500.5,
"status": "PUBLISHED",
"departureDate": "2024-10-20T00:00:00Z",
"returnDate": "2024-10-27T00:00:00Z",
"coverMedia": [
"https://storage.example.com/swiss_peak_1.jpg",
"https://storage.example.com/swiss_peak_2.jpg"
],
"description": null,
"activities": "Hiking, Skiing, Cheese Tasting, Glacier Express ride.",
"highlighted": true,
"priceOptionsToUpsert": [
{
// UPDATE EXISTING OPTION (ID provided)
"id": "EXISTING_PRICE_OPTION_ID_1",
"categoryName": "Standard Package - Updated Price",
"price": 3600.0
},
{
// CREATE NEW OPTION (ID omitted)
"categoryName": "Luxury Upgrade Tier",
"price": 5800.0
}
],
"priceOptionIdsToDelete": [
"EXISTING_PRICE_OPTION_ID_TO_DELETE_2",
"EXISTING_PRICE_OPTION_ID_TO_DELETE_3"
]
}
}Update Destination Travel Status
query
mutation UpdateDestinationTravelStatus($id: String!, $status: Status!) {
updateDestinationTravelStatus(id: $id, status: $status) {
message
destination {
id
tourTitle
location
status
duration
coverMedia
clientPriceOptions {
id
categoryName
price
}
}
}
}variable
{
"id": "4dfd3733-ecc4-41a1-8401-5144d5f67a69",
"status": "HIGHLIGHTED"
}Delete Destination Travel
query
mutation DeleteDestinationTravel($id: ID!) {
deleteDestinationTravel(id: $id) {
message
}
}variable
{
"id": "DESTINATION_ID"
}Search Destination
query
query SearchDestinationTitles($title: String!) {
searchTourTitles(title: $title) {
id
tourTitle
location
status
highlighted
}
}variable
{
"title": " "
}fetch one Destination
query
query GetDestinationTravel($id: ID!) {
getDestinationTravel(id: $id) {
id
tourTitle
location
description
activities
status
highlighted
archived
coverMedia
clientPriceOptions {
id
categoryName
price
}
}
}variable
{
"id": " "
}fetch all Destination(filter and pagination)
query
query GetAllDestinationTravels($filter: DestinationFilterInput) {
getAllDestinationTravels(filter: $filter) {
total
page
pageSize
data {
id
tourTitle
location
status
highlighted
archived
createdAt
datePublished
}
}
}variable
no filter
{
"id": " "
}filter by status
{
"filter": {
"status": "PUBLISHED"
}
}Filter by Location
{
"filter": {
"location": "Paris"
}
}Filter by Date Range (Custom)
{
"filter": {
"startDate": "2025-01-01T00:00:00Z",
"endDate": "2025-10-14T23:59:59Z",
"page": 2
}
}
Filter by preset dates
```json
{
"filter": {
"dateRangePreset": "last_14_days"
}
}
fetch all Published Destination
query
query GetAllPublishedDestinations {
getAllPublishedDestinations {
id
tourTitle
location
status
highlighted
archived
}
}fetch Highlighted Destination
query
query GetHighlightedDestination {
getHighlightedDestination {
id
tourTitle
location
status
highlighted
}
}Add Visa Checklist
query
mutation CreateVisaChecklist($data: CreateVisaChecklistInput!) {
createVisaChecklist(data: $data) {
message
checklist {
id
country
location
description
status
images
highlighted
archived
datePublished
visaPriceOptions {
id
durationInDays
price
}
}
}
}variable
{
"data": {
"country": "",
"location": " ",
"description": " ",
"status": " ",
"images": ["< ARRAY OF IMAGES>"],
"visaPriceOptions": [
{ "durationInDays": 30, "price": 150.0 },
{ "durationInDays": 90, "price": 300.0 }
]
}
}Edit Visa Checklist
query
mutation editVisaChecklist($id: ID!, $input: EditVisaChecklistInput!) {
editVisaChecklist(id: $id, data: $input) {
message
checklist {
id
country
status
datePublished
images
description
highlighted
visaPriceOptions {
id
durationInDays
price
}
}
}
}variable
{
"id": "VISA_CHECKLIST_ID_TO_EDIT",
"input": {
"country": "",
"location": "",
"status": "",
"images": ["image 1", "image 2"],
"description": "",
"highlighted": true,
"visaPriceOptionsToUpsert": [
{
// UPDATE EXISTING OPTION (ID provided)
"id": "EXISTING_PRICE_ID_1",
"durationInDays": 365,
"price": 350.0
},
{
// CREATE NEW OPTION (ID omitted)
"durationInDays": 90,
"price": 150.0
}
],
"durationOptionIdsToDelete": [
"EXISTING_PRICE_ID_TO_DELETE_A",
"EXISTING_PRICE_ID_TO_DELETE_B"
]
}
}Update Visa Checklist Status
query
mutation ChangeVisaChecklistStatus($id: String!, $status: Status!) {
changeVisaChecklistStatus(id: $id, status: $status) {
message
checklist {
id
country
location
status
archived
highlighted
datePublished
images
visaPriceOptions {
id
durationInDays
price
}
}
}
}variable
{
"id": "clz8u3hya00023b0k6sg7trw1",
"status": "HIGHLIGHTED"
}Delete Visa Checklist
query
mutation DeleteVisaChecklist($id: ID!) {
deleteVisaChecklist(id: $id) {
message
}
}variable
{
"id": "33a67dc4-e2d5-494f-b64d-840b9fe28416"
}Get one Visa Checklist
query
query GetVisaChecklist($id: ID!) {
getVisaChecklist(id: $id) {
id
country
location
description
status
images
visaPriceOptions {
id
durationInDays
price
}
}
}variable
{
"id": "33a67dc4-e2d5-494f-b64d-840b9fe28416"
}Get all Published Visa Checklist
query
query {
getAllPublishedVisaChecklists {
id
country
location
status
datePublished
}
}Get Highlighted Visa Checklists
query
query {
getHighlightedVisaChecklist {
id
country
location
highlighted
status
}
}Get all Visa Checklists
query
query GetAllVisaChecklists($filter: VisaChecklistFilterInput) {
getAllVisaChecklists(filter: $filter) {
data {
id
country
location
status
datePublished
createdAt
}
total
page
pageSize
}
}variables Filter by Status (PUBLISHED)
{ "filter": { "status": "PUBLISHED" } }Filter by Country
{
"filter": {
"country": "Paris"
}
}Filter by location
{ "filter": { "location": "Toronto" } }no filter(pagination)
{ "filter": { "page": 2, "pageSize": 5 } }Search Visa Checklists
query
query SearchVisaChecklist($term: String!) {
searchVisaChecklist(term: $term) {
id
country
location
status
highlighted
}
}variables
Filter by Status (PUBLISHED)
{
"term": "india"
}Subscribe for updates
query
mutation SubscribeToUpdates($data: CreateEmailSubscriberInput!) {
subscribeToUpdates(data: $data) {
message
subscriber {
id
email
createdAt
updatedAt
}
}
}variables
{
"data": {
"email": "vtr@gmail.com"
}
}Get All Subscribers
query
query GetAllSubscribers($page: Int, $pageSize: Int) {
getAllSubscribers(page: $page, pageSize: $pageSize) {
data {
id
email
createdAt
updatedAt
}
total
page
pageSize
}
}variables
{
"page": 3,
"pageSize": 5
}SearchSubscribers
query
query SearchSubscribers($term: String!) {
searchSubscribers(term: $term) {
id
email
createdAt
updatedAt
}
}variables full match or partial match
{
"term": "example"
}Contact Us
query
mutation contactUs($input: ContactUsInput!) {
contactUs(input: $input) {
message
data {
id
fullName
email
phoneNo
howCanWeHelpYou
description
status
requestType
}
}
}variables
{
"input": {
"fullName": "",
"email": "",
"phoneNo": "",
"requestType": "CONTACT_US",
"howCanWeHelpYou": "<STRING>",
"description": "<OPTIONAL>"
}
}Request Flight Booking
query
mutation RequestFlightBooking($input: CreateFlightBookingInput!) {
requestFlightBooking(input: $input) {
message
flightRequest {
id
fullName
email
phoneNo
from
to
departureDate
returnDate
numberOfPersons
preferredAirline
ticketClass
flightType
requestDate
requestType
status
createdAt
updatedAt
}
}
}variables
{
"input": {
"fullName": " ",
"email": " ",
"phoneNo": "",
"requestType": "FLIGHT_BOOKING",
"from": "",
"to": "Lodon",
"departureDate": "",
"returnDate": "",
"numberOfPersons": ,
"preferredAirline": " ",
"ticketClass": "",
"flightType": " "
}
}flight types
ONE_WAY
ROUND_TRIP
MULTI_CITY
Request Visa Assistance
query
mutation CreateVisaRequest($input: VisaRequestInput!) {
createVisaRequest(input: $input) {
message
visaRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
purposeOfTravel
tavelTime
# Nested relation fields
visaChecklist {
id
country
location
images
visaPriceOptions {
id
durationInDays
price
}
}
}
}
}variables
{
"input": {
"fullName": " ",
"email": "",
"phoneNo": "",
"requestType": "VISA_ASSISTANCE",
"purposeOfTravel": " ",
"destinationCountry": "",
"tavelTime": "",
"visaChecklistId": " "
}
}Request Private Jet Charter
query
mutation RequestPrivateJet($input: RequestPrivateJetInput!) {
requestPrivateJet(input: $input) {
message
requestData {
id
fullName
email
phoneNo
from
to
departureDate
returnDate
flightType
numberOfPersons
typeOfJet
requestType
status
}
}
}variables
{
"input": {
"fullName": "",
"email": "",
"phoneNo": "",
"requestType": "PRIVATE_JET_CHARTER",
"from": "",
"to": "",
"departureDate": "",
"returnDate": "",
"numberOfPersons": ,
"flightType": "",
"typeOfJet": ""
}
}
flight types
ONE_WAY
ROUND_TRIP
MULTI_CITY
Request Hotel Reservation
query
mutation RequestHotelReservation($input: RequestHotelreservtion!) {
requestHotelReservation(input: $input) {
message
requestData {
id
fullName
email
phoneNo
arrivalDate
departureDate
numberOfPersons
destinationCountry
comment
additionalRequest
requestType
status
}
}
}variables
{
"input": {
"fullName": " ",
"email": " ",
"phoneNo": "",
"requestType": "HOTEL_RESERVATION",
"arrivalDate": " ",
"departureDate": "",
"numberOfPersons": ,
"destinationCountry": "UA",
"comment": "",
"additionalRequest": ""
}
}Request Tour Package
query
mutation RequestTourPackage($input: RequestTourPackage!) {
requestTourPackage(input: $input) {
message
requestData {
id
fullName
email
phoneNo
destinationCountry
budget
travelDate
numberOfPersons
accomodationPreference
tourPackageType
additionalRequest
comment
status
requestType
tourPackage {
id
tourTitle
coverMedia
departureDate
returnDate
duration
paymentDeadline
tourType {
name
}
}
}
}
}variables
{
"input": {
"fullName": "",
"email": "",
"phoneNo": "",
"requestType": "TOUR_PACKAGE",
"destinationCountry": "",
"tourPackageId": "",
"budget": "",
"travelDate": "",
"numberOfPersons": ,
"accomodationPreference": "",
"tourPackageType": "",
"additionalRequest": "",
"comment": ""
}
}
Request Executive Shuttle
query
mutation RequestExecutiveShuttle($input: RequestExexutiveShuttleInput!) {
requestExecutiveShuttle(input: $input) {
message
shuttleRequest {
id
fullName
email
phoneNo
arrivalAirport
arrivalDate
arrivalTime
rideType
status
requestType
}
}
}variables
{
"input": {
"fullName": "",
"email": "",
"phoneNo": "",
"requestType": "EXECUTIVE_SHUTTLE",
"arrivalAirport": " ",
"arrivalDate": "",
"arrivalTime": "",
"numberOfPersons": ,
"rideType": " "
}
}
(enum) RideType
AIRPORT_PICKUP CAR_HIRE
Request Travel Insurance
query
mutation RequestTravelInsurance($input: RequestTravelInsurance!) {
requestTravelInsurance(input: $input) {
message
requestData {
id
fullName
email
phoneNo
durationOfInsurance
numberOfPersons
destinationCountry
insuranceType
requestType
status
}
}
}variables
{
"input": {
"fullName": "",
"email": "",
"phoneNo": "",
"requestType": "TRAVEL_INSURANCE",
"durationOfInsurance": ,
"numberOfPersons": ,
"destinationCountry": "",
"insuranceType": ""
}
}
Sehembz Pay
query
mutation RequestSehembzPay($input: RequestSehembzPay!) {
requestSehembzPay(input: $input) {
message
requestData {
id
fullName
email
phoneNo
reasonForContacting
amount
status
requestType
}
}
}variables
{
"input": {
"fullName": " ",
"email": "",
"phoneNo": "",
"requestType": "SEHEMBZ_PAY",
"reasonForContacting": "",
"amount": ""
}
}Request Destination Travel
query
mutation requestDestinationTravel($input: DestinationTravelRequestInput!) {
requestDestinationTravel(input: $input) {
message
requestData {
id
fullName
email
phoneNo
numberOfPersons
requestType
status
requestDate
# Nested relation fields
destinationTravel {
id
tourTitle
location
departureDate
returnDate
duration
coverMedia
clientPriceOptions {
id
price
currency
}
}
}
}
}variables
{
"input": {
"fullName": "",
"email": "",
"phoneNo": "",
"requestType": "DESTINATION_TRAVEL",
"numberOfPersons": 2,
"destinationTravelId": " "
}
}Update Request Status
query
mutation UpdateRequestStatus($id: String!, $status: RequestStatus!) {
updateRequestStatus(id: $id, status: $status) {
fullName
email
phoneNo
requestType
status
}
}variables
{
"id": "<REQUEST ID>",
"status": ""
}(enum) RequestStatus OPEN IN_PROGRESS COMPLETED
Fetch one Request Details
query
query GetRequestById($id: String!) {
getRequestById(id: $id) {
__typename
... on FlightBookingType {
id
fullName
email
phoneNo
requestType
status
requestDate
from
to
departureDate
returnDate
numberOfPersons
preferredAirline
ticketClass
flightType
}
# ---------- Visa Request (With Nested Checklist) ----------
... on VisaRequestType {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
purposeOfTravel
tavelTime
# Nested relation fields
visaChecklist {
id
country
location
images
visaPriceOptions{
id
durationInDays
price
}
}
}
... on PrivateJetRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
from
to
departureDate
returnDate
numberOfPersons
typeOfJet
flightType
}
... on ExecutiveShuttleRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
arrivalAirport
arrivalDate
arrivalTime
rideType
}
... on TravelInsurance {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
insuranceType
durationOfInsurance
numberOfPersons
}
... on HotelReservation {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
arrivalDate
departureDate
numberOfPersons
comment
additionalRequest
}
... on TourPackageRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
budget
travelDate
numberOfPersons
accomodationPreference
tourPackageType
additionalRequest
comment
# Nested relation fields
tourPackage {
id
tourTitle
location
tourType {
id
name
}
}
}
... on SehembzPayRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
reasonForContacting
amount
}
... on ContactUsType {
id
fullName
email
phoneNo
requestType
status
requestDate
fullName
howCanWeHelpYou
description
}
... on DestinationTravelRequestType {
id
fullName
email
phoneNo
numberOfPersons
requestType
status
requestDate
# Nested DestinationTravel details
destinationTravel {
id
location
description
departureDate
returnDate
duration
coverMedia
clientPriceOptions{
id
price
currency
}
}
}variables
{
"id": "cb765c9c-2968-45f1-978b-7c20babd4c12"
}Get All Requests
query
query GetAllRequests($filter: RequestFilterInput) {
getAllRequests(filter: $filter) {
total
page
pageSize
data {
__typename
... on FlightBookingType {
id
fullName
email
phoneNo
requestType
status
requestDate
from
to
departureDate
returnDate
numberOfPersons
preferredAirline
ticketClass
flightType
}
# ---------- Visa Request (With Nested Checklist) ----------
... on VisaRequestType {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
purposeOfTravel
tavelTime
# Nested relation fields
visaChecklist {
id
country
location
images
visaPriceOptions {
id
durationInDays
price
}
}
}
... on PrivateJetRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
from
to
departureDate
returnDate
numberOfPersons
typeOfJet
flightType
}
... on ExecutiveShuttleRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
arrivalAirport
arrivalDate
arrivalTime
rideType
}
... on TravelInsurance {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
insuranceType
durationOfInsurance
numberOfPersons
}
... on HotelReservation {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
arrivalDate
departureDate
numberOfPersons
comment
additionalRequest
}
... on TourPackageRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
destinationCountry
budget
travelDate
numberOfPersons
accomodationPreference
tourPackageType
additionalRequest
comment
# Nested relation fields
tourPackage {
id
tourTitle
location
coverMedia
departureDate
returnDate
duration
paymentDeadline
tourType {
id
name
}
}
}
... on SehembzPayRequest {
id
fullName
email
phoneNo
requestType
status
requestDate
reasonForContacting
amount
}
... on ContactUsType {
id
fullName
email
phoneNo
requestType
status
requestDate
fullName
howCanWeHelpYou
description
}
... on DestinationTravelRequestType {
id
fullName
email
phoneNo
numberOfPersons
requestType
status
requestDate
# Nested DestinationTravel details
destinationTravel {
id
location
description
departureDate
returnDate
duration
coverMedia
clientPriceOptions {
id
price
currency
}
}
}
}
}
}variables
filter by request type
{
"filter": {
"requestType": "FLIGHT_BOOKING"
}
}filter by status
{
"filter": {
"status": "OPEN",
"page": 2
}
}filter by date range
{
"filter": {
"startDate": "2025-10-01T00:00:00Z",
"endDate": "2025-10-15T23:00:00Z"
}
}filter by pre defined dates
{
"filter": {
"dateRangePreset": "last_7_days"
}
}
(enum) RequestStatus
OPEN
IN_PROGRESS
COMPLETED
(enum) RequestType
FLIGHT_BOOKING
HOTEL_RESERVATION
VISA_ASSISTANCE
PRIVATE_JET_CHARTER
EXECUTIVE_SHUTTLE
TRAVEL_INSURANCE
SEHEMBZ_PAY
TOUR_PACKAGE
CONTACT_US
DESTINATION_TRAVEL