# Protocol Documentation ## Table of Contents - [common.proto](#common-proto) - [Ack](#common-Ack) - [Attitude](#common-Attitude) - [CameraMode](#common-CameraMode) - [CameraSettings](#common-CameraSettings) - [Circle](#common-Circle) - [ClientData](#common-ClientData) - [ClientDataList](#common-ClientDataList) - [ClientSession](#common-ClientSession) - [Command](#common-Command) - [CommandList](#common-CommandList) - [ConfigureRtk](#common-ConfigureRtk) - [Coordinates](#common-Coordinates) - [DownloadMedia](#common-DownloadMedia) - [DroneCapabilities](#common-DroneCapabilities) - [DroneCapabilities.ResolutionAndFrameRate](#common-DroneCapabilities-ResolutionAndFrameRate) - [DroneData](#common-DroneData) - [DroneSession](#common-DroneSession) - [Empty](#common-Empty) - [Error](#common-Error) - [FlightPlan](#common-FlightPlan) - [FlightPlanList](#common-FlightPlanList) - [FlightPlanRequest](#common-FlightPlanRequest) - [FlightPlanStatus](#common-FlightPlanStatus) - [Hover](#common-Hover) - [Land](#common-Land) - [Log](#common-Log) - [ManualControl](#common-ManualControl) - [Media](#common-Media) - [MediaUpload](#common-MediaUpload) - [MediaUpload.Request](#common-MediaUpload-Request) - [MediaUpload.Result](#common-MediaUpload-Result) - [MediaUploadResponse](#common-MediaUploadResponse) - [Metrics](#common-Metrics) - [MoveAltitude](#common-MoveAltitude) - [MoveGPS](#common-MoveGPS) - [MoveSpeed](#common-MoveSpeed) - [Movement](#common-Movement) - [ObstacleAvoidanceMode](#common-ObstacleAvoidanceMode) - [ReturnHome](#common-ReturnHome) - [Rotate](#common-Rotate) - [StartRecording](#common-StartRecording) - [StartStream](#common-StartStream) - [Stop](#common-Stop) - [StopCamera](#common-StopCamera) - [StopRecording](#common-StopRecording) - [StopStream](#common-StopStream) - [TakePhoto](#common-TakePhoto) - [Takeoff](#common-Takeoff) - [TiltCamera](#common-TiltCamera) - [Velocity](#common-Velocity) - [CameraMode.Mode](#common-CameraMode-Mode) - [CameraSettings.CameraType](#common-CameraSettings-CameraType) - [CameraSettings.MediaResolution](#common-CameraSettings-MediaResolution) - [CameraSettings.PhotoCaptureMode](#common-CameraSettings-PhotoCaptureMode) - [CameraSettings.PhotoFormat](#common-CameraSettings-PhotoFormat) - [CameraSettings.PhotoMode](#common-CameraSettings-PhotoMode) - [CameraSettings.StreamMode](#common-CameraSettings-StreamMode) - [CameraSettings.StreamQuality](#common-CameraSettings-StreamQuality) - [CameraSettings.VideoCaptureMode](#common-CameraSettings-VideoCaptureMode) - [CameraSettings.VideoFormat](#common-CameraSettings-VideoFormat) - [CameraSettings.VideoFrameRate](#common-CameraSettings-VideoFrameRate) - [CameraSettings.VideoMode](#common-CameraSettings-VideoMode) - [Command.CommandCode](#common-Command-CommandCode) - [DownloadMedia.CameraType](#common-DownloadMedia-CameraType) - [DownloadMedia.MediaType](#common-DownloadMedia-MediaType) - [Error.Code](#common-Error-Code) - [FlightPlanStatus.Status](#common-FlightPlanStatus-Status) - [Log.Level](#common-Log-Level) - [Media.ContentType](#common-Media-ContentType) - [MediaUpload.Result.ResultCode](#common-MediaUpload-Result-ResultCode) - [Metrics.CameraState](#common-Metrics-CameraState) - [Metrics.Capability](#common-Metrics-Capability) - [Metrics.GPSLevel](#common-Metrics-GPSLevel) - [Metrics.LiveStreamState](#common-Metrics-LiveStreamState) - [Metrics.RTKState](#common-Metrics-RTKState) - [Metrics.SignalLevel](#common-Metrics-SignalLevel) - [Metrics.State](#common-Metrics-State) - [Movement.Direction](#common-Movement-Direction) - [Movement.Speed](#common-Movement-Speed) - [ObstacleAvoidanceMode.Mode](#common-ObstacleAvoidanceMode-Mode) - [Scalar Value Types](#scalar-value-types)
## common.proto ### Ack DEPRECATED. Represents an "ack" message informing the drone application that a media part has been correctly received. Generated by the backend server. The drone application should *always* wait to receive an ack before sending the next media part. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | media_id | [int64](#int64) | | media ID of the received part | ### Attitude Represents the attitude of a drone's gimbal | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | roll | [float](#float) | | Z axis: gimbal rotates | | pitch | [float](#float) | | X axis: gimbal moves up (+) or down (-) | | yaw | [float](#float) | | Y axis: gimbal moves right (+) or left (-) | | has_roll | [bool](#bool) | | tells if the "roll" parameter should be used | | has_pitch | [bool](#bool) | | tells if the "pitch" parameter should be used | | has_yaw | [bool](#bool) | | tells if the "yaw" parameter should be used | ### CameraMode Represents a command to set the camera mode | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_type | [CameraSettings.CameraType](#common-CameraSettings-CameraType) | | camera type | | mode | [CameraMode.Mode](#common-CameraMode-Mode) | | camera mode | ### CameraSettings Represents the camera settings that the user can get/set | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_type | [CameraSettings.CameraType](#common-CameraSettings-CameraType) | | camera type | | stream_quality | [CameraSettings.StreamQuality](#common-CameraSettings-StreamQuality) | | quality of stream | | media_resolution | [CameraSettings.MediaResolution](#common-CameraSettings-MediaResolution) | | resolution of media (photos and videos) | | video_frame_rate | [CameraSettings.VideoFrameRate](#common-CameraSettings-VideoFrameRate) | | frame rate for videos | | photo_format | [CameraSettings.PhotoFormat](#common-CameraSettings-PhotoFormat) | | format of photos to be taken by the drone (JPEG, RAW, etc.) | | video_format | [CameraSettings.VideoFormat](#common-CameraSettings-VideoFormat) | | format of videos to be taken by the drone (MP4, MOV, etc.) | | photo_mode | [CameraSettings.PhotoMode](#common-CameraSettings-PhotoMode) | | mode of photos to be taken by the drone (single, interval, etc.) | | video_mode | [CameraSettings.VideoMode](#common-CameraSettings-VideoMode) | | mode of videos to be taken by the drone (normal, slow motion, etc.) | | photo_count | [int32](#int32) | | number of photos to take. 0: unknown/unchanged. -1: unlimited. Only used with PHOTO_MODE_INTERVAL, PHOTO_MODE_BURST, and PHOTO_MODE_AEB | | photo_interval | [uint32](#uint32) | | interval between photos, in seconds. 0: unknown/unchanged. Only used with PHOTO_MODE_INTERVAL and PHOTO_MODE_TIME_LAPSE (default: 2) | | photo_duration | [int32](#int32) | | duration of the command, in seconds. 0: unknown/unchanged. -1: unlimited. Only used with PHOTO_MODE_TIME_LAPSE | | photo_capture_mode | [CameraSettings.PhotoCaptureMode](#common-CameraSettings-PhotoCaptureMode) | | capture mode of photos to be taken by the drone (RGB, MS, etc.) | | video_capture_mode | [CameraSettings.VideoCaptureMode](#common-CameraSettings-VideoCaptureMode) | | capture mode of videos to be taken by the drone (RGB, NDVI, etc.) | | stream_mode | [CameraSettings.StreamMode](#common-CameraSettings-StreamMode) | | mode of stream (RGB, NDVI, thermal, etc.) | ### Circle Represents a command to make the drone make a circle around a GPS coordinate | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | speed | [Movement](#common-Movement) | | speed of movement | | duration | [uint64](#uint64) | | duration of circle, in **milliseconds** | | degrees | [int64](#int64) | | number of degrees to circle | | radius | [float](#float) | | distance between drone and center, in meters | | position | [Coordinates](#common-Coordinates) | | GPS coordinates of center | ### ClientData Represents the generic data object that is sent from client to drone. Each ClientData message *must* contain the current session, and *only one* of the other parameters. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | session | [ClientSession](#common-ClientSession) | | current session | | error | [Error](#common-Error) | | notifies when an error occurred | | command | [Command](#common-Command) | | contains a command for the drone | | flight_plan | [FlightPlan](#common-FlightPlan) | | **Deprecated.** contains a flight plan. Deprecated: use the `flight_plans` parameter | | ack | [Ack](#common-Ack) | | **Deprecated.** informs the drone application that a media part has been received. **sent by backend** | | heartbeat | [Empty](#common-Empty) | | (optionally) used to keep the connection alive | | media_upload_response | [MediaUploadResponse](#common-MediaUploadResponse) | | contains the URL to upload a media to | | flight_plans | [FlightPlanList](#common-FlightPlanList) | | contains a list of flight plans to run | ### ClientDataList | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | data | [ClientData](#common-ClientData) | repeated | | ### ClientSession Represents a session between a client and the server | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [string](#string) | | | | droneId | [string](#string) | | | ### Command Represents a command that can be sent to the drone | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [Command.CommandCode](#common-Command-CommandCode) | | command ID | | blocking | [bool](#bool) | | if true, the drone will not accept any other command until this one is completed | | empty | [Empty](#common-Empty) | | some commands do not require parameters | | return_home | [ReturnHome](#common-ReturnHome) | | used by RETURN_HOME | | hover | [Hover](#common-Hover) | | used by HOVER | | move_speed | [MoveSpeed](#common-MoveSpeed) | | used by MOVE_SPEED | | move_gps | [MoveGPS](#common-MoveGPS) | | used by MOVE_GPS | | circle | [Circle](#common-Circle) | | used by CIRCLE | | rotate | [Rotate](#common-Rotate) | | used by ROTATE | | tilt_camera | [TiltCamera](#common-TiltCamera) | | used by TILT_CAMERA | | land | [Land](#common-Land) | | used by LAND | | stop | [Stop](#common-Stop) | | used by STOP_MOVEMENT, STOP_FLIGHT_PLAN, STOP_ALL | | start_stream | [StartStream](#common-StartStream) | | used by START_STREAM | | stop_stream | [StopStream](#common-StopStream) | | used by STOP_STREAM | | take_photo | [TakePhoto](#common-TakePhoto) | | used by TAKE_PHOTO | | start_recording | [StartRecording](#common-StartRecording) | | used by START_RECORDING | | stop_recording | [StopRecording](#common-StopRecording) | | used by STOP_RECORDING | | manual_control | [ManualControl](#common-ManualControl) | | used by MANUAL_CONTROL | | move_altitude | [MoveAltitude](#common-MoveAltitude) | | used by MOVE_ALTITUDE | | download_media | [DownloadMedia](#common-DownloadMedia) | | used by DOWNLOAD_MEDIA | | stop_camera | [StopCamera](#common-StopCamera) | | used by STOP_CAMERA | | takeoff | [Takeoff](#common-Takeoff) | | used by TAKEOFF | | camera_settings | [CameraSettings](#common-CameraSettings) | | used by UPDATE_CAMERA_SETTINGS, CALIBRATE_GIMBAL | | camera_mode | [CameraMode](#common-CameraMode) | | used by SET_CAMERA_MODE | | obstacle_avoidance_mode | [ObstacleAvoidanceMode](#common-ObstacleAvoidanceMode) | | used by SET_OBSTACLE_AVOIDANCE_MODE | | configure_rtk | [ConfigureRtk](#common-ConfigureRtk) | | used by CONFIGURE_RTK | ### CommandList Represents a list of commands that can be sent to the drone | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | commands | [Command](#common-Command) | repeated | | ### ConfigureRtk Represents a command to configure the RTK module | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | enable | [bool](#bool) | | | ### Coordinates Represents a coordinate system | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | latitude | [float](#float) | | GPS latitude | | longitude | [float](#float) | | GPS longitude | | altitude | [float](#float) | | relative altitude (default: 1.0) | | heading | [float](#float) | | heading in degrees [-180,180]. 0 means north, 90 east | ### DownloadMedia Represents a command to make the drone download media from the SD card | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | media_type | [DownloadMedia.MediaType](#common-DownloadMedia-MediaType) | | type of media to download | | camera_type | [DownloadMedia.CameraType](#common-DownloadMedia-CameraType) | | type of camera to download media from | | not_before | [uint64](#uint64) | | download media taken after this time. A value of zero means unrestricted (i.e. no lower bound) | | not_after | [uint64](#uint64) | | download media taken before this time. A value of zero means unrestricted (i.e. no upper bound) | | max_downloads | [uint32](#uint32) | | maximum number of media to download. A value of zero means unlimited | | upload_to_client | [bool](#bool) | | if true, the media will not be stored on the server. Instead, the client will be responsible for processing `MediaUpload` requests and providing the upload URLs in `MediaUploadResponse` | ### DroneCapabilities Represents the drone's capabilities. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | stream_qualities | [CameraSettings.StreamQuality](#common-CameraSettings-StreamQuality) | repeated | supported stream qualities | | video_resolutions_framerates | [DroneCapabilities.ResolutionAndFrameRate](#common-DroneCapabilities-ResolutionAndFrameRate) | repeated | supported video resolutions and frame rates | | photo_formats | [CameraSettings.PhotoFormat](#common-CameraSettings-PhotoFormat) | repeated | supported photo formats | | video_formats | [CameraSettings.VideoFormat](#common-CameraSettings-VideoFormat) | repeated | supported video formats | | photo_modes | [CameraSettings.PhotoMode](#common-CameraSettings-PhotoMode) | repeated | supported photo modes | | video_modes | [CameraSettings.VideoMode](#common-CameraSettings-VideoMode) | repeated | supported video modes | | photo_capture_modes | [CameraSettings.PhotoCaptureMode](#common-CameraSettings-PhotoCaptureMode) | repeated | supported photo capture modes | | video_capture_modes | [CameraSettings.VideoCaptureMode](#common-CameraSettings-VideoCaptureMode) | repeated | supported video capture modes | | stream_modes | [CameraSettings.StreamMode](#common-CameraSettings-StreamMode) | repeated | supported stream modes | | obstacle_avoidance_modes | [ObstacleAvoidanceMode.Mode](#common-ObstacleAvoidanceMode-Mode) | repeated | supported obstacle avoidance modes | ### DroneCapabilities.ResolutionAndFrameRate | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | resolution | [CameraSettings.MediaResolution](#common-CameraSettings-MediaResolution) | | resolution | | frame_rate | [CameraSettings.VideoFrameRate](#common-CameraSettings-VideoFrameRate) | | frame rate | ### DroneData Represents the generic data object that is sent from drone to client. Each DroneData message *must* contain the current session, and *only one* of the other parameters. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | session | [DroneSession](#common-DroneSession) | | current session | | error | [Error](#common-Error) | | notifies when an error occurred | | media | [Media](#common-Media) | | **Deprecated.** contains either a media part, or notifies update abortion | | metrics | [Metrics](#common-Metrics) | | contains the current state of the drone | | command | [Command](#common-Command) | | (optionally) used to notify about drone's current action | | heartbeat | [Empty](#common-Empty) | | (optionally) used to keep the connection alive | | log | [Log](#common-Log) | | contains a log message | | flight_plan_status | [FlightPlanStatus](#common-FlightPlanStatus) | | contains info about the latest flight plan executed | | media_upload | [MediaUpload](#common-MediaUpload) | | contains a request to upload a media | | flight_plan_request | [FlightPlanRequest](#common-FlightPlanRequest) | | contains a request for flight plans | ### DroneSession Represents a session between a drone and the server | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [string](#string) | | | | droneId | [string](#string) | | **Deprecated.** | ### Empty Represents an empty message ### Error Represents an error message | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | code | [Error.Code](#common-Error-Code) | | error code | | description | [string](#string) | | textual description | ### FlightPlan Represents a flight plan that can be executed by the drone A flight plan can be referenced by ID if previously created from web app. Otherwise, a list of commands can be directly specified in this message, either as list of Command objects or in JSON format. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [string](#string) | | ID of flight plan | | commands | [CommandList](#common-CommandList) | | list of commands contained in the flight plan | | json | [bytes](#bytes) | | JSON representation of flight plan | | empty | [Empty](#common-Empty) | | use default flight plan assigned to drone in web app | | fp_id | [string](#string) | | (optional) a custom identifier that can be used to keep track of which flight plan is running at a certain time. The drone application will use this value in `Metrics` and `FlightPlanStatus` messages | | auto_home | [bool](#bool) | | (optional) if true, the drone will return home after executing the flight plan, or if an error occurs | | command_index | [uint32](#uint32) | | (optional) command index to start from (default: 0) | ### FlightPlanList Represents a list of FlightPlan objects | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | flight_plans | [FlightPlan](#common-FlightPlan) | repeated | list of flight plans | | store | [bool](#bool) | | (optional) indicates if the flight plans will be executed immediately (if false) or if they will be stored on the device for later use (if true) | | sync | [bool](#bool) | | (optional) indicates if a time sync between device and drone will happen before running the flight plan | ### FlightPlanRequest Represents a message asking for one or more flight plans. This message is sent from the drone to the server. The server will respond with a corresponding FlightPlan message, containing the flight plans associated to the IDs specified in this message. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | fp_ids | [string](#string) | repeated | (optional) identifiers of the flight plans that the drone wants to run. If not specified, the server will send the flight plan currently linked to the drone. | | store | [bool](#bool) | | (optional) the drone indicates if the flight plans will be ran immediately (if false) or stored on the device (if true). The server's reply should set the corresponding parameter to the same value in `FlightPlanList` | ### FlightPlanStatus Represents a message containing information about a flight plan | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | fp_id | [string](#string) | | identifier of the flight plan, as provided in the `FlightPlan` message | | status | [FlightPlanStatus.Status](#common-FlightPlanStatus-Status) | | current status of flight plan | | current_command | [uint32](#uint32) | | index of the command currently executing | | timestamp | [uint64](#uint64) | | timestamp (in milliseconds) of the message | ### Hover Represents a command to make the drone hover in place | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | duration | [uint64](#uint64) | | duration of hover, in seconds | ### Land Represents a land command | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | force | [bool](#bool) | | force landing if sensor is off or ground is unstable | ### Log Represents a log message | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | timestamp | [uint64](#uint64) | | timestamp (in milliseconds) of the generated log | | level | [Log.Level](#common-Log-Level) | | log level | | tag | [string](#string) | | can be used to give a specific context on the log | | message | [string](#string) | | actual mesaage | ### ManualControl Represents a command to make the drone enable/disable manual control | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | enable | [bool](#bool) | | true: enable manual control, false: disable manual control | ### Media DEPRECATED. Represents a media object, containing either a (part of) media being uploaded by the drone, or notifies the server that the upload has been aborted | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | data | [bytes](#bytes) | | raw data | | format | [string](#string) | | **Deprecated.** | | persist | [bool](#bool) | | informs the server that there may be multiple parts | | size | [int64](#int64) | | total size of the media being uploaded | | part_number | [int64](#int64) | | index of the current part | | total_parts | [int64](#int64) | | total number of parts | | content_type | [Media.ContentType](#common-Media-ContentType) | | type of media being uploaded | | id | [int64](#int64) | | unique per-session ID of the media | | abort | [bool](#bool) | | notifies the server that upload has been aborted | ### MediaUpload Represents a request or a result for a media upload | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | request | [MediaUpload.Request](#common-MediaUpload-Request) | | request to upload a media | | result | [MediaUpload.Result](#common-MediaUpload-Result) | | result of an upload | ### MediaUpload.Request Represents a request to upload a media | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | size | [int64](#int64) | | total size of the media being uploaded | | photo_format | [CameraSettings.PhotoFormat](#common-CameraSettings-PhotoFormat) | | format of photos to be uploaded by the drone (JPEG, RAW, etc.) | | video_format | [CameraSettings.VideoFormat](#common-CameraSettings-VideoFormat) | | format of videos to be uploaded by the drone (MP4, MOV, etc.) | | upload_to_client | [bool](#bool) | | specifies if the client will handle the upload of this media. This variable should contain the same value as in the `DownloadMedia` message previously received | | group_id | [string](#string) | | (optional) Group ID of the media. Multiple media can be grouped by using the same ID (e.g., multispectral images). Empty string means that the media is not part of a group | | download_index | [uint32](#uint32) | | (optional) index of the media in the list of media to download. | | download_count | [uint32](#uint32) | | (optional) total number of media to download | | flight_id | [string](#string) | | (optional) a unique identifier of the flight. Used when uploading media from a folder (usually, this is a randomly-generated string) | | flight_name | [string](#string) | | (optional) a (non-unique) name of the flight. Used when uploading media from a folder (usually, this is the folder name) | ### MediaUpload.Result Represents a result of a media upload | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [string](#string) | | unique ID of the media | | result_code | [MediaUpload.Result.ResultCode](#common-MediaUpload-Result-ResultCode) | | result of the upload | | description | [string](#string) | | (optional) additional information regarding the upload (e.g., if an error occurred) | ### MediaUploadResponse Represents a response to a media upload request | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [string](#string) | | unique ID of the media | | url | [string](#string) | | URL to upload the media to with an HTTP PUT request | ### Metrics Represents the current drone's state. All fields are *optional* | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | timestamp | [uint64](#uint64) | | timestamp (in milliseconds) of the drone state | | battery | [uint32](#uint32) | | battery percentage [0,100] | | state | [Metrics.State](#common-Metrics-State) | | current state | | position | [Coordinates](#common-Coordinates) | | current position | | gps_level | [Metrics.GPSLevel](#common-Metrics-GPSLevel) | | current GPS level | | uplink_level | [Metrics.SignalLevel](#common-Metrics-SignalLevel) | | level of uplink signal | | downlink_level | [Metrics.SignalLevel](#common-Metrics-SignalLevel) | | level of downlink signal | | gimbal_attitude | [Attitude](#common-Attitude) | | attitude of primary gimbal | | flight_plan_id | [string](#string) | | if state is `FLIGHT_PLAN`, identifier of the current flight plan as provided in the `FlightPlan` message | | thermal_gimbal_attitude | [Attitude](#common-Attitude) | | attitude of thermal camera's gimbal | | camera_state | [Metrics.CameraState](#common-Metrics-CameraState) | | state of primary camera | | thermal_camera_state | [Metrics.CameraState](#common-Metrics-CameraState) | | state of thermal camera | | home_position | [Coordinates](#common-Coordinates) | | home (i.e., takeoff) position | | drone_type | [string](#string) | | drone model | | client_type | [string](#string) | | client (e.g., smartphone) model | | capabilities | [Metrics.Capability](#common-Metrics-Capability) | repeated | **Deprecated.** capabilities of drone | | velocity | [Velocity](#common-Velocity) | | velocity of drone | | controller_position | [Coordinates](#common-Coordinates) | | position of controller | | controller_battery | [uint32](#uint32) | | battery percentage of controller [0,100] | | live_stream_state | [Metrics.LiveStreamState](#common-Metrics-LiveStreamState) | | state of live streaming | | available_storage | [uint64](#uint64) | | available storage, in bytes | | recording_time | [uint32](#uint32) | | current video's recording time of primary camera, in seconds | | camera_settings | [CameraSettings](#common-CameraSettings) | | current camera settings of the drone | | drone_capabilities | [DroneCapabilities](#common-DroneCapabilities) | | drone capabilities | | camera_mode | [CameraMode.Mode](#common-CameraMode-Mode) | | mode of primary camera | | gps_satellite_count | [uint32](#uint32) | | number of satellites | | upgradable_components | [string](#string) | | components that can be upgraded | | obstacle_avoidance_mode | [ObstacleAvoidanceMode.Mode](#common-ObstacleAvoidanceMode-Mode) | | obstacle avoidance type | | rtk_state | [Metrics.RTKState](#common-Metrics-RTKState) | | RTK state | ### MoveAltitude Represents a command to make the drone move to a specific altitude | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | altitude | [float](#float) | | altitude to move to, in meters (default: 1.0) | | speed | [Movement](#common-Movement) | | speed of movement | | constant_speed | [bool](#bool) | | (optional) if true, drone does not decelerate while approaching destination | ### MoveGPS Represents a command to make the drone move to a specific GPS coordinate | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | position | [Coordinates](#common-Coordinates) | | GPS coordinates of destination | | speed | [Movement](#common-Movement) | | speed of movement | | auto_heading | [bool](#bool) | | if true, heading is towards the destination | | constant_speed | [bool](#bool) | | (optional) if true, drone does not decelerate while approaching destination | | heading_speed | [Movement](#common-Movement) | | (optional) speed of heading. If not specified, drone will use the `speed` parameter | | up_speed | [Movement](#common-Movement) | | (optional) speed of up/down. If not specified, drone will use the `speed` parameter | ### MoveSpeed Represents a command to make the drone move in a specific direction, relative to the drone itself | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | forward | [Movement](#common-Movement) | | forward/backward movement | | right | [Movement](#common-Movement) | | right/left movement | | up | [Movement](#common-Movement) | | up/down movement | | rotate | [Movement](#common-Movement) | | clockwise/counter-clockwise rotation | | duration | [uint64](#uint64) | | duration of movement, in **milliseconds** (default: 10000) | ### Movement Represents a movement command that can be sent to the drone | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | speed | [Movement.Speed](#common-Movement-Speed) | | speed of movement (default: 1) | | reversed | [bool](#bool) | | **Deprecated.** (deprecated) | | direction | [Movement.Direction](#common-Movement-Direction) | | direction of movement | | absolute_speed | [float](#float) | | (optional) absolute speed value, either in m/s (for movement) or deg/s (for rotation). If non-zero, the `speed` value is ignored and this is used instead | ### ObstacleAvoidanceMode Represents a command to set the obstacle avoidance mode | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | mode | [ObstacleAvoidanceMode.Mode](#common-ObstacleAvoidanceMode-Mode) | | | ### ReturnHome Represents a command to make the drone return to its takeoff point and land | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | altitude | [float](#float) | | altitude (relative to takeoff point) to return to, in meters (default: 20.0) | | force_land | [bool](#bool) | | force landing if sensor is off or ground is unstable | | return_to_controller | [bool](#bool) | | (optional) return to controller position | ### Rotate Represents a command to make the drone rotate in place | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | heading | [float](#float) | | heading to rotate to, in degrees | | speed | [Movement](#common-Movement) | | speed of rotation | | relative_heading | [bool](#bool) | | if true: "heading" is relative to current heading. If false: heading is relative to the north | | forward | [Movement](#common-Movement) | | optional forward movement used to make the drone do an arc | | right | [Movement](#common-Movement) | | optional right movement used to make the drone do a "reverse" arc | | up | [Movement](#common-Movement) | | optional up movement to make the drone go up or down | | constant_speed | [bool](#bool) | | (optional) if true, drone does not decelerate while approaching destination | ### StartRecording Represents a command to make the drone start recording a video | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_settings | [CameraSettings](#common-CameraSettings) | | camera settings to use | ### StartStream Represents a command to make the drone start a live stream video to a specific URL | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_settings | [CameraSettings](#common-CameraSettings) | | camera settings to use | | url | [string](#string) | | URL to stream to | ### Stop Represents a command to make the drone stop doing whatever it's doing | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | go_home | [bool](#bool) | | if true, drone will automatically return to takeoff point and land | ### StopCamera Represents a command to make the drone stop taking photos and videos, and also stops any gimbal movements | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_settings | [CameraSettings](#common-CameraSettings) | | camera settings to use | ### StopRecording Represents a command to make the drone stop recording a video | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_settings | [CameraSettings](#common-CameraSettings) | | camera settings to use | ### StopStream Represents a command to make the drone stop streaming video | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_settings | [CameraSettings](#common-CameraSettings) | | camera settings to use | ### TakePhoto Represents a command to make the drone take a photo | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_settings | [CameraSettings](#common-CameraSettings) | | camera settings to use | | count | [uint32](#uint32) | | **Deprecated.** number of photos to take. 0: unlimited. Only used with PHOTO_MODE_INTERVAL, PHOTO_MODE_BURST, and PHOTO_MODE_AEB | | interval | [uint32](#uint32) | | **Deprecated.** interval between photos, in seconds. Only used with PHOTO_MODE_INTERVAL and PHOTO_MODE_TIME_LAPSE (default: 2) | | duration | [uint32](#uint32) | | **Deprecated.** duration of the command, in seconds. 0: unlimited. Only used with PHOTO_MODE_TIME_LAPSE | ### Takeoff Represents a takeoff command | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | altitude | [float](#float) | | altitude to reach, in meters (default: 1.0) | | speed | [Movement](#common-Movement) | | speed to reach the desired altitude | ### TiltCamera Represents a command to make the camera's gimbal tilt | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | yaw | [float](#float) | | **Deprecated.** yaw to tilt to, in degrees | | pitch | [float](#float) | | **Deprecated.** pitch to tilt to, in degrees | | roll | [float](#float) | | **Deprecated.** roll to tilt to, in degrees | | speed | [Movement](#common-Movement) | | speed of movement | | camera_settings | [CameraSettings](#common-CameraSettings) | | camera settings to use | | attitude | [Attitude](#common-Attitude) | | gimbal attitude | ### Velocity Represents a velocity vector using the NED coordinate system | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | x | [float](#float) | | velocity in north direction, in m/s | | y | [float](#float) | | velocity in east direction, in m/s | | z | [float](#float) | | velocity in down direction, in m/s | ### CameraMode.Mode | Name | Number | Description | | ---- | ------ | ----------- | | MODE_UNKNOWN | 0 | unknown mode | | MODE_PHOTO | 1 | photo mode | | MODE_VIDEO | 2 | video mode | ### CameraSettings.CameraType | Name | Number | Description | | ---- | ------ | ----------- | | CAMERA_PRIMARY | 0 | drone's primary camera (e.g., RGB) | | CAMERA_SECONDARY | 1 | drone's secondary camera (e.g., thermal) | ### CameraSettings.MediaResolution | Name | Number | Description | | ---- | ------ | ----------- | | RESOLUTION_NONE | 0 | unknown (if get) / unchanged (if set) | | RESOLUTION_DEFAULT | 1 | use default resolution | | RESOLUTION_720P | 2 | use 720p resolution | | RESOLUTION_1080P | 3 | use 1080p resolution | | RESOLUTION_1440P | 4 | use 1440p resolution | | RESOLUTION_2160P | 5 | use 2160p resolution | ### CameraSettings.PhotoCaptureMode | Name | Number | Description | | ---- | ------ | ----------- | | PHOTO_CAPTURE_MODE_NONE | 0 | unknown (if get) / unchanged (if set) | | PHOTO_CAPTURE_MODE_DEFAULT | 1 | use default capture mode | | PHOTO_CAPTURE_MODE_RGB | 2 | capture only RGB | | PHOTO_CAPTURE_MODE_RGB_MS | 3 | capture RGB and multispectral | | PHOTO_CAPTURE_MODE_INFRARED | 4 | capture infrared | ### CameraSettings.PhotoFormat | Name | Number | Description | | ---- | ------ | ----------- | | PHOTO_FORMAT_NONE | 0 | unknown (if get) / unchanged (if set) | | PHOTO_FORMAT_DEFAULT | 1 | use default photo format | | PHOTO_FORMAT_JPEG | 2 | use JPEG photo format | | PHOTO_FORMAT_RAW | 3 | use RAW photo format | | PHOTO_FORMAT_RAW_AND_JPEG | 4 | use RAW and JPEG photo format | | PHOTO_FORMAT_TIFF | 5 | use TIFF photo format | ### CameraSettings.PhotoMode | Name | Number | Description | | ---- | ------ | ----------- | | PHOTO_MODE_NONE | 0 | unknown (if get) / unchanged (if set) | | PHOTO_MODE_SINGLE | 1 | shoot a single photo | | PHOTO_MODE_INTERVAL | 2 | shoot photos in sequence, with a specific interval | | PHOTO_MODE_BURST | 3 | shoot photos in rapid succession | | PHOTO_MODE_HDR | 4 | HDR mode | | PHOTO_MODE_EHDR | 5 | Enhanced HDR mode | | PHOTO_MODE_HYPER_LIGHT | 6 | HyperLight mode for low-light environments | | PHOTO_MODE_AEB | 7 | Automatic Exposure Bracketing mode. Shoot multiple photos at different exposures | | PHOTO_MODE_TIME_LAPSE | 8 | Time-Lapse mode. Takes a series of photos with specific interval, then outputs a video | | PHOTO_MODE_PANORAMA | 9 | Takes a series of photos for panorama mode | | PHOTO_MODE_HIGH_RESOLUTION | 10 | High-Resolution mode | ### CameraSettings.StreamMode | Name | Number | Description | | ---- | ------ | ----------- | | STREAM_MODE_NONE | 0 | unknown (if get) / unchanged (if set) | | STREAM_MODE_DEFAULT | 1 | use default stream type | | STREAM_MODE_RGB | 2 | use RGB stream | | STREAM_MODE_NDVI | 3 | use NDVI stream | | STREAM_MODE_INFRARED | 4 | use infrared stream | ### CameraSettings.StreamQuality | Name | Number | Description | | ---- | ------ | ----------- | | STREAM_QUALITY_NONE | 0 | unknown (if get) / unchanged (if set) | | STREAM_QUALITY_NORMAL | 1 | use normal stream quality | | STREAM_QUALITY_HIGH | 2 | use high stream quality | | STREAM_QUALITY_LOW | 3 | use low stream quality | ### CameraSettings.VideoCaptureMode | Name | Number | Description | | ---- | ------ | ----------- | | VIDEO_CAPTURE_MODE_NONE | 0 | unknown (if get) / unchanged (if set) | | VIDEO_CAPTURE_MODE_DEFAULT | 1 | use default capture mode | | VIDEO_CAPTURE_MODE_RGB | 2 | capture only RGB | | VIDEO_CAPTURE_MODE_RGB_NDVI | 3 | capture both RGB and NDVI | | VIDEO_CAPTURE_MODE_INFRARED | 4 | capture infrared | ### CameraSettings.VideoFormat | Name | Number | Description | | ---- | ------ | ----------- | | VIDEO_FORMAT_NONE | 0 | unknown (if get) / unchanged (if set) | | VIDEO_FORMAT_DEFAULT | 1 | use default video format | | VIDEO_FORMAT_MP4 | 2 | use MP4 video format | | VIDEO_FORMAT_MOV | 3 | use MOV video format | | VIDEO_FORMAT_TIFF_SEQ | 4 | use TIFF sequence video format | | VIDEO_FORMAT_SEQ | 5 | use sequence video format | ### CameraSettings.VideoFrameRate | Name | Number | Description | | ---- | ------ | ----------- | | FRAME_RATE_NONE | 0 | unknown (if get) / unchanged (if set) | | FRAME_RATE_DEFAULT | 1 | use default frame rate | | FRAME_RATE_24FPS | 2 | use 24 fps frame rate | | FRAME_RATE_30FPS | 3 | use 30 fps frame rate | | FRAME_RATE_48FPS | 4 | use 48 fps frame rate | | FRAME_RATE_60FPS | 5 | use 60 fps frame rate | | FRAME_RATE_120FPS | 6 | use 120 fps frame rate | ### CameraSettings.VideoMode | Name | Number | Description | | ---- | ------ | ----------- | | VIDEO_MODE_NONE | 0 | unknown (if get) / unchanged (if set) | | VIDEO_MODE_NORMAL | 1 | normal video mode | | VIDEO_MODE_SLOW_MOTION | 2 | slow motion mode | | VIDEO_MODE_HDR | 3 | HDR video mode | ### Command.CommandCode | Name | Number | Description | | ---- | ------ | ----------- | | NONE | 0 | default invalid value | | TAKEOFF | 1 | | | LAND | 2 | drone lands | | RETURN_HOME | 3 | drone returns to home position and lands | | HOVER | 4 | wait for a specified amount of time | | SET_OBSTACLE_AVOIDANCE_MODE | 10 | | | CONFIGURE_RTK | 11 | configure RTK | | MOVE_SPEED | 20 | | | MOVE_GPS | 21 | move to a specific GPS location | | STOP_MOVEMENT | 22 | stop all current movements | | STOP_FLIGHT_PLAN | 23 | stop current flight plan | | CIRCLE | 24 | performs a circle around a fixed GPS location | | ROTATE | 25 | rotate drone while hovering | | MOVE_ALTITUDE | 26 | move drone up or down | | START_STREAM | 30 | | | STOP_STREAM | 31 | stop streaming | | TAKE_PHOTO | 32 | take one or more photos | | START_RECORDING | 33 | start recording | | STOP_RECORDING | 34 | stop recording | | TILT_CAMERA | 35 | move camera's gimbal | | STOP_CAMERA | 36 | stops all operations on camera | | UPDATE_CAMERA_SETTINGS | 37 | update camera settings | | SET_CAMERA_MODE | 38 | set camera mode | | DELETE_ALL_MEDIA | 50 | | | REBOOT_DRONE | 51 | reboot drone | | CALIBRATE_COMPASS | 52 | calibrate drone's compass | | MANUAL_CONTROL | 53 | (optional) force enabling manual control | | DOWNLOAD_MEDIA | 54 | download some or all medias from drone's storage | | STOP_ALL | 55 | stop all current operations (movements, camera, flight plan) | | TIME_SYNC | 56 | synchronizes the drone time with the device time | | CALIBRATE_GIMBAL | 57 | calibrate drone's gimbal | ### DownloadMedia.CameraType | Name | Number | Description | | ---- | ------ | ----------- | | CAMERA_TYPE_ALL | 0 | | | CAMERA_TYPE_NORMAL | 1 | | | CAMERA_TYPE_THERMAL | 2 | | ### DownloadMedia.MediaType | Name | Number | Description | | ---- | ------ | ----------- | | MEDIA_TYPE_ALL | 0 | | | MEDIA_TYPE_PHOTO | 1 | | | MEDIA_TYPE_VIDEO | 2 | | ### Error.Code | Name | Number | Description | | ---- | ------ | ----------- | | UNKNOWN | 0 | | | DRONE | 100 | 1xx: Drone | | DRONE_NOT_CONNECTED | 101 | | | DRONE_NOT_READY | 102 | | | DRONE_NOT_CALIBRATED | 103 | | | DRONE_CONNECTION_ERROR | 104 | | | DRONE_STATE_NOT_LANDED | 110 | | | DRONE_STATE_NOT_HOVERING | 111 | | | DRONE_STATE_NOT_FLYING | 112 | | | DRONE_STATE_NOT_FLIGHT_PLAN | 113 | | | DRONE_STATE_NOT_DOWNLOADING | 114 | | | DRONE_STATE_NOT_IDLE | 115 | either landed or hovering | | DRONE_STATE_NOT_IN_AIR | 116 | either hovering or flying | | DRONE_NO_SENSOR_INFO | 117 | | | DRONE_LOW_BATTERY | 118 | | | DRONE_BAD_SIGNAL | 119 | | | DRONE_BAD_GPS | 120 | | | DRONE_COMMAND_BAD_PARAMETERS | 140 | | | DRONE_COMMAND_FAILED_TO_EXECUTE | 141 | | | DRONE_LANDING_NEED_CONFIRMATION | 142 | | | DRONE_DISTANCE_TOO_FAR | 143 | | | DRONE_CAMERA_NOT_FOUND | 160 | | | DRONE_CAMERA_NOT_IDLE | 161 | | | DRONE_CAMERA_NOT_RECORDING | 162 | | | DRONE_STREAM_START_FAILED | 163 | | | DRONE_FLIGHT_PLAN_PARSING_ERROR | 170 | | | DRONE_FLIGHT_PLAN_IN_PROGRESS | 171 | | | DRONE_FLIGHT_PLAN_FAILED | 172 | | | DRONE_DOWNLOAD_ERROR | 180 | | | DRONE_MEDIA_DELETE_FAILED | 181 | | | DRONE_MEDIA_NOT_FOUND | 182 | | | DRONE_FEATURE_NOT_IMPLEMENTED | 190 | | | DRONE_FEATURE_NOT_SUPPORTED | 191 | | | DRONE_UNEXPECTED_ERROR | 192 | | | CLIENT | 200 | 2xx: Client | | BAD_REQUEST | 201 | | | UNKNOWN_REQUEST | 202 | | | AUTHENTICATION_ERROR | 300 | 3xx: Backend | | DB_ERROR | 301 | | ### FlightPlanStatus.Status | Name | Number | Description | | ---- | ------ | ----------- | | UNKNOWN | 0 | flight plan has not started or no info has been received from the drone yet | | STARTED | 1 | flight plan has started | | COMPLETED | 2 | flight plan has completed successfully | | FAILED | 3 | flight plan has failed | ### Log.Level | Name | Number | Description | | ---- | ------ | ----------- | | CRITICAL | 0 | | | ERROR | 1 | | | WARNING | 2 | | | INFO | 3 | | | DEBUG | 4 | | | TRACE | 5 | | ### Media.ContentType | Name | Number | Description | | ---- | ------ | ----------- | | UNKNOWN | 0 | | | VIDEO_MP4 | 10 | | | VIDEO_RAW | 11 | | | PHOTO_JPEG | 20 | | | PHOTO_PNG | 21 | | | PHOTO_RAW | 22 | | ### MediaUpload.Result.ResultCode | Name | Number | Description | | ---- | ------ | ----------- | | SUCCESS | 0 | media uploaded successfully | | ERROR_GENERIC | 1 | generic error | | ERROR_DOWNLOAD | 2 | failed to download the media from the drone | | ERROR_UPLOAD | 3 | failed to upload the media to the specified URL | ### Metrics.CameraState | Name | Number | Description | | ---- | ------ | ----------- | | CAMERA_UNKNOWN | 0 | camera not available or unknown state | | CAMERA_IDLE | 1 | camera is ready to accept commands | | CAMERA_PHOTO | 2 | camera is shooting photo | | CAMERA_VIDEO | 3 | camera is recording video | | CAMERA_DOWNLOAD | 4 | camera cannot be used, download in progress | ### Metrics.Capability | Name | Number | Description | | ---- | ------ | ----------- | | THERMAL_CAMERA | 0 | thermal camera available | | RESOLUTION_1440P | 1 | 2K resolution available | | RESOLUTION_2160P | 2 | 4K resoliution available | ### Metrics.GPSLevel | Name | Number | Description | | ---- | ------ | ----------- | | GPS_UNKNOWN | 0 | GPS level is unknown | | BAD | 1 | bad signal, not allowed to takeoff | | OK | 2 | takeoff allowed but position may be imprecise, use caution | | GOOD | 3 | good signal, position is precise | ### Metrics.LiveStreamState | Name | Number | Description | | ---- | ------ | ----------- | | STREAM_UNKNOWN | 0 | unknown state | | STREAM_NOT_CONNECTED | 1 | not connected (i.e., live stream is disabled) | | STREAM_INITIALIZING | 2 | initializing | | STREAM_INITIALIZED | 3 | initialized | | STREAM_CONNECTION_STARTED | 4 | connection to server has started | | STREAM_AUTHENTICATED | 5 | authenticated to server | | STREAM_CONNECTED | 6 | connected to server (streaming is ongoing) | | STREAM_DISCONNECTED | 7 | disconnected from server | | STREAM_AUTHENTICATION_ERROR | 8 | authentication error | | STREAM_CONNECTION_ERROR | 9 | connection error | | STREAM_START_ERROR | 10 | start stream error | | STREAM_INITIALIZATION_ERROR | 11 | initialization error | | STREAM_RESTARTING | 12 | trying to reconnect | ### Metrics.RTKState | Name | Number | Description | | ---- | ------ | ----------- | | RTK_UNKNOWN | 0 | unknown state | | RTK_DISCONNECTED | 1 | RTK disconnected | | RTK_CONNECTED | 2 | RTK connected | | RTK_DISABLED | 3 | RTK module is disabled in drone | ### Metrics.SignalLevel | Name | Number | Description | | ---- | ------ | ----------- | | SIGNAL_UNKNOWN | 0 | radio signal is unknown | | SIGNAL_BAD | 1 | bad signal, connection unstable | | SIGNAL_OK | 2 | connection is stable but data may be lost | | SIGNAL_GOOD | 3 | good signal | ### Metrics.State | Name | Number | Description | | ---- | ------ | ----------- | | UNKNOWN | 0 | missing connection | | LANDED | 1 | drone is landed | | HOVERING | 2 | drone is in air, hovering | | FLYING | 3 | drone is in air, moving | | FLIGHT_PLAN | 4 | drone is executing a flight plan | | DOWNLOADING | 5 | drone is landed, media are being downloaded | | OTHER | 6 | other state (e.g., calibrating compass) | ### Movement.Direction | Name | Number | Description | | ---- | ------ | ----------- | | DIRECTION_AUTO | 0 | the drone application decides the most appropriate direction | | DIRECTION_NORMAL | 1 | either forward, right, up, or clockwise | | DIRECTION_REVERSED | 2 | either backward, left, down, or counter-clockwise | ### Movement.Speed | Name | Number | Description | | ---- | ------ | ----------- | | NONE | 0 | | | VERY_SLOW | 1 | | | SLOW | 2 | | | NORMAL | 3 | | | FAST | 4 | | | VERY_FAST | 5 | | | MAX_SPEED | 6 | | ### ObstacleAvoidanceMode.Mode | Name | Number | Description | | ---- | ------ | ----------- | | MODE_UNKNOWN | 0 | unknown type | | MODE_OFF | 1 | obstacle avoidance is off | | MODE_BRAKE | 2 | drone will brake | | MODE_BYPASS | 3 | drone will try to avoid obstacle | ## 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) |