Skip to content

API documentation 0.3.0

Jeffrey Jones edited this page Jan 14, 2022 · 2 revisions

Protocol Documentation

Top

dcs/atmosphere/v0/atmosphere.proto

GetTemperatureAndPressureRequest

Field Type Label Description
position dcs.common.v0.Position The position on the map we want the wind information for. Requires lat/lon/alt fields to be populated, there are no default values

GetTemperatureAndPressureResponse

Field Type Label Description
temperature float The temperature in Kelvin
pressure float The pressure in Pascals

GetWindRequest

Field Type Label Description
position dcs.common.v0.Position The position on the map we want the wind information for. Requires lat/lon/alt fields to be populated, there are no default values

GetWindResponse

Field Type Label Description
heading float The heading the wind is coming from.
strength float The strength of the wind in meters per second

GetWindWithTurbulenceRequest

Field Type Label Description
position dcs.common.v0.Position The position on the map we want the wind information for. Requires lat/lon/alt fields to be populated, there are no default values

GetWindWithTurbulenceResponse

Field Type Label Description
heading float The heading the wind is coming from.
strength float The strength of the wind in meters per second.

AtmosphereService

https://wiki.hoggitworld.com/view/DCS_singleton_atmosphere

Method Name Request Type Response Type Description
GetWind GetWindRequest GetWindResponse https://wiki.hoggitworld.com/view/DCS_func_getWind
GetWindWithTurbulence GetWindWithTurbulenceRequest GetWindWithTurbulenceResponse https://wiki.hoggitworld.com/view/DCS_func_getWindWithTurbulence
GetTemperatureAndPressure GetTemperatureAndPressureRequest GetTemperatureAndPressureResponse https://wiki.hoggitworld.com/view/DCS_func_getWindWithTurbulence

Top

dcs/coalition/v0/coalition.proto

AddGroupRequest

Field Type Label Description
country dcs.common.v0.Country The coalition is determined by the provided Country and the coalition setup of the mission
group_category dcs.common.v0.GroupCategory
ground_template AddGroupRequest.GroundGroupTemplate
ship_template AddGroupRequest.ShipGroupTemplate
helicopter_template AddGroupRequest.HelicopterGroupTemplate
plane_template AddGroupRequest.PlaneGroupTemplate

AddGroupRequest.GroundGroupTemplate

Field Type Label Description
group_id uint32 optional
hidden bool
late_activation bool
name string
position dcs.common.v0.Position
route AddGroupRequest.Point repeated
start_time uint32
task string
task_selected bool
tasks AddGroupRequest.Task repeated
uncontrollable bool
units AddGroupRequest.GroundUnitTemplate repeated
visible bool

AddGroupRequest.GroundUnitTemplate

Field Type Label Description
name string
type string
position dcs.common.v0.Position
unit_id uint32 optional
heading uint32 optional
skill AddGroupRequest.Skill

AddGroupRequest.HelicopterGroupTemplate

AddGroupRequest.HelicopterUnitTemplate

AddGroupRequest.PlaneGroupTemplate

AddGroupRequest.PlaneUnitTemplate

AddGroupRequest.Point

Field Type Label Description
position dcs.common.v0.Position
altitude_type AddGroupRequest.Point.AltitudeType
type AddGroupRequest.Point.Type
action string
form string
speed double

AddGroupRequest.ShipGroupTemplate

AddGroupRequest.ShipUnitTemplate

AddGroupRequest.Task

AddGroupResponse

Field Type Label Description
group dcs.common.v0.Group

GetBullseyeRequest

Field Type Label Description
coalition dcs.common.v0.Coalition A specific coalition must be used for this API call. Do not use COALITION_ALL

GetBullseyeResponse

Field Type Label Description
position dcs.common.v0.Position

GetGroupsRequest

Field Type Label Description
coalition dcs.common.v0.Coalition
category dcs.common.v0.GroupCategory optional

GetGroupsResponse

Field Type Label Description
groups dcs.common.v0.Group repeated

GetPlayersRequest

Field Type Label Description
coalition dcs.common.v0.Coalition

GetPlayersResponse

Field Type Label Description
units dcs.common.v0.Unit repeated

AddGroupRequest.Point.AltitudeType

Name Number Description
ALTITUDE_TYPE_UNSPECIFIED 0
ALTITUDE_TYPE_BAROMETRIC 1
ALTITUDE_TYPE_RADIO 2

AddGroupRequest.Point.Type

Name Number Description
TYPE_UNSPECIFIED 0
TAKEOFF 1
TAKEOFF_PARKING 2
TURNING_POINT 3
TAKEOFF_PARKING_HOT 4
LAND 5

AddGroupRequest.Skill

Name Number Description
SKILL_RANDOM 0
SKILL_AVERAGE 1
SKILL_GOOD 2
SKILL_HIGH 3
SKILL_EXCELLENT 4
SKILL_PLAYER 5

CoalitionService

https://wiki.hoggitworld.com/view/DCS_singleton_coalition

Method Name Request Type Response Type Description
AddGroup AddGroupRequest AddGroupResponse https://wiki.hoggitworld.com/view/DCS_func_addGroup
GetGroups GetGroupsRequest GetGroupsResponse https://wiki.hoggitworld.com/view/DCS_func_getGroups
GetBullseye GetBullseyeRequest GetBullseyeResponse Get the Bullseye for the coalition

This position is set at mission start and does not change for the duration of the mission.

See https://wiki.hoggitworld.com/view/DCS_func_getMainRefPoint for more details | | GetPlayers | GetPlayersRequest | GetPlayersResponse | https://wiki.hoggitworld.com/view/DCS_func_getPlayers |

Top

dcs/common/v0/common.proto

Airbase

An instance of a DCS Airfield

Field Type Label Description
id uint32 optional The DCS generated ID. Only used when the airfield is also a unit (e.g. an Aicraft Carrier)
name string TODO: Fill this in
callsign string TODO: Fill this in
coalition Coalition The coalition the unit belongs to. This can change mid-mission if an airfield is captured
position Position The position of the center point of the airfield.
category AirbaseCategory What category the airfield belongs to.
display_name string TODO: Fill this in

Cargo

An instance of a DCS Cargo object

Group

An instance of a DCS group

Field Type Label Description
id uint32 The DCS generated ID
name string The name of the group as assigned in the mission editor
coalition Coalition The coalition of the group
category GroupCategory The group category.

Initiator

The initiator of an event

The initiator of an event. For things like shooting events it is usually a vehicle but it can be almost anything depending on the event

Field Type Label Description
unknown Unknown
unit Unit
weapon Weapon
static Static
scenery Scenery
airbase Airbase
cargo Cargo

MarkPanel

A MarkPanel

A MarkPanel visible on the F10 map. These can be used for reference by players but can also be used by things like Jester for setting waypoints

Field Type Label Description
id uint32
time double I have no idea what this time value means
initiator Unit
coalition Coalition optional
group_id uint32 optional
text string optional
position Position

Position

Position of an object in DCS

Latitude and Longitude are in Decimal Degrees format (e.g. 41.33 / 37.21). Negative values are used for West of the meridian and south of the equator

Altitude is given in meters above Mean Sea Level (MSL) and can be a decimal value.

Field Type Label Description
lat double Latitude in Decimal Degrees format
lon double Longitude in Decimal Degrees format
alt double Altitude in Meters above Mean Sea Level (MSL)

Scenery

An instance of a DCS scenery object

Static

An instance of a DCS static object

These objects are often buildings but can also be vehicles that have no AI or other game behaviour aside from being destroyable

Target

The target of an event

The target of an event. For things like shooting events it is usually a vehicle but it can be almost anything depending on the event

Field Type Label Description
unknown Unknown
unit Unit
weapon Weapon
static Static
scenery Scenery
airbase Airbase
cargo Cargo

Unit

An instance of a DCS Unit

A unit is an "active" unit in a DCS mission. This means it has an attached AI that moves and shoots. Units include aircraft, ground units, ships, weapons etc.

Field Type Label Description
id uint32 The DCS generated ID
name string The name of the unit as assigned in the mission editor
callsign string The DCS assigned callsign if one exists. e.g. "Enfield 11"
coalition Coalition The coalition the unit belongs to
type string The DCS type-name of the unit. e.g "MiG-29A", "ZSU_57_2" or "Hawk ln"
position Position The position of the unit
player_name string optional The name of the player if one is in control of the unit
group_name string The name of the group that the unit belongs to
number_in_group uint32 The number of this unit in the group. Does not change as units are destroyed
speed double The horizontal speed of the unit. If it is doing mach one straight up then the speed will be 0
heading double The heading of the unit
category GroupCategory The group category.

Unknown

This type is returned if an object category cannot be determined

The base object includes the getName() function so even for an unknown type we should be able to get the name

Field Type Label Description
name string

Vector

A vector in a left-handed coordinate system with +z being north, -z south, +x east, -x west, +y up and -y down (as opposed to DCS' unusual right-handed coordinate system where x is north/ south and z is west/east; the underlying conversion is basically swapping x and z as in x=z and z=x).

Field Type Label Description
x double
y double
z double

Weapon

An instance of a DCS weapon

These weapons include everything from autocannon HE shells up to massive ship-killer missiles

Field Type Label Description
id uint32 The DCS generated ID
type string The DCS type-name of the weapon. e.g "Matra_S530D", "HAWK_RAKETA" or "weapons.shells.53-UOR-281U"
position Position The position of the Weapon

AirbaseCategory

The category the object belongs to

Some of these are less than obvious. For example an oilrig counts as a HELIPAD airfield.

Name Number Description
AIRBASE_CATEGORY_UNSPECIFIED 0
AIRBASE_CATEGORY_AIRDROME 1
AIRBASE_CATEGORY_HELIPAD 2
AIRBASE_CATEGORY_SHIP 3

Coalition

Coalitions in DCS

The coalitions supported by DCS. The NEUTRAL coalition is a relatively new one and may not be as supported as the belligerant ones.

Name Number Description
COALITION_ALL 0 protolint:disable:next ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH
COALITION_NEUTRAL 1
COALITION_RED 2
COALITION_BLUE 3

Country

Countries in DCS

Every country belongs to a coalition and this association is set per mission. The values of these enums are correct such that they will work with DCS however the text names have been Made to follow gRPC conventions to to aid in language bindings and acronyms have been replaced with their full english names to aid in recognition. In some cases this can be a big change (e.g. USSR -> Soviet Union).

We have also added a dummy value for the missing enum value 14 to prevent possible issues in the various language bindings

See https://wiki.hoggitworld.com/view/DCS_enum_country for more information

Name Number Description
COUNTRY_UNSPECIFIED 0
COUNTRY_RUSSIA 1
COUNTRY_UKRAINE 2
COUNTRY_UNITED_STATES_OF_AMERICA 3
COUNTRY_TURKEY 4
COUNTRY_UNITED_KINGDOM 5
COUNTRY_FRANCE 6
COUNTRY_GERMANY 7
COUNTRY_AGGRESSORS 8
COUNTRY_CANADA 9
COUNTRY_SPAIN 10
COUNTRY_THE_NETHERLANDS 11
COUNTRY_BELGIUM 12
COUNTRY_NORWAY 13
COUNTRY_DENMARK 14
COUNTRY_UNUSED 15
COUNTRY_ISRAEL 16
COUNTRY_GEORGIA 17
COUNTRY_INSURGENTS 18
COUNTRY_ABKHAZIA 19
COUNTRY_SOUTH_OSETIA 20
COUNTRY_ITALY 21
COUNTRY_AUSTRALIA 22
COUNTRY_SWITZERLAND 23
COUNTRY_AUSTRIA 24
COUNTRY_BELARUS 25
COUNTRY_BULGARIA 26
COUNTRY_CZECH_REPUBLIC 27
COUNTRY_CHINA 28
COUNTRY_CROATIA 29
COUNTRY_EGYPT 30
COUNTRY_FINLAND 31
COUNTRY_GREECE 32
COUNTRY_HUNGARY 33
COUNTRY_INDIA 34
COUNTRY_IRAN 35
COUNTRY_IRAQ 36
COUNTRY_JAPAN 37
COUNTRY_KAZAKHSTAN 38
COUNTRY_NORTH_KOREA 39
COUNTRY_PAKISTAN 40
COUNTRY_POLAND 41
COUNTRY_ROMANIA 42
COUNTRY_SAUDI_ARABIA 43
COUNTRY_SERBIA 44
COUNTRY_SLOVAKIA 45
COUNTRY_SOUTH_KOREA 46
COUNTRY_SWEDEN 47
COUNTRY_SYRIA 48
COUNTRY_YEMEN 49
COUNTRY_VIETNAM 50
COUNTRY_VENEZUELA 51
COUNTRY_TUNISIA 52
COUNTRY_THAILAND 53
COUNTRY_SUDAN 54
COUNTRY_PHILIPPINES 55
COUNTRY_MOROCCO 56
COUNTRY_MEXICO 57
COUNTRY_MALAYSIA 58
COUNTRY_LIBYA 59
COUNTRY_JORDAN 60
COUNTRY_INDONESIA 61
COUNTRY_HONDURAS 62
COUNTRY_ETHIOPIA 63
COUNTRY_CHILE 64
COUNTRY_BRAZIL 65
COUNTRY_BAHRAIN 66
COUNTRY_THIRDREICH 67
COUNTRY_YUGOSLAVIA 68
COUNTRY_SOVIET_UNION 69
COUNTRY_ITALIAN_SOCIAL_REPUBLIC 70
COUNTRY_ALGERIA 71
COUNTRY_KUWAIT 72
COUNTRY_QATAR 73
COUNTRY_OMAN 74
COUNTRY_UNITED_ARAB_EMIRATES 75
COUNTRY_SOUTH_AFRICA 76
COUNTRY_CUBA 77
COUNTRY_PORTUGAL 78
COUNTRY_GERMAN_DEMOCRATIC_REPUBLIC 79
COUNTRY_LEBANON 80
COUNTRY_COMBINED_JOINT_TASK_FORCE_BLUE 81
COUNTRY_COMBINED_JOINT_TASK_FORCE_RED 82
COUNTRY_UNITED_NATIONS_PEACEKEEPERS 83
COUNTRY_ARGENTINA 84
COUNTRY_CYPRUS 85
COUNTRY_SLOVENIA 86

GroupCategory

Group category enumerator.

Name Number Description
GROUP_CATEGORY_AIRPLANE 0
GROUP_CATEGORY_HELICOPTER 1
GROUP_CATEGORY_GROUND 2
GROUP_CATEGORY_SHIP 3
GROUP_CATEGORY_TRAIN 4

ObjectCategory

The category the object belongs to

All DCS objects are one of the following categories. Unlike many other enums created by DCS, this one is not 0 indexed. Therefore we do not need to do any modification of the value by incrementing it by one to make it work with gRPC and DCS.

See https://wiki.hoggitworld.com/view/DCS_Class_Object for more information

Name Number Description
OBJECT_CATEGORY_UNSPECIFIED 0
OBJECT_CATEGORY_UNIT 1
OBJECT_CATEGORY_WEAPON 2
OBJECT_CATEGORY_STATIC 3
OBJECT_CATEGORY_SCENERY 4
OBJECT_CATEGORY_BASE 5
OBJECT_CATEGORY_CARGO 6

Top

dcs/controller/v0/controller.proto

SetAlarmStateRequest

Field Type Label Description
group_name string
unit_name string
alarm_state SetAlarmStateRequest.AlarmState

SetAlarmStateResponse

SetAlarmStateRequest.AlarmState

Name Number Description
ALARM_STATE_UNSPECIFIED 0
ALARM_STATE_AUTO 1
ALARM_STATE_GREEN 2
ALARM_STATE_RED 3

ControllerService

Method Name Request Type Response Type Description
SetAlarmState SetAlarmStateRequest SetAlarmStateResponse https://wiki.hoggitworld.com/view/DCS_option_alarmState

Top

dcs/custom/v0/custom.proto

AbortMissionRequest

Field Type Label Description
unit_name string

AbortMissionResponse

EvalRequest

Field Type Label Description
lua string

EvalResponse

Field Type Label Description
json string

GetMagneticDeclinationRequest

Field Type Label Description
lat double Latitude in Decimal Degrees format
lon double Longitude in Decimal Degrees format
alt double Altitude in Meters above Mean Sea Level (MSL)

GetMagneticDeclinationResponse

Field Type Label Description
declination double Magnetic declination in degrees. A negative value is an westerly / declination, while a positive value is a easterly declination. True / North + declination = Magnetic North

GetMissionStatusRequest

Field Type Label Description
unit_name string

GetMissionStatusResponse

JoinMissionRequest

Field Type Label Description
unit_name string
mission_code int32

JoinMissionResponse

RequestMissionAssignmentRequest

Field Type Label Description
unit_name string
mission_type string

RequestMissionAssignmentResponse

CustomService

The Custom service is for APIs that do not map to the "standard library" of DCS APIs provided by Eagle Dynamics.

Expect to find APIs here that may be useful for mission frameworks etc.

Method Name Request Type Response Type Description
RequestMissionAssignment RequestMissionAssignmentRequest RequestMissionAssignmentResponse DCT Function
JoinMission JoinMissionRequest JoinMissionResponse DCT Function
AbortMission AbortMissionRequest AbortMissionResponse DCT Function
GetMissionStatus GetMissionStatusRequest GetMissionStatusResponse DCT Function
Eval EvalRequest EvalResponse Evaluate some Lua inside of the mission and return the result as a JSON string. Disabled by default.
GetMagneticDeclination GetMagneticDeclinationRequest GetMagneticDeclinationResponse Calculates the magnetic declination at the given position using the International Geomagnetic Reference Field (IGRF) model. The result is not always exactly the same as what DCS seem to use, but it is very close (DCS doesn't expose its declination).

Top

dcs/group/v0/group.proto

GetUnitsRequest

Field Type Label Description
group_name string
active bool optional Whether the response should include only active units (true), only inactive units (false), or all units (nil).

GetUnitsResponse

Field Type Label Description
units dcs.common.v0.Unit repeated

GroupService

https://wiki.hoggitworld.com/view/DCS_Class_Group

Method Name Request Type Response Type Description
GetUnits GetUnitsRequest GetUnitsResponse https://wiki.hoggitworld.com/view/DCS_func_getUnits

Top

dcs/hook/v0/hook.proto

EvalRequest

Field Type Label Description
lua string

EvalResponse

Field Type Label Description
json string

GetMissionNameRequest

GetMissionNameResponse

Field Type Label Description
name string

HookService

APis that are part of the hook environment

Method Name Request Type Response Type Description
GetMissionName GetMissionNameRequest GetMissionNameResponse https://wiki.hoggitworld.com/view/DCS_func_getMissionName
Eval EvalRequest EvalResponse Evaluate some Lua inside of the hook environment and return the result as a JSON string. Disabled by default.

Top

dcs/mission/v0/mission.proto

GetScenarioCurrentTimeRequest

GetScenarioCurrentTimeResponse

Field Type Label Description
datetime string

GetScenarioStartTimeRequest

GetScenarioStartTimeResponse

Field Type Label Description
datetime string

StreamEventsRequest

StreamEventsResponse

The DCS Event information. Contains event information and a timestamp.

Field Type Label Description
time double The event's mission time.
shot StreamEventsResponse.ShotEvent
hit StreamEventsResponse.HitEvent
takeoff StreamEventsResponse.TakeoffEvent
land StreamEventsResponse.LandEvent
crash StreamEventsResponse.CrashEvent
ejection StreamEventsResponse.EjectionEvent
refueling StreamEventsResponse.RefuelingEvent
dead StreamEventsResponse.DeadEvent
pilot_dead StreamEventsResponse.PilotDeadEvent
base_capture StreamEventsResponse.BaseCaptureEvent
mission_start StreamEventsResponse.MissionStartEvent
mission_end StreamEventsResponse.MissionEndEvent
refueling_stop StreamEventsResponse.RefuelingStopEvent
birth StreamEventsResponse.BirthEvent
human_failure StreamEventsResponse.HumanFailureEvent
detailed_failure StreamEventsResponse.DetailedFailureEvent
engine_startup StreamEventsResponse.EngineStartupEvent
engine_shutdown StreamEventsResponse.EngineShutdownEvent
player_enter_unit StreamEventsResponse.PlayerEnterUnitEvent
player_leave_unit StreamEventsResponse.PlayerLeaveUnitEvent
shooting_start StreamEventsResponse.ShootingStartEvent
shooting_end StreamEventsResponse.ShootingEndEvent
mark_add StreamEventsResponse.MarkAddEvent
mark_change StreamEventsResponse.MarkChangeEvent
mark_remove StreamEventsResponse.MarkRemoveEvent
kill StreamEventsResponse.KillEvent
score StreamEventsResponse.ScoreEvent
unit_lost StreamEventsResponse.UnitLostEvent
landing_after_ejection StreamEventsResponse.LandingAfterEjectionEvent
discard_chair_after_ejection StreamEventsResponse.DiscardChairAfterEjectionEvent
weapon_add StreamEventsResponse.WeaponAddEvent
landing_quality_mark StreamEventsResponse.LandingQualityMarkEvent
connect StreamEventsResponse.ConnectEvent The following events are additions on top of DCS's own event enum, which is why they start at 8192 to give DCS plenty of space for new built-in events.
disconnect StreamEventsResponse.DisconnectEvent
player_send_chat StreamEventsResponse.PlayerSendChatEvent

StreamEventsResponse.BaseCaptureEvent

Occurs when a ground unit captures either an airbase or a farp.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that captured the base.
place dcs.common.v0.Airbase The airbase that was captured, can be a FARP or Airbase

StreamEventsResponse.BirthEvent

Occurs when any object is spawned into the mission.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that was spawned.
place dcs.common.v0.Airbase optional The airbase, farp or ship the unit took off from.

StreamEventsResponse.ConnectEvent

Fired when a player connected to the server.

Field Type Label Description
addr string The player's IP and port.
name string The name of the player.
ucid string The player's unique client identifier (used to ban a player).
id uint32 The player's id in the current server session (used to for name/slot/... changes).

StreamEventsResponse.CrashEvent

Occurs when an aircraft crashes into the ground and is completely destroyed.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that crashed.

StreamEventsResponse.DeadEvent

Occurs when an object is completely destroyed.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that has been destroyed.

StreamEventsResponse.DetailedFailureEvent

Occurs when a system on an aircraft fails. This can be due to damage or due to random failures set up in the mission editor.

Field Type Label Description
target dcs.common.v0.Target The target the failure occurred for.

StreamEventsResponse.DiscardChairAfterEjectionEvent

A pilot detached from their ejection seat.

Field Type Label Description
initiator dcs.common.v0.Initiator The ejection seat.
target dcs.common.v0.Target The pilot.

StreamEventsResponse.DisconnectEvent

Fired when a player disconnected from the server (not fired for the server's player).

Field Type Label Description
id uint32 The player's id in the current server session.
reason StreamEventsResponse.DisconnectReason The reason a player disconnected for.

StreamEventsResponse.EjectionEvent

Occurs when a pilot ejects from its aircraft.

Field Type Label Description
initiator dcs.common.v0.Initiator The unit a pilot ejected from.
target dcs.common.v0.Target The ejection seat.

StreamEventsResponse.EngineShutdownEvent

Field Type Label Description
initiator dcs.common.v0.Initiator Occurs when any aircraft shuts down its engines.
place dcs.common.v0.Airbase The airbase, farp or ship the unit shut down their engine at.

StreamEventsResponse.EngineStartupEvent

Occurs when any aircraft starts its engines.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that starts its engines.
place dcs.common.v0.Airbase The airbase, farp or ship the unit started their engine at.

StreamEventsResponse.HitEvent

Occurs when an object is hit by a weapon.

Field Type Label Description
initiator dcs.common.v0.Initiator optional The object that fired the weapon. Not set when for example fyling an aircraft into a building (building will be the target and weapon_name the name of the aircraft).
weapon dcs.common.v0.Weapon The weapon that the target has been hit with.
target dcs.common.v0.Target The object that has been hit.
weapon_name string The weapon the target got hit by.

StreamEventsResponse.HumanFailureEvent

Occurs e.g. when a player controlled aircraft blacks out.

Field Type Label Description
initiator dcs.common.v0.Initiator The unit the system failure occurred in.

StreamEventsResponse.KillEvent

Occurs when an object is killed by a weapon.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that fired the weapon.
weapon dcs.common.v0.Weapon The weapon that the target has been killed with.
target dcs.common.v0.Target The object that has been killed.
weapon_name string The name of the weapon that killed the target (exists instead of weapon for weapons that trigger the shooting start and end events).

StreamEventsResponse.LandEvent

Occurs when an aircraft lands at an airbase, farp or ship.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that landed.
place dcs.common.v0.Airbase The airbase, farp or ship the unit landed at.

StreamEventsResponse.LandingAfterEjectionEvent

A pilot detached from their ejection seat.

Field Type Label Description
initiator dcs.common.v0.Initiator The ejected pilot.
place dcs.common.v0.Position The position the pilot landed at.

StreamEventsResponse.LandingQualityMarkEvent

Occurs when an aircraft receives an LSO rating after recovering on an aircraft carrier.

Field Type Label Description
initiator dcs.common.v0.Initiator The aircraft that received the rating.
comment string The rating.
place dcs.common.v0.Airbase The ship the unit landed at.

StreamEventsResponse.MarkAddEvent

Occurs when marks get added to the mission by players or scripting functions.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that added the mark.
group_id uint64 The group the mark's visibility is restricted for.
coalition dcs.common.v0.Coalition The coalition the mark's visibility is restricted for.
id uint32 The mark's id.
position dcs.common.v0.Position The position the mark has been added at.
text string The mark's label.

StreamEventsResponse.MarkChangeEvent

Occurs when marks got changed.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that changed the mark.
group_id uint64 The group the mark's visibility is restricted for.
coalition dcs.common.v0.Coalition The coalition the mark's visibility is restricted for.
id uint32 The mark's id.
position dcs.common.v0.Position The position of the changed mark.
text string The mark's label.

StreamEventsResponse.MarkRemoveEvent

Occurs when marks get removed.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that removed the mark.
group_id uint64 The group the mark's visibility is restricted for.
coalition dcs.common.v0.Coalition The coalition the mark's visibility is restricted for.
id uint32 The mark's id.
position dcs.common.v0.Position The position the mark has been removed from.
text string The mark's label.

StreamEventsResponse.MissionEndEvent

Occurs when the mission stops.

StreamEventsResponse.MissionStartEvent

Occurs when the mission starts.

StreamEventsResponse.PilotDeadEvent

Occurs when a pilot of an aircraft is killed. Can occur either if the player is alive and crashes (in this case both this and the [CrashEvent] event will be fired) or if a weapon kills the pilot without completely destroying the plane.

Field Type Label Description
initiator dcs.common.v0.Initiator The unit the pilot has died in.

StreamEventsResponse.PlayerEnterUnitEvent

Occurs when a player takes direct control of a unit.

Field Type Label Description
initiator dcs.common.v0.Initiator The unit the player took control of.

StreamEventsResponse.PlayerLeaveUnitEvent

Occurs when a player relieves direct control of a unit.

Field Type Label Description
initiator dcs.common.v0.Initiator The unit the player relieves control of.

StreamEventsResponse.PlayerSendChatEvent

Occurs when a chat message is sent on the server

Field Type Label Description
playerId uint32 The player's id in the current server session.
message string what was typed

StreamEventsResponse.RefuelingEvent

Occurs when an aircraft connects with a tanker and begins taking on fuel.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that is receiving fuel.

StreamEventsResponse.RefuelingStopEvent

Occurs when an aircraft is finished taking fuel.

Field Type Label Description
initiator dcs.common.v0.Initiator he unit that was receiving fuel.

StreamEventsResponse.ScoreEvent

A score change (doesn't contain any useful information)

StreamEventsResponse.ShootingEndEvent

Occurs when a unit stops firing a machine gun- or autocannon-based weapon. Event will always correspond with a [ShootingStartEvent] event.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that was shooting and has no stopped firing.
weapon_name string The name of the shoot weapon.

StreamEventsResponse.ShootingStartEvent

Occurs when a unit begins firing a machine gun- or autocannon-based weapon (weapons with a high rate of fire). Other weapons are handled by [ShotEvent].

Field Type Label Description
initiator dcs.common.v0.Initiator The object that started firing.
weapon_name string The name of the shoot weapon.

StreamEventsResponse.ShotEvent

Occurs when a unit fires a weapon (but no machine gun- or autocannon-based weapons - those are handled by [ShootingStartEvent]).

Field Type Label Description
initiator dcs.common.v0.Initiator The object that fired the weapon.
weapon dcs.common.v0.Weapon The weapon that has been fired.

StreamEventsResponse.TakeoffEvent

Occurs when an aircraft takes off from an airbase, farp, or ship.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that took off.
place dcs.common.v0.Airbase The airbase, farp or ship the unit took off from.

StreamEventsResponse.UnitLostEvent

A unit got destroyed.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that got destroyed weapon.

StreamEventsResponse.WeaponAddEvent

Fired for each payload of an aircraft spawened midair.

Field Type Label Description
initiator dcs.common.v0.Initiator The object that got spawned.
weapon_name string The name of the payload.

StreamUnitsRequest

Field Type Label Description
poll_rate uint32 optional The poll rate in seconds at which the gRPC server communicates with the DCS mission to retrieve the latest unit positions. The lower the poll_rate the higher the amount of requests send to to the DCS mission. Default: 5
max_backoff uint32 optional The maximum backoff in seconds which the gRPC postpones polling units that haven't moved recently. This is an optimization to dynamically reduce the poll rate for stationary units. Set it to the same value as poll_rate to disable the backoff. Default: 30

StreamUnitsResponse

Field Type Label Description
unit dcs.common.v0.Unit The unit is either new or its position changed.
gone StreamUnitsResponse.UnitGone The unit does not exist anymore.

StreamUnitsResponse.UnitGone

Field Type Label Description
id uint32
name string

StreamEventsResponse.DisconnectReason

The reason a player disconnected for.

Name Number Description
DISCONNECT_REASON_UNSPECIFIED 0
DISCONNECT_REASON_THATS_OKAY 1
DISCONNECT_REASON_INVALID_ADDRESS 2
DISCONNECT_REASON_CONNECT_FAILED 3
DISCONNECT_REASON_WRONG_VERSION 4
DISCONNECT_REASON_PROTOCOL_ERROR 5
DISCONNECT_REASON_TIMEOUT 6
DISCONNECT_REASON_INVALID_PASSWORD 101
DISCONNECT_REASON_BANNED 102
DISCONNECT_REASON_BAD_CALLSIGN 103
DISCONNECT_REASON_TAINTED_CLIENT 104
DISCONNECT_REASON_KICKED 105
DISCONNECT_REASON_REFUSED 106
DISCONNECT_REASON_DENIED_TRIAL_ONLY 107

MissionService

Contains the streaming APIs that streaming information out of the DCS server.

Method Name Request Type Response Type Description
StreamEvents StreamEventsRequest StreamEventsResponse stream Streams DCS game generated Events. See https://wiki.hoggitworld.com/view/Category:Events
StreamUnits StreamUnitsRequest StreamUnitsResponse stream Streams unit updates Provides similar functionality as Tacview but at a much lower update rate so puts less load on the server. Suitable for things like online maps but not as a Tacview replacement.
GetScenarioStartTime GetScenarioStartTimeRequest GetScenarioStartTimeResponse Returns the mission's in-game starttime as an ISO 8601 formatted datetime string.
GetScenarioCurrentTime GetScenarioCurrentTimeRequest GetScenarioCurrentTimeResponse Returns the mission's in-game current time as an ISO 8601 formatted datetime string.

Top

dcs/net/v0/net.proto

GetPlayersRequest

GetPlayersResponse

Field Type Label Description
players GetPlayersResponse.GetPlayerInfo repeated list of all the players connected to the server

GetPlayersResponse.GetPlayerInfo

Field Type Label Description
id uint32 the player id
name string player's online name
coalition dcs.common.v0.Coalition coalition which player is slotted in
slot string the slot identifier
ping uint32 the ping of the player
remoteAddress string the connection ip address and port the client has established with the server
ucid string the unique identifier for the player
locale string abbreviated language (locale) e.g. "en"

SendChatRequest

Field Type Label Description
message string the message to send in the chat
coalition dcs.common.v0.Coalition which coalition? DCS only supports ALL or NEUTRAL (only applicable to send_chat)

SendChatResponse

SendChatToRequest

Field Type Label Description
message string the message to send in the chat
target_player_id uint32 the target player of the direct message

SendChatToResponse

NetService

Method Name Request Type Response Type Description
SendChatTo SendChatToRequest SendChatToResponse https://wiki.hoggitworld.com/view/DCS_func_send_chat_to
SendChat SendChatRequest SendChatResponse https://wiki.hoggitworld.com/view/DCS_func_send_chat
GetPlayers GetPlayersRequest GetPlayersResponse returns a list of all connected players. https://wiki.hoggitworld.com/view/DCS_func_get_player_info

Top

dcs/timer/v0/timer.proto

GetAbsoluteTimeRequest

GetAbsoluteTimeResponse

Field Type Label Description
time double The current time in seconds since 00:00 of the start date of the mission.
day uint32
month uint32
year int32

GetTimeRequest

GetTimeResponse

Field Type Label Description
time double

GetTimeZeroRequest

GetTimeZeroResponse

Field Type Label Description
time double The time in seconds since 00:00.
day uint32
month uint32
year int32

TimerService

https://wiki.hoggitworld.com/view/DCS_singleton_timer

Method Name Request Type Response Type Description
GetTime GetTimeRequest GetTimeResponse https://wiki.hoggitworld.com/view/DCS_func_getTime
GetAbsoluteTime GetAbsoluteTimeRequest GetAbsoluteTimeResponse https://wiki.hoggitworld.com/view/DCS_func_getAbsTime
GetTimeZero GetTimeZeroRequest GetTimeZeroResponse https://wiki.hoggitworld.com/view/DCS_func_getTime0

Top

dcs/trigger/v0/trigger.proto

ExplosionRequest

Field Type Label Description
position dcs.common.v0.Position
power uint32

ExplosionResponse

GetUserFlagRequest

Field Type Label Description
flag string

GetUserFlagResponse

Field Type Label Description
value uint32

IlluminationBombRequest

Field Type Label Description
position dcs.common.v0.Position The altitude of Illumination Bombs is meters above ground. Ground level will be calculated server-side
power uint32

IlluminationBombResponse

MarkToAllRequest

Field Type Label Description
text string
position dcs.common.v0.Position
read_only bool
message string

MarkToAllResponse

Field Type Label Description
id uint32

MarkToCoalitionRequest

Field Type Label Description
id uint32
text string
position dcs.common.v0.Position
coalition dcs.common.v0.Coalition
read_only bool
message string

MarkToCoalitionResponse

Field Type Label Description
id uint32

MarkToGroupRequest

Field Type Label Description
id uint32
text string
position dcs.common.v0.Position
group_id uint32
read_only bool
message string

MarkToGroupResponse

Field Type Label Description
id uint32

OutTextForCoalitionRequest

Field Type Label Description
text string
display_time int32
clear_view bool
coalition dcs.common.v0.Coalition

OutTextForCoalitionResponse

OutTextForGroupRequest

Field Type Label Description
text string
display_time int32
clear_view bool
group_id uint32

OutTextForGroupResponse

OutTextRequest

Field Type Label Description
text string
display_time int32
clear_view bool

OutTextResponse

RemoveMarkRequest

Field Type Label Description
id uint32

RemoveMarkResponse

SetUserFlagRequest

Field Type Label Description
flag string
value uint32

SetUserFlagResponse

SignalFlareRequest

Field Type Label Description
position dcs.common.v0.Position Altitude parameter will be ignored. Signal flares always fire from ground level which will be calculated server-side
color SignalFlareRequest.FlareColor
azimuth uint32

SignalFlareResponse

SmokeRequest

Field Type Label Description
position dcs.common.v0.Position Altitude parameter will be ignored. Smoke always eminates from ground level which will be calculated server-side
color SmokeRequest.SmokeColor

SmokeResponse

SignalFlareRequest.FlareColor

Name Number Description
FLARE_COLOR_UNSPECIFIED 0
FLARE_COLOR_GREEN 1
FLARE_COLOR_RED 2
FLARE_COLOR_WHITE 3
FLARE_COLOR_YELLOW 4

SmokeRequest.SmokeColor

Name Number Description
SMOKE_COLOR_UNSPECIFIED 0
SMOKE_COLOR_GREEN 1
SMOKE_COLOR_RED 2
SMOKE_COLOR_WHITE 3
SMOKE_COLOR_ORANGE 4
SMOKE_COLOR_BLUE 5

TriggerService

https://wiki.hoggitworld.com/view/DCS_singleton_trigger

Method Name Request Type Response Type Description
OutText OutTextRequest OutTextResponse https://wiki.hoggitworld.com/view/DCS_func_outText
OutTextForCoalition OutTextForCoalitionRequest OutTextForCoalitionResponse https://wiki.hoggitworld.com/view/DCS_func_outTextForCoalition
OutTextForGroup OutTextForGroupRequest OutTextForGroupResponse https://wiki.hoggitworld.com/view/DCS_func_outTextForGroup
GetUserFlag GetUserFlagRequest GetUserFlagResponse https://wiki.hoggitworld.com/view/DCS_func_getUserFlag
SetUserFlag SetUserFlagRequest SetUserFlagResponse https://wiki.hoggitworld.com/view/DCS_func_setUserFlag
MarkToAll MarkToAllRequest MarkToAllResponse https://wiki.hoggitworld.com/view/DCS_func_markToAll
MarkToCoalition MarkToCoalitionRequest MarkToCoalitionResponse https://wiki.hoggitworld.com/view/DCS_func_markToCoalition
MarkToGroup MarkToGroupRequest MarkToGroupResponse https://wiki.hoggitworld.com/view/DCS_func_markToGroup
RemoveMark RemoveMarkRequest RemoveMarkResponse https://wiki.hoggitworld.com/view/DCS_func_removeMark
Explosion ExplosionRequest ExplosionResponse https://wiki.hoggitworld.com/view/DCS_func_explosion
Smoke SmokeRequest SmokeResponse https://wiki.hoggitworld.com/view/DCS_func_smoke
IlluminationBomb IlluminationBombRequest IlluminationBombResponse https://wiki.hoggitworld.com/view/DCS_func_illuminationBomb
SignalFlare SignalFlareRequest SignalFlareResponse https://wiki.hoggitworld.com/view/DCS_func_signalFlare

Top

dcs/unit/v0/unit.proto

GetDescriptorRequest

Field Type Label Description
name string

GetDescriptorResponse

TODO fill these in as and when we need em

Field Type Label Description
attributes string repeated

GetPlayerNameRequest

Field Type Label Description
name string

GetPlayerNameResponse

Field Type Label Description
player_name string optional

GetPositionRequest

Field Type Label Description
name string

GetPositionResponse

Field Type Label Description
position dcs.common.v0.Position

GetRadarRequest

Field Type Label Description
name string

GetRadarResponse

Field Type Label Description
active bool
target dcs.common.v0.Target

GetRequest

Field Type Label Description
name string

GetResponse

Field Type Label Description
unit dcs.common.v0.Unit

GetTransformRequest

Field Type Label Description
name string

GetTransformResponse

Field Type Label Description
position dcs.common.v0.Position
u double Distance between DCS' map origin to object in meters on west-east axis.
v double Distance between DCS' map origin to object in meters on north-south axis.
heading double The heading of the object on a flat world. To get the heading corrected by the projection error when going from a flat to a spherical world, use orientation.yaw instead.
orientation Orientation
velocity dcs.common.v0.Vector The direction the object is traveling to, and speed (magnitude of the vector) the object is traveling with.
time double Time in seconds since the scenario started.

Orientation

The orientation of an object in 3D space.

Field Type Label Description
forward dcs.common.v0.Vector The normalized direction the object is pointing to.
right dcs.common.v0.Vector The normalized direction the three line (right wing) is pointing to.
up dcs.common.v0.Vector The normalized up vector (orthogonal to forward and right).
yaw double Yaw in degrees - clockwise relative to the true north.
pitch double Pitch in degrees - positive when taking-off.
roll double Roll in degrees - positive when rolling the aircraft to the right.

SetEmissionRequest

Field Type Label Description
name string
emitting bool

SetEmissionResponse

UnitService

https://wiki.hoggitworld.com/view/DCS_Class_Unit

Method Name Request Type Response Type Description
GetRadar GetRadarRequest GetRadarResponse https://wiki.hoggitworld.com/view/DCS_func_getRadar
GetPosition GetPositionRequest GetPositionResponse https://wiki.hoggitworld.com/view/DCS_func_getPoint
GetPlayerName GetPlayerNameRequest GetPlayerNameResponse https://wiki.hoggitworld.com/view/DCS_func_getPlayerName
GetDescriptor GetDescriptorRequest GetDescriptorResponse
SetEmission SetEmissionRequest SetEmissionResponse https://wiki.hoggitworld.com/view/DCS_func_enableEmission
Get GetRequest GetResponse https://wiki.hoggitworld.com/view/DCS_func_getByName
GetTransform GetTransformRequest GetTransformResponse Get information about the unit in 3D space, including its position, orientation and velocity.

Top

dcs/world/v0/world.proto

GetAirbasesRequest

Field Type Label Description
coalition dcs.common.v0.Coalition

GetAirbasesResponse

Field Type Label Description
airbases dcs.common.v0.Airbase repeated

GetMarkPanelsRequest

GetMarkPanelsResponse

Field Type Label Description
mark_panels dcs.common.v0.MarkPanel repeated

WorldService

https://wiki.hoggitworld.com/view/DCS_singleton_world

Method Name Request Type Response Type Description
GetAirbases GetAirbasesRequest GetAirbasesResponse https://wiki.hoggitworld.com/view/DCS_func_getAirbases
GetMarkPanels GetMarkPanelsRequest GetMarkPanelsResponse https://wiki.hoggitworld.com/view/DCS_func_getMarkPanels

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)