Skip to content

Repository files navigation

Nest Logo

AedionAI Server

A progressive Node.js framework for building efficient and scalable server-side applications.

Project Setup

# Install dependencies
$ npm install

Running the App

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Running Tests

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

GraphQL API Documentation

This section provides a comprehensive guide to the GraphQL API endpoints.

GraphQL Playground URL:

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>"
}

1. Authentication & User Management

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
  }
}

2. Blog Section

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>"
}

3. Tour Package

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 unpin

query

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>"
}

4. Destination Travel

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
  }
}

5. Visa Checklist

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"
}

6. Subscribe for updates

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"
}

7. Request Services

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages