Protocol Documentation

Table of Contents

Booking.proto

Top

Booking related messages.

This file is really just an example. The data model is completely

fictional.

Booking

Represents the booking of a vehicle.

Vehicles are some cool shit. But drive carefully!

FieldTypeLabelDescription
vehicle_id int32

ID of booked vehicle.

customer_id int32

Customer that booked the vehicle.

status BookingStatus

Status of the booking.

confirmation_sent bool

Has booking confirmation been sent?

payment_received bool

Has payment been received?

BookingStatus

Represents the status of a vehicle booking.

FieldTypeLabelDescription
id int32

Unique booking status ID.

description string

Booking status description. E.g. "Active".

BookingStatusID

Represents the booking status ID.

FieldTypeLabelDescription
id int32

Unique booking status ID.

EmptyBookingMessage

An empty message for testing

BookingService

Service for handling vehicle bookings.

Method NameRequest TypeResponse TypeDescription
BookVehicle Booking BookingStatus

Used to book a vehicle. Pass in a Booking and a BookingStatus will be returned.

BookingUpdates BookingStatusID BookingStatus stream

Used to subscribe to updates of the BookingStatus.

Customer.proto

Top

This file has messages for describing a customer.

Address

Represents a mail address.

FieldTypeLabelDescription
address_line_1 string required

First address line.

address_line_2 string optional

Second address line.

address_line_3 string optional

Second address line.

town string required

Address town.

county string optional

Address county, if applicable.

country string required

Address country.

Customer

Represents a customer.

FieldTypeLabelDescription
id int32 required

Unique customer ID.

first_name string required

Customer first name.

last_name string required

Customer last name.

details string optional

Customer details.

email_address string optional

Customer e-mail address.

phone_number string repeated

Customer phone numbers, primary first.

mail_addresses Address repeated

Customer mail addresses, primary first.

Vehicle.proto

Top

Messages describing manufacturers / vehicles.

Manufacturer

Represents a manufacturer of cars.

FieldTypeLabelDescription
id int32 required

The unique manufacturer ID.

code string required

A manufacturer code, e.g. "DKL4P".

details string optional

Manufacturer details (minimum orders et.c.).

category Manufacturer.Category optional

Manufacturer category. Default: CATEGORY_EXTERNAL

Model

Represents a vehicle model.

FieldTypeLabelDescription
id string required

The unique model ID.

model_code string required

The car model code, e.g. "PZ003".

model_name string required

The car model name, e.g. "Z3".

daily_hire_rate_dollars sint32 required

Dollars per day.

daily_hire_rate_cents sint32 required

Cents per day.

Vehicle

Represents a vehicle that can be hired.

FieldTypeLabelDescription
id int32 required

Unique vehicle ID.

model Model required

Vehicle model.

reg_number string required

Vehicle registration number.

mileage sint32 optional

Current vehicle mileage, if known.

category Vehicle.Category optional

Vehicle category.

daily_hire_rate_dollars sint32 optional

Dollars per day. Default: 50

daily_hire_rate_cents sint32 optional

Cents per day.


ExtensionTypeBaseNumberDescription
series string Model 100

Vehicle model series.

Vehicle.Category

Represents a vehicle category. E.g. "Sedan" or "Truck".

FieldTypeLabelDescription
code string required

Category code. E.g. "S".

description string required

Category name. E.g. "Sedan".

Manufacturer.Category

Manufacturer category. A manufacturer may be either inhouse or external.

NameNumberDescription
CATEGORY_INHOUSE 0

The manufacturer is inhouse.

CATEGORY_EXTERNAL 1

The manufacturer is external.

File-level Extensions

ExtensionTypeBaseNumberDescription
country string Manufacturer 100

Manufacturer country. Default: China

Scalar Value Types

.proto TypeNotesC++ TypeJava TypePython Type
double double double float
float float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long
uint32 Uses variable-length encoding. uint32 int int/long
uint64 Uses variable-length encoding. uint64 long int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long
sfixed32 Always four bytes. int32 int int
sfixed64 Always eight bytes. int64 long int/long
bool bool boolean boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode
bytes May contain any arbitrary sequence of bytes. string ByteString str