Fortellis User / Booking Sessions API
Booking-sessions API illustrating Fortellis's REST conventions: session creation, item management, store availability, and slot reservation for service scheduling workflows.
Booking-sessions API illustrating Fortellis's REST conventions: session creation, item management, store availability, and slot reservation for service scheduling workflows.
swagger: '2.0'
info:
version: "45.0.0"
title: Booking Sessions
description: |
# Service Sessions - Service - Booking Sessions Spec
This spec describes an API implementation that allows a solution to book service sessions to a car dealership.
# What does this API do?
With this spec, customers can use a solution to perform the following:
* Create a booking session
* Get the items in a booking session
* Add items to the booking session
* Remove items from a booking session
* Query the service item by the identifier
* Query the store
* Query the store availability
* Query the stores available session slots
* Book the appointment
# Intended Audience
This spec gives API Providers the design for APIs that allow dealers to book sessions online at different stores.
This spec can give a design for a small API implementation or a large chain of dealerships that share a solution for booking service sessions.
contact:
name: Developer Evangelists
url: https://fortellis.io/contact-us
email: support@fortellis.io
securityDefinitions:
permission-model:
type: oauth2
flow: implicit
authorizationUrl: https://identity.fortellis.io/oauth2/
scopes:
anonymous: Permissions to query and read parts
security:
- permission-model:
- 'anonymous'
tags:
- Testing Tag
host: api.fortellis.io
basePath: /service/sessions/v4/
schemes:
- https
paths:
# Commands
/booking-sessions:
post:
summary: Create a bookingSession
tags:
- Service Booking
produces:
- application/json
consumes:
- application/json
description: Creates a Booking Session. This session encapsulates the process of establishing the vehicle to be serviced, what services will be performed, what customer transportation is requested, and which available appointment slots are available.
operationId: createBookingSession
responses:
'201':
$ref: "#/responses/Created"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/header.Content-Type"
- $ref: "#/parameters/body.CreateBookingSessionPayload"
/booking-sessions/{bookingSessionId}/items:
post:
produces:
- application/json
consumes:
- application/json
summary: Adds a requested service item to the Booking Session
tags:
- Service Booking
description: Adds a requested service item to the Booking Session
operationId: addBookingSessionItem
responses:
'201':
$ref: "#/responses/Created"
'400':
$ref: "#/responses/BadRequest"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/header.Content-Type"
- $ref: "#/parameters/path.bookingSessionId"
- $ref: "#/parameters/body.AddItemPayload"
get:
consumes:
- application/json
summary: Queries the service items of the Booking Session
tags:
- Service Booking
description: Queries the requested service items of the Booking Session
operationId: queryBookingSessionItems
produces:
- application/json
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/path.bookingSessionId"
responses:
'200':
$ref: "#/responses/items"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
'410':
$ref: "#/responses/Gone"
/booking-sessions/{bookingSessionId}/items/{itemId}:
post:
produces:
- application/json
consumes:
- application/json
summary: Updates a requested service item to the Booking Session
tags:
- Service Booking
description: Updates a requested service item to the Booking Session
operationId: updateBookingSessionItem
responses:
'200':
$ref: "#/responses/OK"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/header.Content-Type"
- $ref: "#/parameters/path.bookingSessionId"
- $ref: "#/parameters/path.itemId"
- $ref: "#/parameters/body.UpdateItemPayload"
get:
consumes:
- application/json
produces:
- application/json
summary: Queries a requested service item by identifier
tags:
- Service Booking
description: Queries a requested service item by identifier
operationId: queryRequestedServiceItemById
responses:
'200':
$ref: "#/responses/items"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
'410':
$ref: "#/responses/Gone"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/path.bookingSessionId"
- $ref: "#/parameters/path.itemId"
delete:
consumes:
- application/json
produces:
- application/json
summary: Removes a service item from the Booking Session
tags:
- Service Booking
description: Removes a service item from the Booking Session
operationId: removeBookingSessionItem
responses:
'200':
$ref: "#/responses/OK"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/header.Content-Type"
- $ref: "#/parameters/path.bookingSessionId"
- $ref: "#/parameters/path.itemId"
/booking-sessions/{bookingSessionId}/available-stores:
get:
consumes:
- application/json
produces:
- application/json
summary: Queries the store availability for appointments for booking
tags:
- Service Booking
description: Queries the store availability for appointments for booking
operationId: queryBookingSessionStoreAvailability
responses:
'200':
$ref: "#/responses/AvailableStore"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
'410':
$ref: "#/responses/Gone"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/path.bookingSessionId"
/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots:
get:
consumes:
- application/json
produces:
- application/json
summary: Queries the available appointment slots by store
tags:
- Service Booking
description: Queries the available appointment slots by store
operationId: queryBookingSessionsAvailableStoreSlots
responses:
'200':
$ref: "#/responses/Slot"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
'410':
$ref: "#/responses/Gone"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/path.bookingSessionId"
- $ref: "#/parameters/path.storeId"
/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots/{slotId}:
get:
consumes:
- application/json
produces:
- application/json
summary: Queries an available appointment slot
tags:
- Service Booking
description: Queries an available appointment slot
operationId: queryBookingSessionsAvailableSlot
responses:
'200':
$ref: "#/responses/Slot"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
'410':
$ref: "#/responses/Gone"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/path.bookingSessionId"
- $ref: "#/parameters/path.storeId"
- $ref: "#/parameters/path.slotId"
post:
consumes:
- application/json
produces:
- application/json
summary: Books an appointment slot. This is the final step in the appointment booking process.
tags:
- Service Booking
description: Books an appointment slot. This is the final step in the appointment booking process.
operationId: bookAppointmentSlot
responses:
'201':
$ref: "#/responses/Created"
'400':
$ref: "#/responses/BadRequest"
'403':
$ref: "#/responses/Forbidden"
'404':
$ref: "#/responses/NotFound"
'410':
$ref: "#/responses/Gone"
parameters:
- $ref: "#/parameters/header.Request-Id"
- $ref: "#/parameters/header.Subscription-Id"
- $ref: "#/parameters/header.Authorization"
- $ref: "#/parameters/header.Content-Type"
- $ref: "#/parameters/path.bookingSessionId"
- $ref: "#/parameters/path.storeId"
- $ref: "#/parameters/path.slotId"
parameters:
header.Request-Id:
name: Request-Id
required: true
type: string
in: header
description: A correlation ID that should be returned back to the caller to indicate the return of the given request
header.Subscription-Id:
name: Subscription-Id
in: header
required: true
type: string
format: guid
description: The Fortellis Marketplace subscription identifier between a user entity and the solution. For sample responses use the Subscription-Id 'test'.
header.Authorization:
name: Authorization
in: header
required: true
type: string
format: guid
description: Provides authorization to access Fortellis APIs. For calling a Fortellis Provider, this must be an OAuth 2.0 token issued by the Fortellis authorization server, but you may call the simulator platform with Basic Authorization using your API key and secret.
header.Content-Type:
description: This field shows the content type that the client sent.
name: Content-Type
in: header
required: true
type: string
enum:
- application/json
body.CreateBookingSessionPayload:
name: CreateBookingSessionPayload
in: body
description: The bookingSession parameters.
schema:
$ref: '#/definitions/CreateBookingSessionPayload'
path.bookingSessionId:
name: bookingSessionId
in: path
description: The identifier of the bookingSession
required: true
type: string
body.AddItemPayload:
name: AddItemPayload
in: body
description: The requested bookingSession
schema:
$ref: '#/definitions/AddItemPayload'
path.itemId:
name: itemId
in: path
description: The identifier of the item
required: true
type: string
body.UpdateItemPayload:
name: UpdateItemPayload
in: body
description: The item update parameters
schema:
$ref: '#/definitions/AddItemPayload'
path.storeId:
name: storeId
in: path
type: string
format: uuid
description: The store identifier => 000001
required: true
path.slotId:
name: slotId
in: path
type: string
format: uuid
description: The slot identifier
required: true
query.vehicleSpecId:
name: vehicleSpecId
in: query
type: string
description: Filters the appointments by vehicle.
query.customerId:
name: customerId
in: query
type: string
description: Filters the appointments by customer.
query.advisorId:
name: advisorId
in: query
type: string
description: Filters the appointments by service advisor.
query.startDateTime:
name: startDateTime
in: query
type: string
description: Filters the appointments by a start date/time.
query.endDateTime:
name: endDateTime
in: query
type: string
description: Filters the appointments by an end date/time.
query.status:
name: status
in: query
type: string
description: Filters the appointments by status.
path.appointmentId:
name: appointmentId
in: path
description: The identifier of the appointment
required: true
type: string
definitions:
LinksObject:
description: This is the common links object across all API calls.
type: object
properties:
bookingSessions:
type: object
properties:
functions:
type: string
href:
type: string
methods:
type: object
properties:
POST:
type: boolean
GET:
type: boolean
DELETE:
type: boolean
bookingSessionItems:
type: object
properties:
functions:
type: string
href:
type: string
methods:
type: object
properties:
POST:
type: boolean
GET:
type: boolean
DELETE:
type: boolean
bookingSessionItem:
type: object
properties:
functions:
type: string
href:
type: string
methods:
type: object
properties:
POST:
type: boolean
GET:
type: boolean
DELETE:
type: boolean
bookingSessionAvailableStores:
type: object
properties:
functions:
type: string
href:
type: string
methods:
type: object
properties:
POST:
type: boolean
GET:
type: boolean
DELETE:
type: boolean
bookingSessionAvailableStoreSlots:
type: object
properties:
functions:
type: string
href:
type: string
methods:
type: object
properties:
POST:
type: boolean
GET:
type: boolean
DELETE:
type: boolean
bookingSessionAvailableStoreSlot:
type: object
properties:
functions:
type: string
href:
type: string
methods:
type: object
properties:
POST:
type: boolean
GET:
type: boolean
DELETE:
type: boolean
required:
- bookingSessions
- bookingSessionItems
- bookingSessionItem
- bookingSessionAvailableStores
- bookingSessionAvailableStoreSlots
- bookingSessionAvailableStoreSlot
example:
bookingSessions:
functions: "Create a booking session."
href: '/booking-sessions'
methods:
GET: false
POST: true
DELETE: false
bookingSessionItems:
functions: "Create and query session items."
href: '/booking-sessions/{bookingSessionId}/items'
methods:
GET: true
POST: true
DELETE: false
bookingSessionItem:
functions: "Create and delete session items."
href: '/booking-sessions/{bookingSessionId}/items/{itemId}'
methods:
GET: false
POST: true
DELETE: true
bookingSessionAvailableStores:
functions: "Query the available stores."
href: '/booking-sessions/{bookingSessionId}/available-stores'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlots:
functions: "Query slots that an available store has."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlot:
functions: "Book and query a slot."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots/{slotId}'
methods:
GET: true
POST: true
DELETE: false
BookingSession:
description: This confirms the booking session when you have booked something.
required:
- bookingSessionId
- storeIdList
- vehicleSpecId
- vehicleTypeId
- customerId
- searchWindowStart
- searchWindowEnd
- transportationOptions
- selectedTransportationOptions
- links
properties:
bookingSessionId:
type: string
description: The identifier of the booking session
storeIdList:
type: array
items:
type: string
description: The identifiers of the stores to search
vehicleSpecId:
type: string
description: The vehicle service model identifier
vehicleTypeId:
type: string
description: The identifier of the vehicle type
customerId:
type: string
description: The unique identifier of the customer
searchWindowStart:
type: string
format: date-time
description: The the start of the search window
searchWindowEnd:
type: string
format: date-time
description: The the end of the search window
transportationOptions:
type: array
items:
$ref: '#/definitions/TransportationOption'
description: The available transportation options given the current filters
selectedTransportationOptions:
type: array
items:
type: string
description: The identifiers of the selected available transportation options
links:
$ref: "#/definitions/LinksObject"
example:
bookingSessionId: "0fe1767a-0556-4661-9991-19dcfbb74421"
storeIdList:
- "29e1d17e-1ccf-4992-8ee0-e28dd75a3f75"
vehicleSpecId: "CHEV-CORVST-2017-US"
vehicleTypeId: "d062d8d8-d2b4-4c28-8060-a2f6ed9c9257"
customerId: "73589670-4891-4204-aa61-1ffe7ceea50e"
searchWindowStart: "2018-02-20T08:00:00Z"
searchWindowEnd: "2018-02-21T16:00:00Z"
transportationOptions:
- transportationOptionId: "45e41b0d-099e-46d6-9ebd-ea35a2cd9f19"
description: "Customer waiting"
selectedTransportationOptions:
- "WAITER"
links:
bookingSessions:
functions: "Create a booking session."
href: '/booking-sessions'
methods:
GET: false
POST: true
DELETE: false
bookingSessionItems:
functions: "Create and query session items."
href: '/booking-sessions/{bookingSessionId}/items'
methods:
GET: true
POST: true
DELETE: false
bookingSessionItem:
functions: "Create and delete session items."
href: '/booking-sessions/{bookingSessionId}/items/{itemId}'
methods:
GET: false
POST: true
DELETE: true
bookingSessionAvailableStores:
functions: "Query the available stores."
href: '/booking-sessions/{bookingSessionId}/available-stores'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlots:
functions: "Query slots that an available store has."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlot:
functions: "Book and query a slot."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots/{slotId}'
methods:
GET: true
POST: true
DELETE: false
Error:
description: This is the description of the error that you are getting.
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
example:
code: 400
message: Bad Request
AvailableStore:
description: This shows when the store has available slots.
required:
- storeId
- slots
- links
properties:
storeId:
type: string
format: uuid
description: The identifier of the store
slots:
type: array
items:
$ref: '#/definitions/Slot'
description: The available appointment slots
links:
$ref: "#/definitions/LinksObject"
example:
storeId: '01b1a2a6-257d-4b35-b4c2-ae08153033ca'
slots:
- time
- time
- time
links:
bookingSessions:
functions: "Create a booking session."
href: '/booking-sessions'
methods:
GET: false
POST: true
DELETE: false
bookingSessionItems:
functions: "Create and query session items."
href: '/booking-sessions/{bookingSessionId}/items'
methods:
GET: true
POST: true
DELETE: false
bookingSessionItem:
functions: "Create and delete session items."
href: '/booking-sessions/{bookingSessionId}/items/{itemId}'
methods:
GET: false
POST: true
DELETE: true
bookingSessionAvailableStores:
functions: "Query the available stores."
href: '/booking-sessions/{bookingSessionId}/available-stores'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlots:
functions: "Query slots that an available store has."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlot:
functions: "Book and query a slot."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots/{slotId}'
methods:
GET: true
POST: true
DELETE: false
Ok:
description: This describes a successful POST to update an item.
required:
- success
- links
properties:
success:
type: string
links:
$ref: "#/definitions/LinksObject"
example:
success: OK
links:
bookingSessions:
functions: "Create a booking session."
href: '/booking-sessions'
methods:
GET: false
POST: true
DELETE: false
bookingSessionItems:
functions: "Create and query session items."
href: '/booking-sessions/{bookingSessionId}/items'
methods:
GET: true
POST: true
DELETE: false
bookingSessionItem:
functions: "Create and delete session items."
href: '/booking-sessions/{bookingSessionId}/items/{itemId}'
methods:
GET: false
POST: true
DELETE: true
bookingSessionAvailableStores:
functions: "Query the available stores."
href: '/booking-sessions/{bookingSessionId}/available-stores'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlots:
functions: "Query slots that an available store has."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlot:
functions: "Book and query a slot."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots/{slotId}'
methods:
GET: true
POST: true
DELETE: false
Appointment:
description: This is the appointment and all related information.
required:
- appointmentId
- storeId
- vehicleSpecId
- customerId
- advisorId
- transportationReservation
- status
- links
properties:
appointmentId:
type: string
description: The unique identifier of the appointment.
repairOrderId:
type: string
description: The unique identifier of the repair order generated from the appointment.
storeId:
type: string
description: The unique indentifier of the store.
vehicleSpecId:
type: string
description: The unique identifier of the vehicle.
customerId:
type: string
description: The unique identifier of the customer.
advisorId:
type: string
description: The unique identifier of the service advisor
transportationReservation:
$ref: '#/definitions/TransportationReservation'
status:
type: string
enum:
- BOOKED
- CANCELLED
- NOSHOW
links:
$ref: "#/definitions/LinksObject"
example:
appointmentId: "79667722-fcc4-4cd8-995b-75d566bbba1b"
storeId: "85254b70-c4b0-4461-937f-34d3502796bd"
vehicleSpecId: "CHEV-CORVST-2017-US"
customerId: "e3ad5443-72a7-4423-af2c-a5d7d510a39e"
advisorId: "282fc845-868d-4678-b06c-82a6794e6309"
accommodation:
accommodationId: "fd133724-3450-47c3-b4a4-f888dbf74e40"
description: "Courtesy Loaner Car"
dateTime: "2019-10-11T09:30:00+00:00"
status: "BOOKED"
transportationReservation:
transportationReservationId: "fd133724-3450-47c3-b4a4-f888dbf74e40"
description: "A courtesy loaner car has been reserved for Ms. Jones"
links:
bookingSessions:
functions: "Create a booking session."
href: '/booking-sessions'
methods:
GET: false
POST: true
DELETE: false
bookingSessionItems:
functions: "Create and query session items."
href: '/booking-sessions/{bookingSessionId}/items'
methods:
GET: true
POST: true
DELETE: false
bookingSessionItem:
functions: "Create and delete session items."
href: '/booking-sessions/{bookingSessionId}/items/{itemId}'
methods:
GET: false
POST: true
DELETE: true
bookingSessionAvailableStores:
functions: "Query the available stores."
href: '/booking-sessions/{bookingSessionId}/available-stores'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlots:
functions: "Query slots that an available store has."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlot:
functions: "Book and query a slot."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots/{slotId}'
methods:
GET: true
POST: true
DELETE: false
Item:
description: This give the service package that the store would like to offer to the consumer.
required:
- itemId
- text
- comment
- id
- specificationId
- links
properties:
itemId:
type: string
description: The unique identifier of the item
text:
type: string
description: A text field.
comment:
type: string
description: A comment field.
id:
type: string
description: The service package Id. Unique when coupled with vehicleSpecId
specificationId:
type: string
description: The specific instance of the service package.
links:
$ref: "#/definitions/LinksObject"
example:
itemId: "f74d81c1-fe33-4f1a-a5f6-ace24da670a8"
text: "30,000 mile service - 2014 Toyota Camry"
id: "BY28"
comment: "Customer requested service."
specificationId: "21732242"
links:
bookingSessions:
functions: "Create a booking session."
href: '/booking-sessions'
methods:
GET: false
POST: true
DELETE: false
bookingSessionItems:
functions: "Create and query session items."
href: '/booking-sessions/{bookingSessionId}/items'
methods:
GET: true
POST: true
DELETE: false
bookingSessionItem:
functions: "Create and delete session items."
href: '/booking-sessions/{bookingSessionId}/items/{itemId}'
methods:
GET: false
POST: true
DELETE: true
bookingSessionAvailableStores:
functions: "Query the available stores."
href: '/booking-sessions/{bookingSessionId}/available-stores'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlots:
functions: "Query slots that an available store has."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots'
methods:
GET: true
POST: false
DELETE: false
bookingSessionAvailableStoreSlot:
functions: "Book and query a slot."
href: '/booking-sessions/{bookingSessionId}/available-stores/{storeId}/slots/{slotId}'
methods:
GET: true
POST: true
DELETE: false
Slot:
description: This field indicates the time slot that the store selects a time slot to offer the transportation.
required:
- slotId
- storeId
- dateTime
- transportationOffer
- links
properties:
slotId:
type: string
format: uuid
description: The identifier of the slot
storeId:
type: string
format: uuid
description: The identifier of the store
dateTime:
type: string
format: date-time
description: The date and time of the slot
transportationOffer:
$ref: '#/definitions/TransportationOffer'
links:
$ref: "#/definitions/LinksObject"
example:
slotId: "85254b70-c4b0-4461-937f-34d3502796bd"
dateTime: "2019-10-11T09:30:00+00:00"
storeId: "85254b70-c4b0-4461-937f-34d3502796bd"
transportationOffer:
transportationOfferId: "fd133724-3450-47c3-b4a4-f888dbf74e40"
description: "Midsized loaner car"
cost:
baseCost: 0.0
currencyType: "GBP"
links:
bookingSessions:
functions: "Create a booking session."
href: '/booking-sessions'
methods:
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cdk-global/refs/heads/main/openapi/fortellis-user-service-openapi.yml