<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developer guide on etcd</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/</link><description>Recent content in Developer guide on etcd</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/index.xml" rel="self" type="application/rss+xml"/><item><title>Discovery service protocol</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/discovery_protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/discovery_protocol/</guid><description>&lt;p&gt;Discovery service protocol helps new etcd member to discover all other members in cluster bootstrap phase using a shared discovery URL.&lt;/p&gt;
&lt;p&gt;Discovery service protocol is &lt;em&gt;only&lt;/em&gt; used in cluster bootstrap phase, and cannot be used for runtime reconfiguration or cluster monitoring.&lt;/p&gt;
&lt;p&gt;The protocol uses a new discovery token to bootstrap one &lt;em&gt;unique&lt;/em&gt; etcd cluster. Remember that one discovery token can represent only one etcd cluster. As long as discovery protocol on this token starts, even if it fails halfway, it must not be used to bootstrap another etcd cluster.&lt;/p&gt;</description></item><item><title>Set up a local cluster</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/local_cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/local_cluster/</guid><description>&lt;p&gt;For testing and development deployments, the quickest and easiest way is to configure a local cluster. For a production deployment, refer to the &lt;a href="../../op-guide/clustering/"&gt;clustering&lt;/a&gt; section.&lt;/p&gt;
&lt;h2 id="local-standalone-cluster"&gt;Local standalone cluster&lt;/h2&gt;
&lt;h3 id="starting-a-cluster"&gt;Starting a cluster&lt;/h3&gt;
&lt;p&gt;Run the following to deploy an etcd cluster as a standalone cluster:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ./etcd
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the &lt;code&gt;etcd&lt;/code&gt; binary is not present in the current working directory, it might be located either at &lt;code&gt;$GOPATH/bin/etcd&lt;/code&gt; or at &lt;code&gt;/usr/local/bin/etcd&lt;/code&gt;. Run the command appropriately.&lt;/p&gt;</description></item><item><title>Interacting with etcd</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/interacting_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/interacting_v3/</guid><description>&lt;p&gt;Users mostly interact with etcd by putting or getting the value of a key. This section describes how to do that by using etcdctl, a command line tool for interacting with etcd server. The concepts described here should apply to the gRPC APIs or client library APIs.&lt;/p&gt;
&lt;p&gt;The API version used by etcdctl to speak to etcd may be set to version &lt;code&gt;2&lt;/code&gt; or &lt;code&gt;3&lt;/code&gt; via the &lt;code&gt;ETCDCTL_API&lt;/code&gt; environment variable. By default, etcdctl on master (3.4) uses the v3 API and earlier versions (3.3 and earlier) default to the v2 API.&lt;/p&gt;</description></item><item><title>Why gRPC gateway</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/api_grpc_gateway/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/api_grpc_gateway/</guid><description>&lt;p&gt;etcd v3 uses &lt;a href="https://www.grpc.io/" target="_blank" rel="noopener"&gt;gRPC&lt;/a&gt; for its messaging protocol. The etcd project includes a gRPC-based &lt;a href="https://github.com/etcd-io/etcd/tree/main/client/v3" target="_blank" rel="noopener"&gt;Go client&lt;/a&gt; and a command line utility, &lt;a href="https://github.com/etcd-io/etcd/tree/main/etcdctl" target="_blank" rel="noopener"&gt;etcdctl&lt;/a&gt;, for communicating with an etcd cluster through gRPC. For languages with no gRPC support, etcd provides a JSON &lt;a href="https://github.com/grpc-ecosystem/grpc-gateway" target="_blank" rel="noopener"&gt;gRPC gateway&lt;/a&gt;. This gateway serves a RESTful proxy that translates HTTP/JSON requests into gRPC messages.&lt;/p&gt;
&lt;h2 id="using-grpc-gateway"&gt;Using gRPC gateway&lt;/h2&gt;
&lt;p&gt;The gateway accepts a &lt;a href="https://developers.google.com/protocol-buffers/docs/proto3#json" target="_blank" rel="noopener"&gt;JSON mapping&lt;/a&gt; for etcd&amp;rsquo;s &lt;a href="../api_reference_v3/"&gt;protocol buffer&lt;/a&gt; message definitions. Note that &lt;code&gt;key&lt;/code&gt; and &lt;code&gt;value&lt;/code&gt; fields are defined as byte arrays and therefore must be base64 encoded in JSON. The following examples use &lt;code&gt;curl&lt;/code&gt;, but any HTTP/JSON client should work all the same.&lt;/p&gt;</description></item><item><title>gRPC naming and discovery</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/grpc_naming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/grpc_naming/</guid><description>&lt;p&gt;etcd provides a gRPC resolver to support an alternative name system that fetches endpoints from etcd for discovering gRPC services. The underlying mechanism is based on watching updates to keys prefixed with the service name.&lt;/p&gt;
&lt;p&gt;Note that this feature is experimental because it depends on the &lt;a href="https://github.com/grpc/grpc-go/tree/4cedec40eb2ccfbe3f56bb15e894903111ada2d2/resolver" target="_blank" rel="noopener"&gt;google.golang.org/grpc/resolver&lt;/a&gt; package, which is still experimental in grpc-go.&lt;/p&gt;
&lt;h2 id="using-etcd-discovery-with-go-grpc"&gt;Using etcd discovery with go-grpc&lt;/h2&gt;
&lt;p&gt;The etcd client provides a gRPC resolver for resolving gRPC endpoints with an etcd backend. The resolver is initialized with an etcd client:&lt;/p&gt;</description></item><item><title>Embedding etcd in a Go Application</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/golang_embed_pkg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/golang_embed_pkg/</guid><description>&lt;p&gt;The etcd &lt;code&gt;embed&lt;/code&gt; go package provides a simple way to embed an etcd server directly into your application.&lt;/p&gt;
&lt;p&gt;For more details, see the &lt;a href="https://pkg.go.dev/go.etcd.io/etcd/server/v3/embed" target="_blank" rel="noopener"&gt;embed package documentation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>System limits</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/limit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/limit/</guid><description>&lt;h2 id="request-size-limit"&gt;Request size limit&lt;/h2&gt;
&lt;p&gt;etcd is designed to handle small key value pairs typical for metadata. Larger requests will work, but may increase the latency of other requests. By default, the maximum size of any request is 1.5 MiB. This limit is configurable through &lt;code&gt;--max-request-bytes&lt;/code&gt; flag for etcd server.&lt;/p&gt;
&lt;h2 id="storage-size-limit"&gt;Storage size limit&lt;/h2&gt;
&lt;p&gt;The default storage size limit is 2 GiB, configurable with &lt;code&gt;--quota-backend-bytes&lt;/code&gt; flag. 8 GiB is a suggested maximum size for normal environments and etcd warns at startup if the configured value exceeds it.&lt;/p&gt;</description></item><item><title>etcd features</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/features/</guid><description>&lt;p&gt;This document provides an overview of etcd features to help users better understand the features and related deprecation process. If you are interested in knowing about how features are developed in the etcd, please see these &lt;a href="https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/features.md" target="_blank" rel="noopener"&gt;development guidelines&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The etcd features fall into three stages, experimental, stable, and unsafe. You can get the list of features by running &lt;code&gt;etcd --help&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="experimental"&gt;Experimental&lt;/h2&gt;
&lt;p&gt;In order to get early feedback, any new feature is usually added as an experimental feature. The experimental feature can be identified by looking at the flag name, which should have &lt;code&gt;--experimental&lt;/code&gt; as a prefix. Please consider the following points while using an experimental feature:&lt;/p&gt;</description></item><item><title>API reference</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/api_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/api_reference_v3/</guid><description>&lt;p&gt;This API reference is autogenerated from the named &lt;code&gt;.proto&lt;/code&gt; files.&lt;/p&gt;
&lt;h5 id="service-auth-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Auth&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;AuthEnable&lt;/td&gt;
 &lt;td&gt;AuthEnableRequest&lt;/td&gt;
 &lt;td&gt;AuthEnableResponse&lt;/td&gt;
 &lt;td&gt;AuthEnable enables authentication.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;AuthDisable&lt;/td&gt;
 &lt;td&gt;AuthDisableRequest&lt;/td&gt;
 &lt;td&gt;AuthDisableResponse&lt;/td&gt;
 &lt;td&gt;AuthDisable disables authentication.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;AuthStatus&lt;/td&gt;
 &lt;td&gt;AuthStatusRequest&lt;/td&gt;
 &lt;td&gt;AuthStatusResponse&lt;/td&gt;
 &lt;td&gt;AuthStatus displays authentication status.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Authenticate&lt;/td&gt;
 &lt;td&gt;AuthenticateRequest&lt;/td&gt;
 &lt;td&gt;AuthenticateResponse&lt;/td&gt;
 &lt;td&gt;Authenticate processes an authenticate request.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UserAdd&lt;/td&gt;
 &lt;td&gt;AuthUserAddRequest&lt;/td&gt;
 &lt;td&gt;AuthUserAddResponse&lt;/td&gt;
 &lt;td&gt;UserAdd adds a new user. User name cannot be empty.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UserGet&lt;/td&gt;
 &lt;td&gt;AuthUserGetRequest&lt;/td&gt;
 &lt;td&gt;AuthUserGetResponse&lt;/td&gt;
 &lt;td&gt;UserGet gets detailed user information.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UserList&lt;/td&gt;
 &lt;td&gt;AuthUserListRequest&lt;/td&gt;
 &lt;td&gt;AuthUserListResponse&lt;/td&gt;
 &lt;td&gt;UserList gets a list of all users.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UserDelete&lt;/td&gt;
 &lt;td&gt;AuthUserDeleteRequest&lt;/td&gt;
 &lt;td&gt;AuthUserDeleteResponse&lt;/td&gt;
 &lt;td&gt;UserDelete deletes a specified user.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UserChangePassword&lt;/td&gt;
 &lt;td&gt;AuthUserChangePasswordRequest&lt;/td&gt;
 &lt;td&gt;AuthUserChangePasswordResponse&lt;/td&gt;
 &lt;td&gt;UserChangePassword changes the password of a specified user.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UserGrantRole&lt;/td&gt;
 &lt;td&gt;AuthUserGrantRoleRequest&lt;/td&gt;
 &lt;td&gt;AuthUserGrantRoleResponse&lt;/td&gt;
 &lt;td&gt;UserGrant grants a role to a specified user.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UserRevokeRole&lt;/td&gt;
 &lt;td&gt;AuthUserRevokeRoleRequest&lt;/td&gt;
 &lt;td&gt;AuthUserRevokeRoleResponse&lt;/td&gt;
 &lt;td&gt;UserRevokeRole revokes a role of specified user.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RoleAdd&lt;/td&gt;
 &lt;td&gt;AuthRoleAddRequest&lt;/td&gt;
 &lt;td&gt;AuthRoleAddResponse&lt;/td&gt;
 &lt;td&gt;RoleAdd adds a new role. Role name cannot be empty.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RoleGet&lt;/td&gt;
 &lt;td&gt;AuthRoleGetRequest&lt;/td&gt;
 &lt;td&gt;AuthRoleGetResponse&lt;/td&gt;
 &lt;td&gt;RoleGet gets detailed role information.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RoleList&lt;/td&gt;
 &lt;td&gt;AuthRoleListRequest&lt;/td&gt;
 &lt;td&gt;AuthRoleListResponse&lt;/td&gt;
 &lt;td&gt;RoleList gets lists of all roles.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RoleDelete&lt;/td&gt;
 &lt;td&gt;AuthRoleDeleteRequest&lt;/td&gt;
 &lt;td&gt;AuthRoleDeleteResponse&lt;/td&gt;
 &lt;td&gt;RoleDelete deletes a specified role.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RoleGrantPermission&lt;/td&gt;
 &lt;td&gt;AuthRoleGrantPermissionRequest&lt;/td&gt;
 &lt;td&gt;AuthRoleGrantPermissionResponse&lt;/td&gt;
 &lt;td&gt;RoleGrantPermission grants a permission of a specified key or range to a specified role.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RoleRevokePermission&lt;/td&gt;
 &lt;td&gt;AuthRoleRevokePermissionRequest&lt;/td&gt;
 &lt;td&gt;AuthRoleRevokePermissionResponse&lt;/td&gt;
 &lt;td&gt;RoleRevokePermission revokes a key or range permission of a specified role.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="service-cluster-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Cluster&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;MemberAdd&lt;/td&gt;
 &lt;td&gt;MemberAddRequest&lt;/td&gt;
 &lt;td&gt;MemberAddResponse&lt;/td&gt;
 &lt;td&gt;MemberAdd adds a member into the cluster.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MemberRemove&lt;/td&gt;
 &lt;td&gt;MemberRemoveRequest&lt;/td&gt;
 &lt;td&gt;MemberRemoveResponse&lt;/td&gt;
 &lt;td&gt;MemberRemove removes an existing member from the cluster.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MemberUpdate&lt;/td&gt;
 &lt;td&gt;MemberUpdateRequest&lt;/td&gt;
 &lt;td&gt;MemberUpdateResponse&lt;/td&gt;
 &lt;td&gt;MemberUpdate updates the member configuration.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MemberList&lt;/td&gt;
 &lt;td&gt;MemberListRequest&lt;/td&gt;
 &lt;td&gt;MemberListResponse&lt;/td&gt;
 &lt;td&gt;MemberList lists all the members in the cluster.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MemberPromote&lt;/td&gt;
 &lt;td&gt;MemberPromoteRequest&lt;/td&gt;
 &lt;td&gt;MemberPromoteResponse&lt;/td&gt;
 &lt;td&gt;MemberPromote promotes a member from raft learner (non-voting) to raft voting member.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="service-kv-apietcdserverpbrpcproto"&gt;service &lt;code&gt;KV&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Range&lt;/td&gt;
 &lt;td&gt;RangeRequest&lt;/td&gt;
 &lt;td&gt;RangeResponse&lt;/td&gt;
 &lt;td&gt;Range gets the keys in the range from the key-value store.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Put&lt;/td&gt;
 &lt;td&gt;PutRequest&lt;/td&gt;
 &lt;td&gt;PutResponse&lt;/td&gt;
 &lt;td&gt;Put puts the given key into the key-value store. A put request increments the revision of the key-value store and generates one event in the event history.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;DeleteRange&lt;/td&gt;
 &lt;td&gt;DeleteRangeRequest&lt;/td&gt;
 &lt;td&gt;DeleteRangeResponse&lt;/td&gt;
 &lt;td&gt;DeleteRange deletes the given range from the key-value store. A delete request increments the revision of the key-value store and generates a delete event in the event history for every deleted key.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Txn&lt;/td&gt;
 &lt;td&gt;TxnRequest&lt;/td&gt;
 &lt;td&gt;TxnResponse&lt;/td&gt;
 &lt;td&gt;Txn processes multiple requests in a single transaction. A txn request increments the revision of the key-value store and generates events with the same revision for every completed request. It is not allowed to modify the same key several times within one txn.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Compact&lt;/td&gt;
 &lt;td&gt;CompactionRequest&lt;/td&gt;
 &lt;td&gt;CompactionResponse&lt;/td&gt;
 &lt;td&gt;Compact compacts the event history in the etcd key-value store. The key-value store should be periodically compacted or the event history will continue to grow indefinitely.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="service-lease-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Lease&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;LeaseGrant&lt;/td&gt;
 &lt;td&gt;LeaseGrantRequest&lt;/td&gt;
 &lt;td&gt;LeaseGrantResponse&lt;/td&gt;
 &lt;td&gt;LeaseGrant creates a lease which expires if the server does not receive a keepAlive within a given time to live period. All keys attached to the lease will be expired and deleted if the lease expires. Each expired key generates a delete event in the event history.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;LeaseRevoke&lt;/td&gt;
 &lt;td&gt;LeaseRevokeRequest&lt;/td&gt;
 &lt;td&gt;LeaseRevokeResponse&lt;/td&gt;
 &lt;td&gt;LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;LeaseKeepAlive&lt;/td&gt;
 &lt;td&gt;LeaseKeepAliveRequest&lt;/td&gt;
 &lt;td&gt;LeaseKeepAliveResponse&lt;/td&gt;
 &lt;td&gt;LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client to the server and streaming keep alive responses from the server to the client.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;LeaseTimeToLive&lt;/td&gt;
 &lt;td&gt;LeaseTimeToLiveRequest&lt;/td&gt;
 &lt;td&gt;LeaseTimeToLiveResponse&lt;/td&gt;
 &lt;td&gt;LeaseTimeToLive retrieves lease information.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;LeaseLeases&lt;/td&gt;
 &lt;td&gt;LeaseLeasesRequest&lt;/td&gt;
 &lt;td&gt;LeaseLeasesResponse&lt;/td&gt;
 &lt;td&gt;LeaseLeases lists all existing leases.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="service-maintenance-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Maintenance&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Alarm&lt;/td&gt;
 &lt;td&gt;AlarmRequest&lt;/td&gt;
 &lt;td&gt;AlarmResponse&lt;/td&gt;
 &lt;td&gt;Alarm activates, deactivates, and queries alarms regarding cluster health.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Status&lt;/td&gt;
 &lt;td&gt;StatusRequest&lt;/td&gt;
 &lt;td&gt;StatusResponse&lt;/td&gt;
 &lt;td&gt;Status gets the status of the member.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Defragment&lt;/td&gt;
 &lt;td&gt;DefragmentRequest&lt;/td&gt;
 &lt;td&gt;DefragmentResponse&lt;/td&gt;
 &lt;td&gt;Defragment defragments a member&amp;rsquo;s backend database to recover storage space.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Hash&lt;/td&gt;
 &lt;td&gt;HashRequest&lt;/td&gt;
 &lt;td&gt;HashResponse&lt;/td&gt;
 &lt;td&gt;Hash computes the hash of whole backend keyspace, including key, lease, and other buckets in storage. This is designed for testing ONLY! Do not rely on this in production with ongoing transactions, since Hash operation does not hold MVCC locks. Use &amp;ldquo;HashKV&amp;rdquo; API instead for &amp;ldquo;key&amp;rdquo; bucket consistency checks.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;HashKV&lt;/td&gt;
 &lt;td&gt;HashKVRequest&lt;/td&gt;
 &lt;td&gt;HashKVResponse&lt;/td&gt;
 &lt;td&gt;HashKV computes the hash of all MVCC keys up to a given revision. It only iterates &amp;ldquo;key&amp;rdquo; bucket in backend storage.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Snapshot&lt;/td&gt;
 &lt;td&gt;SnapshotRequest&lt;/td&gt;
 &lt;td&gt;SnapshotResponse&lt;/td&gt;
 &lt;td&gt;Snapshot sends a snapshot of the entire backend from a member over a stream to a client.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MoveLeader&lt;/td&gt;
 &lt;td&gt;MoveLeaderRequest&lt;/td&gt;
 &lt;td&gt;MoveLeaderResponse&lt;/td&gt;
 &lt;td&gt;MoveLeader requests current leader node to transfer its leadership to transferee.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Downgrade&lt;/td&gt;
 &lt;td&gt;DowngradeRequest&lt;/td&gt;
 &lt;td&gt;DowngradeResponse&lt;/td&gt;
 &lt;td&gt;Downgrade requests downgrades, verifies feasibility or cancels downgrade on the cluster version. Supported since etcd 3.5.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="service-watch-apietcdserverpbrpcproto"&gt;service &lt;code&gt;Watch&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Watch&lt;/td&gt;
 &lt;td&gt;WatchRequest&lt;/td&gt;
 &lt;td&gt;WatchResponse&lt;/td&gt;
 &lt;td&gt;Watch watches for events happening or that have happened. Both input and output are streams; the input stream is for creating and canceling watchers and the output stream sends events. One watch RPC can watch on multiple key ranges, streaming events for several watches at once. The entire event history can be watched starting from the last compaction revision.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-alarmmember-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AlarmMember&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;memberID&lt;/td&gt;
 &lt;td&gt;memberID is the ID of the member associated with the raised alarm.&lt;/td&gt;
 &lt;td&gt;uint64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;alarm&lt;/td&gt;
 &lt;td&gt;alarm is the type of alarm which has been raised.&lt;/td&gt;
 &lt;td&gt;AlarmType&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-alarmrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AlarmRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;action&lt;/td&gt;
 &lt;td&gt;action is the kind of alarm request to issue. The action may GET alarm statuses, ACTIVATE an alarm, or DEACTIVATE a raised alarm.&lt;/td&gt;
 &lt;td&gt;AlarmAction&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;memberID&lt;/td&gt;
 &lt;td&gt;memberID is the ID of the member associated with the alarm. If memberID is 0, the alarm request covers all members.&lt;/td&gt;
 &lt;td&gt;uint64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;alarm&lt;/td&gt;
 &lt;td&gt;alarm is the type of alarm to consider for this request.&lt;/td&gt;
 &lt;td&gt;AlarmType&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-alarmresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AlarmResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;alarms&lt;/td&gt;
 &lt;td&gt;alarms is a list of alarms associated with the alarm request.&lt;/td&gt;
 &lt;td&gt;(slice of) AlarmMember&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authdisablerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthDisableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authdisableresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthDisableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authenablerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthEnableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authenableresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthEnableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authroleaddrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;name is the name of the role to add to the authentication system.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authroleaddresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authroledeleterequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;role&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authroledeleteresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolegetrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;role&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolegetresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;perm&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;(slice of) authpb.Permission&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolegrantpermissionrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGrantPermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;name is the name of the role which will be granted the permission.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;perm&lt;/td&gt;
 &lt;td&gt;perm is the permission to grant to the role.&lt;/td&gt;
 &lt;td&gt;authpb.Permission&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolegrantpermissionresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleGrantPermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolelistrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolelistresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;roles&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;(slice of) string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolerevokepermissionrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleRevokePermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;role&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;key&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;range_end&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authrolerevokepermissionresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthRoleRevokePermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authstatusrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthStatusRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authstatusresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthStatusResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;enabled&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;authRevision&lt;/td&gt;
 &lt;td&gt;authRevision is the current revision of auth store&lt;/td&gt;
 &lt;td&gt;uint64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuseraddrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;password&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;options&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;authpb.UserAddOptions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;hashedPassword&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuseraddresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserchangepasswordrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserChangePasswordRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;name is the name of the user whose password is being changed.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;password&lt;/td&gt;
 &lt;td&gt;password is the new password for the user. Note that this field will be removed in the API layer.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;hashedPassword&lt;/td&gt;
 &lt;td&gt;hashedPassword is the new password for the user. Note that this field will be initialized in the API layer.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserchangepasswordresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserChangePasswordResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserdeleterequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;name is the name of the user to delete.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserdeleteresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authusergetrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authusergetresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;roles&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;(slice of) string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authusergrantrolerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGrantRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;user&lt;/td&gt;
 &lt;td&gt;user is the name of the user which should be granted a given role.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;role&lt;/td&gt;
 &lt;td&gt;role is the name of the role to grant to the user.&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authusergrantroleresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserGrantRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserlistrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserlistresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;users&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;(slice of) string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserrevokerolerequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserRevokeRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;role&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authuserrevokeroleresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthUserRevokeRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authenticaterequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthenticateRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;password&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-authenticateresponse-apietcdserverpbrpcproto"&gt;message &lt;code&gt;AuthenticateResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;option&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;token&lt;/td&gt;
 &lt;td&gt;token is an authorized token that can be used in succeeding RPCs&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-compactionrequest-apietcdserverpbrpcproto"&gt;message &lt;code&gt;CompactionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&lt;/h5&gt;
&lt;p&gt;CompactionRequest compacts the key-value store up to a given revision. All superseded keys with a revision less than the compaction revision will be removed.&lt;/p&gt;</description></item><item><title>API reference: concurrency</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/api_concurrency_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.6/dev-guide/api_concurrency_reference_v3/</guid><description>&lt;p&gt;This API reference is autogenerated from the named &lt;code&gt;.proto&lt;/code&gt; files.&lt;/p&gt;
&lt;h5 id="service-lock-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;service &lt;code&gt;Lock&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&lt;/h5&gt;
&lt;p&gt;The lock service exposes client-side locking facilities as a gRPC interface.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Request Type&lt;/th&gt;
 &lt;th&gt;Response Type&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Lock&lt;/td&gt;
 &lt;td&gt;LockRequest&lt;/td&gt;
 &lt;td&gt;LockResponse&lt;/td&gt;
 &lt;td&gt;Lock acquires a distributed shared lock on a given named lock. On success, it will return a unique key that exists so long as the lock is held by the caller. This key can be used in conjunction with transactions to safely ensure updates to etcd only occur while holding lock ownership. The lock is held until Unlock is called on the key or the lease associate with the owner expires.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Unlock&lt;/td&gt;
 &lt;td&gt;UnlockRequest&lt;/td&gt;
 &lt;td&gt;UnlockResponse&lt;/td&gt;
 &lt;td&gt;Unlock takes a key returned by Lock and releases the hold on lock. The next Lock caller waiting for the lock will then be woken up and given ownership of the lock.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-lockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;LockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;name is the identifier for the distributed shared lock to be acquired.&lt;/td&gt;
 &lt;td&gt;bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;lease&lt;/td&gt;
 &lt;td&gt;lease is the ID of the lease that will be attached to ownership of the lock. If the lease expires or is revoked and currently holds the lock, the lock is automatically released. Calls to Lock with the same lease will be treated as a single acquisition; locking twice with the same lease is a no-op.&lt;/td&gt;
 &lt;td&gt;int64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-lockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;LockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;key&lt;/td&gt;
 &lt;td&gt;key is a key that will exist on etcd for the duration that the Lock caller owns the lock. Users should not modify this key or the lock may exhibit undefined behavior.&lt;/td&gt;
 &lt;td&gt;bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-unlockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;UnlockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;key&lt;/td&gt;
 &lt;td&gt;key is the lock ownership key granted by Lock.&lt;/td&gt;
 &lt;td&gt;bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="message-unlockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;message &lt;code&gt;UnlockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&lt;/h5&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;header&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="service-election-serveretcdserverapiv3electionv3electionpbv3electionproto"&gt;service &lt;code&gt;Election&lt;/code&gt; (server/etcdserver/api/v3election/v3electionpb/v3election.proto)&lt;/h5&gt;
&lt;p&gt;The election service exposes client-side election facilities as a gRPC interface.&lt;/p&gt;</description></item></channel></rss>