Protocol Documentation

October 13, 2021 · View on GitHub

Table of Contents

Top

Booking.proto

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_idint32ID of booked vehicle.
customer_idint32Customer that booked the vehicle.
statusBookingStatusStatus of the booking.
confirmation_sentboolHas booking confirmation been sent?
payment_receivedboolHas payment been received?
color_preferencestringDeprecated. Color preference of the customer.

BookingStatus

Represents the status of a vehicle booking.

FieldTypeLabelDescription
idint32Unique booking status ID.
descriptionstringBooking status description. E.g. "Active".

BookingStatusID

Represents the booking status ID.

FieldTypeLabelDescription
idint32Unique booking status ID.

EmptyBookingMessage

An empty message for testing

BookingService

Service for handling vehicle bookings.

Method NameRequest TypeResponse TypeDescription
BookVehicleBookingBookingStatusUsed to book a vehicle. Pass in a Booking and a BookingStatus will be returned.
BookingUpdatesBookingStatusIDBookingStatus streamUsed to subscribe to updates of the BookingStatus.

Top

Customer.proto

This file has messages for describing a customer.

Address

Represents a mail address.

FieldTypeLabelDescription
address_line_1stringrequiredFirst address line.
address_line_2stringoptionalSecond address line.
address_line_3stringoptionalSecond address line.
townstringrequiredAddress town.
countystringoptionalAddress county, if applicable.
countrystringrequiredAddress country.

Customer

Represents a customer.

FieldTypeLabelDescription
idint32requiredUnique customer ID.
first_namestringrequiredCustomer first name.
last_namestringrequiredCustomer last name.
detailsstringoptionalCustomer details.
email_addressstringoptionalCustomer e-mail address.
phone_numberstringrepeatedCustomer phone numbers, primary first.
mail_addressesAddressrepeatedCustomer mail addresses, primary first.

Top

Vehicle.proto

Messages describing manufacturers / vehicles.

Manufacturer

Represents a manufacturer of cars.

FieldTypeLabelDescription
idint32requiredThe unique manufacturer ID.
codestringrequiredA manufacturer code, e.g. "DKL4P".
detailsstringoptionalManufacturer details (minimum orders et.c.).
categoryManufacturer.CategoryoptionalManufacturer category. Default: CATEGORY_EXTERNAL

Model

Represents a vehicle model.

FieldTypeLabelDescription
idstringrequiredThe unique model ID.
model_codestringrequiredThe car model code, e.g. "PZ003".
model_namestringrequiredThe car model name, e.g. "Z3".
daily_hire_rate_dollarssint32requiredDollars per day.
daily_hire_rate_centssint32requiredCents per day.

Vehicle

Represents a vehicle that can be hired.

FieldTypeLabelDescription
idint32requiredUnique vehicle ID.
modelModelrequiredVehicle model.
reg_numberstringrequiredVehicle registration number.
mileagesint32optionalCurrent vehicle mileage, if known.
categoryVehicle.CategoryoptionalVehicle category.
daily_hire_rate_dollarssint32optionalDollars per day. Default: 50
daily_hire_rate_centssint32optionalCents per day.
ExtensionTypeBaseNumberDescription
seriesstringModel100Vehicle model series.

Vehicle.Category

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

FieldTypeLabelDescription
codestringrequiredCategory code. E.g. "S".
descriptionstringrequiredCategory name. E.g. "Sedan".

Manufacturer.Category

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

NameNumberDescription
CATEGORY_INHOUSE0The manufacturer is inhouse.
CATEGORY_EXTERNAL1The manufacturer is external.

File-level Extensions

ExtensionTypeBaseNumberDescription
countrystringManufacturer100Manufacturer country. Default: China

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
doubledoubledoublefloatfloat64doublefloatFloat
floatfloatfloatfloatfloat32floatfloatFloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2282^{28}.uint32intintuint32uintintegerBignum or Fixnum (as required)
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2562^{56}.uint64longint/longuint64ulonginteger/stringBignum
sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)