Etcd Cluster API
Cluster membership management including member add, remove, and list
Cluster membership management including member add, remove, and list
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/etcd-cluster-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: etcd HTTP Gateway Auth Cluster API
description: The etcd HTTP/JSON gateway translates HTTP requests into gRPC calls, enabling clients without gRPC support to interact with the etcd v3 key-value store. The gateway exposes the full etcd v3 API surface including key-value operations (put, get, delete, range queries), watch streams for change notifications, lease management for TTL-based key expiration, cluster membership management, maintenance operations such as snapshots and defragmentation, and authentication and authorization controls. The gateway is served on port 2379 by default and accepts JSON-encoded request bodies that mirror the protobuf message structures of the underlying gRPC API.
version: '3.5'
contact:
name: etcd Community
url: https://etcd.io/community/
termsOfService: https://github.com/etcd-io/etcd/blob/main/LICENSE
servers:
- url: http://{host}:{port}/v3
description: etcd gRPC Gateway
variables:
host:
default: localhost
port:
default: '2379'
security:
- bearerAuth: []
tags:
- name: Cluster
description: Cluster membership management including member add, remove, and list
paths:
/cluster/member/add:
post:
operationId: clusterMemberAdd
summary: Etcd Add a member to the cluster
description: Adds a new member to the etcd cluster. The peer URLs of the new member must be provided. The new member starts in an unstarted state and is considered a learner until it catches up with the cluster's Raft log. The isLearner field can be set to true to explicitly add the member as a non-voting learner member.
tags:
- Cluster
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MemberAddRequest'
responses:
'200':
description: Member added successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MemberAddResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/cluster/member/remove:
post:
operationId: clusterMemberRemove
summary: Etcd Remove a member from the cluster
description: Removes an existing member from the etcd cluster identified by its member ID. The removed member is immediately excluded from the cluster's Raft quorum. Removing a member that holds the leadership will trigger a new leader election. Care must be taken to maintain quorum when removing members from small clusters.
tags:
- Cluster
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MemberRemoveRequest'
responses:
'200':
description: Member removed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MemberRemoveResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/cluster/member/update:
post:
operationId: clusterMemberUpdate
summary: Etcd Update a cluster member
description: Updates the peer URLs of an existing cluster member identified by its member ID. This is used when a cluster member's network address changes. The member must be reachable at the new URLs for the update to succeed. All other member properties are read-only and cannot be updated through this endpoint.
tags:
- Cluster
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MemberUpdateRequest'
responses:
'200':
description: Member updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MemberUpdateResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/cluster/member/list:
post:
operationId: clusterMemberList
summary: Etcd List cluster members
description: Returns a list of all members in the etcd cluster including their member IDs, names, peer URLs, client URLs, and whether they are learner members. The linearizable option controls whether the response is read from the cluster leader for the most up-to-date view of membership.
tags:
- Cluster
responses:
'200':
description: Cluster member list retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MemberListResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/cluster/member/promote:
post:
operationId: clusterMemberPromote
summary: Etcd Promote a learner member
description: Promotes a learner (non-voting) member to a full voting member of the etcd cluster. The learner must be caught up with the cluster's Raft log before it can be promoted. This two-phase approach (add as learner, then promote) provides a safer way to grow clusters without temporarily reducing quorum availability.
tags:
- Cluster
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MemberPromoteRequest'
responses:
'200':
description: Learner member promoted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MemberPromoteResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
MemberUpdateResponse:
type: object
description: Response from a member update operation
properties:
header:
$ref: '#/components/schemas/ResponseHeader'
members:
type: array
description: Updated list of all cluster members
items:
$ref: '#/components/schemas/Member'
Error:
type: object
description: Error response from the etcd API
properties:
error:
type: string
description: Human-readable error message
code:
type: integer
description: gRPC status code for the error
message:
type: string
description: Detailed error message
MemberPromoteResponse:
type: object
description: Response from a member promote operation
properties:
header:
$ref: '#/components/schemas/ResponseHeader'
members:
type: array
description: Updated list of all cluster members after the promotion
items:
$ref: '#/components/schemas/Member'
MemberRemoveRequest:
type: object
description: Request to remove a member from the cluster
required:
- ID
properties:
ID:
type: string
description: ID of the member to remove
MemberRemoveResponse:
type: object
description: Response from a member remove operation
properties:
header:
$ref: '#/components/schemas/ResponseHeader'
members:
type: array
description: Updated list of all cluster members after the removal
items:
$ref: '#/components/schemas/Member'
Member:
type: object
description: A member of the etcd cluster
properties:
ID:
type: string
description: Unique identifier for the cluster member
name:
type: string
description: Human-readable name of the cluster member
peerURLs:
type: array
description: URLs used for peer-to-peer communication within the cluster
items:
type: string
clientURLs:
type: array
description: URLs that clients use to communicate with this member
items:
type: string
isLearner:
type: boolean
description: True if this member is a non-voting learner member
ResponseHeader:
type: object
description: Header included in every etcd response containing cluster metadata and the revision at which the response was generated.
properties:
cluster_id:
type: string
description: ID of the etcd cluster
member_id:
type: string
description: ID of the member that generated the response
revision:
type: string
description: Key-value store revision at the time of the response
raft_term:
type: string
description: Raft term at the time of the response
MemberUpdateRequest:
type: object
description: Request to update a cluster member's peer URLs
required:
- ID
- peerURLs
properties:
ID:
type: string
description: ID of the member to update
peerURLs:
type: array
description: New peer URLs for the member
items:
type: string
MemberPromoteRequest:
type: object
description: Request to promote a learner member to a voting member
required:
- ID
properties:
ID:
type: string
description: ID of the learner member to promote
MemberAddRequest:
type: object
description: Request to add a new member to the cluster
required:
- peerURLs
properties:
peerURLs:
type: array
description: Peer URLs of the new member
items:
type: string
isLearner:
type: boolean
description: When true, adds the member as a non-voting learner
MemberAddResponse:
type: object
description: Response from a member add operation
properties:
header:
$ref: '#/components/schemas/ResponseHeader'
member:
$ref: '#/components/schemas/Member'
members:
type: array
description: Updated list of all cluster members
items:
$ref: '#/components/schemas/Member'
MemberListResponse:
type: object
description: Response from a member list operation
properties:
header:
$ref: '#/components/schemas/ResponseHeader'
members:
type: array
description: List of all cluster members
items:
$ref: '#/components/schemas/Member'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: JWT token obtained from the /auth/authenticate endpoint. Include in the Authorization header as "Bearer {token}".
externalDocs:
description: etcd gRPC Gateway Documentation
url: https://etcd.io/docs/v3.5/dev-guide/api_grpc_gateway/