auth

EndpointHeadersParamsQueryForm Data
POST /auth/login - username: string (required)
- password: string (required)
GET /auth/getuser
GET /auth/refreshToken
DELETE /auth/logout

backblaze

EndpointHeadersParamsQueryForm Data
POST /backblaze - x-access-token: string (required)
- file: file (required)
GET /backblaze/{filename} - x-access-token: string (required)
- filename: string (optional)
DELETE /backblaze/{filename} - x-access-token: string (required)
- filename: string (optional)

bookings

EndpointHeadersParamsQueryForm Data
GET /bookings - x-access-token: string (required)
- id: array (optional) -- Array of id to filter
- status: array (optional) -- Array of status to filter
- type: array (optional) -- Array of type to filter
- car_id: array (optional) -- Array of car_id to filter
- driver_id: array (optional) -- Array of driver_id to filter
- dateFrom: date (YYYY-MM-DD) (optional) -- Filter by date from, will be filtered based on pickup_date >= dateFrom
- dateTo: date (YYYY-MM-DD) (optional) -- Filter by date to, will be filtered based on dateTo <= dropoff_date
- date_pickup: date (YYYY-MM-DD) (optional) -- Filter by date to, will be filtered based on date pickup
- date: date (YYYY-MM-DD) (optional) -- Filter by date, will be filtered based on pickup_date <= date <= dropoff_date
- notNull: array (optional) -- Filter not null value, e.g. driver_id,car_id => will filter bookings with not null driver_id and car_id
POST /bookings - x-access-token: string (required)
- user_id: uuid (required)
- customer_id: uuid (required)
- car_id: uuid (required)
- dropoff_date: string (required)
- dropoff_location: string (required)
- dropoff_location_json: string (optional)
- notes: string (optional)
- pickup_date: string (required)
- pickup_location: string (required)
- pickup_location_json: string (optional)
- price: number (optional) -- Total booking price
- type: string (required) -- Type of booking ['self_drive', 'tour', 'transfer_service']
- tour_package: string (optional) -- Tour Package
- pickup_price: number (optional) -- Price of pickup
- dropoff_price: number (optional) -- Price of dropoff
- additional_items: object (optional) -- additional items of bookings, can be filled with anything, e.g. { 'baby_seats': 2, umbrella: 3, insurance: true }
- additional_informations: object (optional) -- additional informations of bookings, can be filled with anything, e.g. { 'hotel_reservation': 'https://backblaze.com', address: 'Jalan Wirasana' }
- conditions: object (optional) -- conditions related to booking type, can be filled with anything, e.g. { 'withDriver': true, 'outside_town': true, 'tour_day_1_package': 6 }
- auto_generate_invoice: boolean (optional) -- Auto generate invoice after booking created, will return 'booking_invoice' field
- price_calculate_data: array (optional) -- Price Calculate Data
POST /bookings/login - x-access-token: string (optional) -- Access token (optional for public access)
- booking_code: string (required) -- Booking code/number (e.g., 'T-0001', 'S-0001')
- email: string (required) -- Customer email address associated with the booking
PUT /bookings/:id/payment-link - x-access-token: string (optional) -- Access token (optional for public access)
- id: string (required) -- UUID booking ID
- payment_link: string (required) -- URL of payment link (e.g., from Midtrans or other payment gateway)
PATCH /bookings/{id}/reschedule - x-access-token: string (required)
- id: string (required)
- pickup_date: string (optional) -- Date of Pickup (YYYY-MM-DD HH:mm:ss)
- dropoff_date: string (optional)
- pickup_price: number (optional) -- Price of pickup
- price: number (optional) -- Total booking price
- dropoff_price: number (optional) -- Price of dropoff
- payment_total: string (optional)
- price_calculate_data: array (optional) -- Price Calculate Data
GET /bookings/{id} - x-access-token: string (required)
- id: string (required)
- withOptions: boolean (optional) -- Get booking with available car options
PUT /bookings/{id} - x-access-token: string (required)
- id: string (required)
- agreement_number: string (optional)
- customer_id: uuid (optional)
- car_condition_end: string (optional)
- car_condition_end_images: array of string (optional)
- car_condition_end_file_name: array of string (optional)
- car_condition_start: string (optional)
- car_condition_start_images: array of string (optional)
- car_condition_start_file_name: array of string (optional)
- car_details_id: uuid (optional)
- car_id: uuid (optional)
- dropoff_date: string (optional)
- dropoff_location: string (optional)
- dropoff_location_json: string (optional)
- fuel_end: string (optional)
- fuel_start: string (optional)
- guaranty: string (optional)
- kilometer_end: number (optional)
- kilometer_start: number (optional)
- notes: string (optional)
- payment_method: string (optional) -- Only ['CASH', 'QRIS', 'TRANSFER','E-WALLET']
- payment_proofs_images: array of string (optional)
- payment_proofs_file_name: array of string (optional)
- payment_total: string (optional)
- pickup_date: string (optional)
- pickup_location: string (optional)
- pickup_location_json: string (optional)
- price: number (optional) -- Total booking price
- received_by: string (optional)
- returned_by: string (optional)
- status: string (optional) -- Status of booking, only ['canceled', 'invalid'] available
- type: string (optional) -- Type of booking ['self_drive', 'tour', 'transfer_service']
- additional_items: object (optional) -- additional items of bookings, can be filled with anything, e.g. { 'baby_seats': 2, umbrella: 3, insurance: true }
- additional_informations: object (optional) -- additional informations of bookings, can be filled with anything, e.g. { 'hotel_reservation': 'https://backblaze.com', address: 'Jalan Wirasana' }
- conditions: object (optional) -- conditions related to booking type, can be filled with anything, e.g. { 'withDriver': true, 'outside_town': true, 'tour_day_1_package': 6 }
- price_calculate_data: array (optional) -- Price Calculate Data
DELETE /bookings/{id} - x-access-token: string (required)
- id: string (required)
GET /bookings/public/{id} - id: string (required)
- withOptions: boolean (optional) -- Get booking with available car options

insurance

EndpointHeadersParamsQueryForm Data
GET /insurances
POST /insurances - x-access-token: string (required)
- name: string (required)
- price: number (required)
- description: string (optional)
- insurance_code: string (required)
GET /insurances/{id} - x-access-token: string (required)
- id: string (required)
PUT /insurances/{id} - x-access-token: string (required)
- id: string (required)
- name: string (optional)
- price: number (optional)
- description: string (optional)
- insurance_code: string (optional)
DELETE /insurances/{id} - x-access-token: string (required)
- id: string (required)
GET /insurances/code/{insurance_code} - x-access-token: string (required)
- insurance_code: string (required)

booking approvals

EndpointHeadersParamsQueryForm Data
GET /booking-approvals - x-access-token: string (required)
- booking_id: uuid (optional)
POST /booking-approvals - x-access-token: string (required)
- user_id: uuid (required)
- booking_id: uuid (required)
- step: string (required) -- Step of approvals, available ['booked', 'prepared', 'operated', 'completed', 'canceled']
- notes: string (optional)
GET /booking-approvals/{id} - x-access-token: string (required)
- id: string (required)
DELETE /booking-approvals/{id} - x-access-token: string (required)
- id: string (required)

booking invoices

EndpointHeadersParamsQueryForm Data
GET /booking-invoices - x-access-token: string (required)
- relation: string (optional) -- Get relation of booking invoice separated by comma, available ['invoice_id','booking_id']. Example query: `?relation=bookings,invoices`
- invoice_id: uuid (optional) -- Filter by invoice id, example '?invoice_id=qwerty'
- booking_id: uuid (optional) -- Filter by booking id, example '?booking_id=qwerty'
POST /booking-invoices - x-access-token: string (required)
- booking_id: uuid (required)
- invoice_id: uuid (required)
- total: number (required)
- description: string (required)
- status: string (optional) -- Status of booking invoice, available ['PAID', 'NOT_PAID', 'NOT_FULLY_PAID']
- additional_info: string (optional) -- Additional info for booking invoice, save as json string
GET /booking-invoices/{id} - x-access-token: string (required)
- id: string (required)
DELETE /booking-invoices/{id} - x-access-token: string (required)
- id: string (required)

booking allocation

EndpointHeadersParamsQueryForm Data
GET /booking-allocations - x-access-token: string (required)
- dateFrom: date (YYYY/MM/DD HH:mm) (optional) -- Filter by date from, will be filtered based on pickup_date >= dateFrom
- dateTo: date (YYYY/MM/DD HH:mm) (optional) -- Filter by date to, will be filtered based on dateTo <= dropoff_date
- statuses: array (optional) -- Array of status to filter
- carIds: array (optional) -- Array of car_id to filter

cars

EndpointHeadersParamsQueryForm Data
GET /cars - x-access-token: string (required)
POST /cars - x-access-token: string (required)
- name: string (required)
- brands: string (required)
- transmision: string (required)
- color: string (required)
- status: string (required) -- Status of car, available ['open','booked','maintenance']
- additional_informations: object (optional) -- additional informations of cars, can be filled with anything
GET /cars/available - datetimeFrom: datetime (required) -- Format: YYYY-MM-DD HH:mm:ss
- datetimeTo: datetime (required) -- Format: YYYY-MM-DD HH:mm:ss
- hidePriceless: boolean (optional) -- Hide car without price, default: true
- withDetail: boolean (optional) -- Show car with detail, default: false
- priceType: enum (optional) -- Only applicable if hidePriceless is true, will hide cars that doesn't have price for car-price type, available ['self_drive', 'transfer_service', 'tour']
- condition: object (optional) -- Only applicable if hidePriceless is true, will filter cars based on the condition field. Currently only support 'hour' (int) and 'areas' (gmap location object), e.g. {'hour':6}.
GET /cars/{id} - x-access-token: string (required)
- id: string (required)
PUT /cars/{id} - x-access-token: string (required)
- id: string (required)
- additional_informations: object (optional) -- additional informations of cars, can be filled with anything
DELETE /cars/{id} - x-access-token: string (required)
- id: string (required)

car details

EndpointHeadersParamsQueryForm Data
GET /car-details - x-access-token: string (required)
POST /car-details - x-access-token: string (required)
- car_id: uuid (required)
- plate: string (required)
- last_kilometer: float (required)
- cc: string (required)
- year: string (required)
- fuel: string (required)
- additional_informations: object (optional) -- additional informations of cars, can be filled with anything
GET /car-details/{id} - x-access-token: string (required)
- id: string (required)
PUT /car-details/{id} - x-access-token: string (required)
- id: string (required)
- additional_informations: object (optional) -- additional informations of cars, can be filled with anything
DELETE /car-details/{id} - x-access-token: string (required)
- id: string (required)

car prices

EndpointHeadersParamsQueryForm Data
GET /car-prices - x-access-token: string (required)
POST /car-prices - x-access-token: string (required)
- car_id: uuid (required)
- condition_type: string (required) -- Condition type of car-prices, available ['default','date', 'time', 'datetime', 'out-of-town']
- type: string (required) -- Type of car-prices, available ['default','self_drive', 'transfer_service', 'tour']
- condition: object (optional) -- - If type = 'tour', condition must be defined and have 'hour' property with number value - If type = 'transfer_service', condition must be defined and have 'areas' property with array of string value
- date_from: datetime (optional)
- date_to: datetime (optional)
- price: float (required)
- is_repeat: boolean (optional)
- overtime_price: float (optional) -- Overtime price for car price
POST /car-prices/calculate - carId: uuid (required)
- datetimeFrom: datetime (required) -- Datetime from for calculate price, format: YYYY-MM-DD HH:mm:ss
- datetimeTo: datetime (required) -- Datetime to for calculate price, format: YYYY-MM-DD HH:mm:ss
- type: enum (required) -- Type of car-prices, available ['self_drive', 'transfer_service', 'tour']
- hour: number (optional) -- If type = 'tour', this field is required
- location: object (gmap location) (optional) -- - If type = 'transfer_service', this field is required if type = 'self_drive', this field will affecting pickup price
- delivery_location: object (gmap location) (optional) -- If type = 'self_drive', this field will be affecting the delivery price
- outOfTownDates: object of { datetime: zone } (optional) -- If type = 'tour', this field will be affecting the out of town price, format: { 'YYYY-MM-DD' : [1], 'YYYY-MM-DD': [1,2] }
- additionalItems: object (optional) -- Additional items for calculate price, only support baby_seat, insurance , umbrella, and wedding for now, format: { baby_seat: 1, umbrella: 2, insurance: true, wedding: true }
POST /v1/car-prices/calculate - carId: uuid (required)
- datetimeFrom: datetime (required) -- Datetime from for calculate price, format: YYYY-MM-DD HH:mm:ss
- datetimeTo: datetime (required) -- Datetime to for calculate price, format: YYYY-MM-DD HH:mm:ss
- type: enum (required) -- Type of car-prices, available ['self_drive', 'transfer_service', 'tour']
- insurance_id: string (optional) -- Insurance id
- insurance_code: string (optional) -- Insurance code
- hour: number (optional) -- If type = 'tour', this field is required
- location: object (gmap location) (optional) -- - If type = 'transfer_service', this field is required if type = 'self_drive', this field will affecting pickup price
- delivery_location: object (gmap location) (optional) -- If type = 'self_drive', this field will be affecting the delivery price
- outOfTownDates: object of { datetime: zone } (optional) -- If type = 'tour', this field will be affecting the out of town price, format: { 'YYYY-MM-DD' : [1], 'YYYY-MM-DD': [1,2] }
- additionalItems: array (optional) -- Additional items for calculate price, only support baby_seat, insurance , umbrella, and wedding for now, format: { baby_seat: 1, umbrella: 2, insurance: true, wedding: true }
GET /car-prices/{id} - x-access-token: string (required)
- id: string (required)
PUT /car-prices/{id} - x-access-token: string (required)
- id: string (required)
- car_id: uuid (required)
- condition_type: string (required) -- Condition type of car-prices, available ['default','date', 'time', 'datetime', 'out-of-town']
- type: string (required) -- Type of car-prices, available ['default','self_drive', 'transfer_service', 'tour']
- condition: object (optional) -- - If type = 'tour', condition must be defined and have 'hour' property with number value; - If condition_type = 'out-of-town', condition must be defined and have 'zone' property with array number value
- date_from: datetime (optional)
- date_to: datetime (optional)
- price: float (required)
- is_repeat: boolean (optional)
- overtime_price: float (optional) -- Overtime price for car price
DELETE /car-prices/{id} - x-access-token: string (required)
- id: string (required)

customers

EndpointHeadersParamsQueryForm Data
GET /customers - x-access-token: string (required)
POST /customers - x-access-token: string (required)
- name: string (required)
- email: string (required)
- phone: string (required)
- address: string (optional)
- identity: string (optional)
- identity_number: string (optional)
- driving_license: string (optional)
GET /customers/{id} - x-access-token: string (required)
- id: string (required)
PUT /customers/{id} - x-access-token: string (required)
- id: string (required)
DELETE /customers/{id} - x-access-token: string (required)
- id: string (required)

departments

EndpointHeadersParamsQueryForm Data
GET /departments - x-access-token: string (required)

doku

EndpointHeadersParamsQueryForm Data
POST /doku/generate - amount: number (required) -- Amount of payment
- customer: object (required) -- Customer object, check reference on https://dashboard.doku.com/docs/docs/jokul-checkout/jokul-checkout-integration#1-obtain-paymenturl-on-backend
- invoice_number: string (required) -- Invoice number
- items: array (required) -- Array of items, check reference on https://dashboard.doku.com/docs/docs/jokul-checkout/jokul-checkout-integration#1-obtain-paymenturl-on-backend
- additional_info: object (optional) -- Additional informations, check reference on https://dashboard.doku.com/docs/docs/jokul-checkout/jokul-checkout-integration#1-obtain-paymenturl-on-backend
POST /doku/notification

xendit

EndpointHeadersParamsQueryForm Data
POST /xendit/invoice - amount: number (required) -- Amount of payment
- customer: object (required) -- { id: string, surname: string, email: string, phone: string, }
- invoice_number: string (required) -- Invoice number
POST /xendit/notification - external_id: string (required) -- {external_id : string(invoice number)}
- payment_method: string (required) -- Payment method ex : BANK_TRANSFER
- amount: number (required) -- Amount of payment

invoices

EndpointHeadersParamsQueryForm Data
GET /invoices - x-access-token: string (required)
- relation: string (optional) -- Get relation of invoice separated by comma, available ['users','customers', 'booking_invoices']. Example query: `?relation=users,customers`
- customer_id: uuid (optional) -- Filter by customer id, example '?customer_id=qwerty'
- status: string (optional) -- Filter by status, available options ['PAID', 'NOT_PAID', 'NOT_FULLY_PAID'], example '?status=PAID'
POST /invoices - x-access-token: string (required)
- customer_id: uuid (required)
- total: number (required)
- additional_info: string (optional) -- Additional info for invoice, save as json string
- status: string (optional) -- Status of invoice, available ['PAID', 'NOT_PAID', 'NOT_FULLY_PAID']
- taxes: string (optional) -- Taxes for invoice, save as json string
- payment_method: string (optional)
- payment_total: number (optional)
- payment_link: string (optional)
- pdf_link: string (optional)
GET /invoices/{id}/send - x-access-token: string (required)
- id: uuid (required)
- phone: string (required) -- Phone number or Group ID to send invoice
- showPaymentLink: boolean (optional) -- Send payment link as well or not (default: true)
GET /invoices/{id} - x-access-token: string (required)
- id: uuid (required)
GET /invoices/{id} - x-access-token: string (required)
- id: uuid (required)
DELETE /invoices/{id} - x-access-token: string (required)
- id: uuid (required)

invoicesV2

EndpointHeadersParamsQueryForm Data
POST /invoicesV2 - x-access-token: string (required)

staffs

EndpointHeadersParamsQueryForm Data
GET /staffs - x-access-token: string (required)
- isDriver: string (optional)
POST /staffs - x-access-token: string (required)
- name: string (required)
- email: string (optional)
- phone: string (optional)
- address: string (optional)
- status: string (required) -- Status of staff, available ['default','available','schedule','holiday']
- department_id: string (optional)
GET /staffs/{id} - x-access-token: string (required)
- id: string (required)
PUT /staffs/{id} - x-access-token: string (required)
- id: string (required)
DELETE /staffs/{id} - x-access-token: string (required)
- id: string (required)

users

EndpointHeadersParamsQueryForm Data
GET /users - x-access-token: string (required)
POST /users - x-access-token: string (required)
- username: string (required)
- password: string (required)
- role: string (required)
- staff_id: uuid (optional)
- customer_id: uuid (optional)
GET /users/{id} - x-access-token: string (required)
- id: string (required)
PUT users/{id} - x-access-token: string (required)
- id: string (required)
DELETE users/{id} - x-access-token: string (required)
- id: string (required)

available driver

EndpointHeadersParamsQueryForm Data
GET /available-driver - x-access-token: string (required)
- date_start: string (required)
- date_end: string (required)

user activities

EndpointHeadersParamsQueryForm Data
GET /user-activities - Authorization: string (required) -- Bearer token
- page: number (optional) -- number of page, default value 1
- perPage: enum (optional) -- total data per page, default value 10
- user: enum (optional) -- this is used for filter by username
- startDate: enum (optional) -- start date of tracking user activity
- endDate: enum (optional) -- end date of tracking user activity

whatsapp

EndpointHeadersParamsQueryForm Data
POST /whatsapp/webhook

storage

EndpointHeadersParamsQueryForm Data
POST /storage - x-access-token: string (optional) -- If not provided, by default will assume the user is a customer
- file: file (required)
GET /storage/{filename} - x-access-token: string (optional) -- If not provided, by default will assume the user is a customer
- filename: string (optional)
DELETE /storage/{filename} - x-access-token: string (required)
- filename: string (optional)

common

EndpointHeadersParamsQueryForm Data
GET /common/gmaps-review - placeId: string (required)

locations

EndpointHeadersParamsQueryForm Data
GET /search-places - x-access-token: string (required)
- query: string (optional)