Protocol Documentation
Booking.proto Booking related messages.This file is really just an example. The data model is completelyfictional.
Booking Represents the booking of a vehicle.Vehicles are some cool shit. But drive carefully! <classname>Booking</classname> Fields Field Type Label Description 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? color_preference string Deprecated.Color preference of the customer.
BookingStatus Represents the status of a vehicle booking. <classname>BookingStatus</classname> Fields Field Type Label Description id int32 Unique booking status ID. description string Booking status description. E.g. "Active".
BookingStatusID Represents the booking status ID. <classname>BookingStatusID</classname> Fields Field Type Label Description id int32 Unique booking status ID.
EmptyBookingMessage An empty message for testing
BookingService Service for handling vehicle bookings. <classname>BookingService</classname> Methods Method Name Request Type Response Type Description 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 This file has messages for describing a customer.
Address Represents a mail address. <classname>Address</classname> Fields Field Type Label Description 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. <classname>Customer</classname> Fields Field Type Label Description 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 Messages describing manufacturers / vehicles.
Manufacturer Represents a manufacturer of cars. <classname>Manufacturer</classname> Fields Field Type Label Description 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. <classname>Model</classname> Fields Field Type Label Description 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. <classname>Vehicle</classname> Fields Field Type Label Description 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.
<classname>Vehicle</classname> Nested Extensions Extension Type Base Number Description series string Model 100 Vehicle model series.
Vehicle.Category Represents a vehicle category. E.g. "Sedan" or "Truck". <classname>Vehicle.Category</classname> Fields Field Type Label Description 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. <classname>Manufacturer.Category</classname> Values Name Number Description CATEGORY_INHOUSE 0 The manufacturer is inhouse. CATEGORY_EXTERNAL 1 The manufacturer is external.
File-level Extensions Extension Type Base Number Description country string Manufacturer 100 Manufacturer country.Default: China
Scalar Value Types .proto Type Notes C++ Java Python Go C# PHP Ruby double double double float float64 double float Float float float float float float32 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 int32 int integer Bignum or Fixnum (as required) 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 int64 long integer/string Bignum uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required) uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required) sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required) sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required) fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required) sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum bool bool boolean boolean bool bool boolean TrueClass/FalseClass string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8) bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)