OpenAPI Specification
openapi: 3.0.0
info:
description: 'ZeroTier Central Network Management Portal API.<p>All API requests must have an API token header specified in the <code>Authorization: token xxxxx</code> format. You can generate your API key by logging into <a href="https://my.zerotier.com">ZeroTier Central</a> and creating a token on the Account page.</p><p>eg. <code>curl -X GET -H "Authorization: token xxxxx" https://api.zerotier.com/api/v1/network</code></p><p><h3>Rate Limiting</h3></p><p>The ZeroTier Central API implements rate limiting. Paid users are limited to 100 requests per second. Free users are limited to 20 requests per second.</p> <p> You can get the OpenAPI spec here as well: <code>https://docs.zerotier.com/api/central/ref-v1.json</code></p>'
version: v1
title: ZeroTier Central controller network-member API
contact:
name: ZeroTier Support Discussion Forum
url: https://discuss.zerotier.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://api.zerotier.com/api/v1
description: Production Server
security:
- tokenAuth: []
tags:
- name: network-member
description: Network member operations
paths:
/network/{networkID}/member:
get:
tags:
- network-member
summary: Returns a list of Members on the network.
operationId: getNetworkMemberList
parameters:
- name: networkID
description: ID of the network to return
in: path
required: true
schema:
type: string
responses:
'200':
description: member list get success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Member'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/AccessDeniedError'
'404':
$ref: '#/components/responses/NotFound'
/network/{networkID}/member/{memberID}:
get:
tags:
- network-member
operationId: getNetworkMember
summary: Return an individual member on a network
parameters:
- name: networkID
description: ID of the network
in: path
required: true
schema:
type: string
- name: memberID
description: ID of the member
in: path
required: true
schema:
type: string
responses:
'200':
description: member get success
content:
application/json:
schema:
$ref: '#/components/schemas/Member'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/AccessDeniedError'
'404':
$ref: '#/components/responses/NotFound'
post:
tags:
- network-member
operationId: updateNetworkMember
summary: Modify a network member
parameters:
- name: networkID
description: ID of the network
in: path
required: true
schema:
type: string
- name: memberID
description: ID of the member
in: path
required: true
schema:
type: string
requestBody:
description: Member object JSON
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Member'
responses:
'200':
description: member changed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Member'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/AccessDeniedError'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- network-member
operationId: deleteNetworkMember
summary: Delete a network member
parameters:
- name: networkID
description: ID of the network
in: path
required: true
schema:
type: string
- name: memberID
description: ID of the member
in: path
required: true
schema:
type: string
responses:
'200':
description: member deleted
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/AccessDeniedError'
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
AccessDeniedError:
description: Access denied
UnauthorizedError:
description: Authorization required
NotFound:
description: Item not found
schemas:
MemberConfig:
type: object
properties:
activeBridge:
type: boolean
readOnly: false
description: Allow the member to be a bridge on the network
example: false
nullable: true
authorized:
type: boolean
readOnly: false
description: Is the member authorized on the network
example: true
nullable: true
capabilities:
type: array
items:
type: integer
nullable: true
creationTime:
type: integer
format: int64
readOnly: true
description: Time the member was created or first tried to join the network
example: 1599853509872
nullable: true
id:
type: string
readOnly: true
description: ID of the member node. This is the 10 digit identifier that identifies a ZeroTier node.
example: abcdef01234
nullable: true
identity:
type: string
readOnly: true
description: Public Key of the member's Identity
example: abcdef0123:0:abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123
nullable: true
ipAssignments:
type: array
readOnly: false
description: List of assigned IP addresses
items:
type: string
example:
- 10.0.0.3
nullable: true
lastAuthorizedTime:
type: integer
format: int64
readOnly: true
description: Time the member was authorized on the network
example: 1599853637989
nullable: true
lastDeauthorizedTime:
type: integer
format: int64
readOnly: true
description: Time the member was deauthorized on the network
example: 0
nullable: true
noAutoAssignIps:
type: boolean
readOnly: false
description: Exempt this member from the IP auto assignment pool on a Network
example: false
nullable: true
revision:
type: integer
readOnly: true
description: Member record revision count
example: 123
nullable: true
ssoExempt:
type: boolean
readOnly: false
description: Allow the member to be authorized without OIDC/SSO
example: false
nullable: true
tags:
type: array
items:
type: array
items:
anyOf:
- type: integer
- type: boolean
nullable: true
readOnly: false
description: Array of 2 member tuples of tag [ID, tag value]
example:
- - 123
- 456
vMajor:
type: integer
readOnly: true
description: Major version of the client
example: 1
nullable: true
vMinor:
type: integer
readOnly: true
description: Minor version of the client
example: 6
nullable: true
vRev:
type: integer
readOnly: true
description: Revision number of the client
example: 3
nullable: true
vProto:
type: integer
readOnly: true
description: Protocol version of the client
example: 12
nullable: true
Member:
type: object
properties:
id:
type: string
example: 8056c2e21c000001-abcdef0123
description: concatenation of network ID and member ID
readOnly: true
deprecated: true
nullable: true
clock:
type: integer
format: int64
example: 1612993759070
readOnly: true
nullable: true
networkId:
type: string
example: 8056c2e21c000001
readOnly: true
nullable: true
nodeId:
type: string
example: abcdef01234
description: ZeroTier ID of the member
readOnly: true
nullable: true
controllerId:
type: string
example: 8056c2e21c
readOnly: true
deprecated: true
nullable: true
hidden:
type: boolean
example: false
description: Whether or not the member is hidden in the UI
nullable: true
name:
type: string
example: my-cray-supercomputer
readOnly: false
description: User defined name of the member
nullable: true
description:
type: string
example: My super awesome cray that I got ZeroTier to run on
readOnly: false
description: User defined description of the member
nullable: true
config:
$ref: '#/components/schemas/MemberConfig'
nullable: true
lastOnline:
type: integer
format: int64
readOnly: true
description: 'Last seen time of the member (milliseconds since epoch). Note: This data is considered ephemeral and may be reset to 0 at any time without warning.'
example: 1612993673254
nullable: true
deprecated: true
lastSeen:
type: integer
format: int64
readOnly: true
description: 'Time the member last checked in with the network controller in milliseconds since epoch. Note: This data is considered ephemeral and may be reset to 0 at any time without warning.'
example: 1612993673254
nullable: true
physicalAddress:
type: string
readOnly: true
description: 'IP address the member last spoke to the controller via (milliseconds since epoch). Note: This data is considered ephemeral and may be reset to 0 at any time without warning.'
example: 8.8.8.8
nullable: true
clientVersion:
type: string
readOnly: true
description: ZeroTier version the member is running
example: 1.6.3
nullable: true
protocolVersion:
type: integer
readOnly: true
description: ZeroTier protocol version
example: 12
nullable: true
supportsRulesEngine:
type: boolean
readOnly: true
description: Whether or not the client version is new enough to support the rules engine (1.4.0+)
nullable: true
securitySchemes:
tokenAuth:
type: http
scheme: token