.. _envoy_v3_api_file_envoy/service/status/v3/csds.proto:

Client Status Discovery Service (CSDS)
======================================


This documentation is for the Envoy v3 API.

As of Envoy v1.18 the v2 API has been removed and is no longer supported.

If you are upgrading from v2 API config you may wish to view the v2 API documentation:

    :ref:`service/status/v2/csds.proto <v1.17.2:envoy_api_file_envoy/service/status/v2/csds.proto>`



.. _envoy_v3_api_msg_service.status.v3.ClientStatusRequest:

service.status.v3.ClientStatusRequest
-------------------------------------

:repo:`[service.status.v3.ClientStatusRequest proto] <api/envoy/service/status/v3/csds.proto#L77>`

Request for client status of clients identified by a list of NodeMatchers.

.. code-block:: json

  {
    "node_matchers": [],
    "node": "{...}"
  }

.. _envoy_v3_api_field_service.status.v3.ClientStatusRequest.node_matchers:

node_matchers
  (**repeated** :ref:`type.matcher.v3.NodeMatcher <envoy_v3_api_msg_type.matcher.v3.NodeMatcher>`) Management server can use these match criteria to identify clients.
  The match follows OR semantics.
  
  
.. _envoy_v3_api_field_service.status.v3.ClientStatusRequest.node:

node
  (:ref:`config.core.v3.Node <envoy_v3_api_msg_config.core.v3.Node>`) The node making the csds request.
  
  


.. _envoy_v3_api_msg_service.status.v3.PerXdsConfig:

service.status.v3.PerXdsConfig
------------------------------

:repo:`[service.status.v3.PerXdsConfig proto] <api/envoy/service/status/v3/csds.proto#L91>`

Detailed config (per xDS) with status.

.. code-block:: json

  {
    "status": "...",
    "client_status": "...",
    "listener_config": "{...}",
    "cluster_config": "{...}",
    "route_config": "{...}",
    "scoped_route_config": "{...}",
    "endpoint_config": "{...}"
  }

.. _envoy_v3_api_field_service.status.v3.PerXdsConfig.status:

status
  (:ref:`service.status.v3.ConfigStatus <envoy_v3_api_enum_service.status.v3.ConfigStatus>`) Config status generated by management servers. Will not be present if the
  CSDS server is an xDS client.
  
  
.. _envoy_v3_api_field_service.status.v3.PerXdsConfig.client_status:

client_status
  (:ref:`service.status.v3.ClientConfigStatus <envoy_v3_api_enum_service.status.v3.ClientConfigStatus>`) Client config status is populated by xDS clients. Will not be present if
  the CSDS server is an xDS server. No matter what the client config status
  is, xDS clients should always dump the most recent accepted xDS config.
  
  .. attention::
    This field is deprecated. Use :ref:`ClientResourceStatus
    <envoy_v3_api_enum_admin.v3.ClientResourceStatus>` for per-resource
    config status instead.
  
  
.. _envoy_v3_api_field_service.status.v3.PerXdsConfig.listener_config:

listener_config
  (:ref:`admin.v3.ListenersConfigDump <envoy_v3_api_msg_admin.v3.ListenersConfigDump>`) 
  
  
  Only one of :ref:`listener_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.listener_config>`, :ref:`cluster_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.cluster_config>`, :ref:`route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.route_config>`, :ref:`scoped_route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.scoped_route_config>`, :ref:`endpoint_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.endpoint_config>` may be set.
  
.. _envoy_v3_api_field_service.status.v3.PerXdsConfig.cluster_config:

cluster_config
  (:ref:`admin.v3.ClustersConfigDump <envoy_v3_api_msg_admin.v3.ClustersConfigDump>`) 
  
  
  Only one of :ref:`listener_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.listener_config>`, :ref:`cluster_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.cluster_config>`, :ref:`route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.route_config>`, :ref:`scoped_route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.scoped_route_config>`, :ref:`endpoint_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.endpoint_config>` may be set.
  
.. _envoy_v3_api_field_service.status.v3.PerXdsConfig.route_config:

route_config
  (:ref:`admin.v3.RoutesConfigDump <envoy_v3_api_msg_admin.v3.RoutesConfigDump>`) 
  
  
  Only one of :ref:`listener_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.listener_config>`, :ref:`cluster_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.cluster_config>`, :ref:`route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.route_config>`, :ref:`scoped_route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.scoped_route_config>`, :ref:`endpoint_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.endpoint_config>` may be set.
  
.. _envoy_v3_api_field_service.status.v3.PerXdsConfig.scoped_route_config:

scoped_route_config
  (:ref:`admin.v3.ScopedRoutesConfigDump <envoy_v3_api_msg_admin.v3.ScopedRoutesConfigDump>`) 
  
  
  Only one of :ref:`listener_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.listener_config>`, :ref:`cluster_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.cluster_config>`, :ref:`route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.route_config>`, :ref:`scoped_route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.scoped_route_config>`, :ref:`endpoint_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.endpoint_config>` may be set.
  
.. _envoy_v3_api_field_service.status.v3.PerXdsConfig.endpoint_config:

endpoint_config
  (:ref:`admin.v3.EndpointsConfigDump <envoy_v3_api_msg_admin.v3.EndpointsConfigDump>`) 
  
  
  Only one of :ref:`listener_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.listener_config>`, :ref:`cluster_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.cluster_config>`, :ref:`route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.route_config>`, :ref:`scoped_route_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.scoped_route_config>`, :ref:`endpoint_config <envoy_v3_api_field_service.status.v3.PerXdsConfig.endpoint_config>` may be set.
  


.. _envoy_v3_api_msg_service.status.v3.ClientConfig:

service.status.v3.ClientConfig
------------------------------

:repo:`[service.status.v3.ClientConfig proto] <api/envoy/service/status/v3/csds.proto#L124>`

All xds configs for a particular client.

.. code-block:: json

  {
    "node": "{...}",
    "xds_config": [],
    "generic_xds_configs": []
  }

.. _envoy_v3_api_field_service.status.v3.ClientConfig.node:

node
  (:ref:`config.core.v3.Node <envoy_v3_api_msg_config.core.v3.Node>`) Node for a particular client.
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.xds_config:

xds_config
  (**repeated** :ref:`service.status.v3.PerXdsConfig <envoy_v3_api_msg_service.status.v3.PerXdsConfig>`) This field is deprecated in favor of generic_xds_configs which is
  much simpler and uniform in structure.
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.generic_xds_configs:

generic_xds_configs
  (**repeated** :ref:`service.status.v3.ClientConfig.GenericXdsConfig <envoy_v3_api_msg_service.status.v3.ClientConfig.GenericXdsConfig>`) Represents generic xDS config and the exact config structure depends on
  the type URL (like Cluster if it is CDS)
  
  
.. _envoy_v3_api_msg_service.status.v3.ClientConfig.GenericXdsConfig:

service.status.v3.ClientConfig.GenericXdsConfig
-----------------------------------------------

:repo:`[service.status.v3.ClientConfig.GenericXdsConfig proto] <api/envoy/service/status/v3/csds.proto#L132>`

GenericXdsConfig is used to specify the config status and the dump
of any xDS resource identified by their type URL. It is the generalized
version of the now deprecated ListenersConfigDump, ClustersConfigDump etc

.. code-block:: json

  {
    "type_url": "...",
    "name": "...",
    "version_info": "...",
    "xds_config": "{...}",
    "last_updated": "{...}",
    "config_status": "...",
    "client_status": "...",
    "is_static_resource": "..."
  }

.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.type_url:

type_url
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Type_url represents the fully qualified name of xDS resource type
  like envoy.v3.Cluster, envoy.v3.ClusterLoadAssignment etc.
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.name:

name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Name of the xDS resource
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.version_info:

version_info
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) This is the :ref:`version_info <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>`
  in the last processed xDS discovery response. If there are only
  static bootstrap listeners, this field will be ""
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.xds_config:

xds_config
  (`Any <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#any>`_) The xDS resource config. Actual content depends on the type
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.last_updated:

last_updated
  (`Timestamp <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp>`_) Timestamp when the xDS resource was last updated
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.config_status:

config_status
  (:ref:`service.status.v3.ConfigStatus <envoy_v3_api_enum_service.status.v3.ConfigStatus>`) Per xDS resource config status. It is generated by management servers.
  It will not be present if the CSDS server is an xDS client.
  
  
.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.client_status:

client_status
  (:ref:`admin.v3.ClientResourceStatus <envoy_v3_api_enum_admin.v3.ClientResourceStatus>`) Per xDS resource status from the view of a xDS client
  
  

.. _envoy_v3_api_field_service.status.v3.ClientConfig.GenericXdsConfig.is_static_resource:

is_static_resource
  (`bool <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Is static resource is true if it is specified in the config supplied
  through the file at the startup.
  
  



.. _envoy_v3_api_msg_service.status.v3.ClientStatusResponse:

service.status.v3.ClientStatusResponse
--------------------------------------

:repo:`[service.status.v3.ClientStatusResponse proto] <api/envoy/service/status/v3/csds.proto#L184>`


.. code-block:: json

  {
    "config": []
  }

.. _envoy_v3_api_field_service.status.v3.ClientStatusResponse.config:

config
  (**repeated** :ref:`service.status.v3.ClientConfig <envoy_v3_api_msg_service.status.v3.ClientConfig>`) Client configs for the clients specified in the ClientStatusRequest.
  
  

.. _envoy_v3_api_enum_service.status.v3.ConfigStatus:

Enum service.status.v3.ConfigStatus
-----------------------------------

:repo:`[service.status.v3.ConfigStatus proto] <api/envoy/service/status/v3/csds.proto#L38>`

Status of a config from a management server view.

.. _envoy_v3_api_enum_value_service.status.v3.ConfigStatus.UNKNOWN:

UNKNOWN
  *(DEFAULT)* ⁣Status info is not available/unknown.
  
  
.. _envoy_v3_api_enum_value_service.status.v3.ConfigStatus.SYNCED:

SYNCED
  ⁣Management server has sent the config to client and received ACK.
  
  
.. _envoy_v3_api_enum_value_service.status.v3.ConfigStatus.NOT_SENT:

NOT_SENT
  ⁣Config is not sent.
  
  
.. _envoy_v3_api_enum_value_service.status.v3.ConfigStatus.STALE:

STALE
  ⁣Management server has sent the config to client but hasn’t received
  ACK/NACK.
  
  
.. _envoy_v3_api_enum_value_service.status.v3.ConfigStatus.ERROR:

ERROR
  ⁣Management server has sent the config to client but received NACK. The
  attached config dump will be the latest config (the rejected one), since
  it is the persisted version in the management server.
  
  

.. _envoy_v3_api_enum_service.status.v3.ClientConfigStatus:

Enum service.status.v3.ClientConfigStatus
-----------------------------------------

:repo:`[service.status.v3.ClientConfigStatus proto] <api/envoy/service/status/v3/csds.proto#L59>`

Config status from a client-side view.

.. _envoy_v3_api_enum_value_service.status.v3.ClientConfigStatus.CLIENT_UNKNOWN:

CLIENT_UNKNOWN
  *(DEFAULT)* ⁣Config status is not available/unknown.
  
  
.. _envoy_v3_api_enum_value_service.status.v3.ClientConfigStatus.CLIENT_REQUESTED:

CLIENT_REQUESTED
  ⁣Client requested the config but hasn't received any config from management
  server yet.
  
  
.. _envoy_v3_api_enum_value_service.status.v3.ClientConfigStatus.CLIENT_ACKED:

CLIENT_ACKED
  ⁣Client received the config and replied with ACK.
  
  
.. _envoy_v3_api_enum_value_service.status.v3.ClientConfigStatus.CLIENT_NACKED:

CLIENT_NACKED
  ⁣Client received the config and replied with NACK. Notably, the attached
  config dump is not the NACKed version, but the most recent accepted one. If
  no config is accepted yet, the attached config dump will be empty.