Back to top

ZeroTier Central API

ZeroTier Central’s API is (mostly) RESTful and accepts GET and POST requests. PUT is treated as a synonym of POST. All posted payloads must be JSON (content type header is ignored). Field types are generally strict, e.g. a field that takes an integer may ignore or return an error if set to a string or a boolean. Writes to unrecognized or read-only fields are ignored. Unless you are running a private instance of Central configured to accept plain http, all requests must be https.

Token authentication is accomplished by sending the following header: Authorization: bearer <API token> API tokens may be created and viewed in your user configuration. Guard your API tokens very carefully.

This documentation is written in API blueprint format and is available in raw MSON form here..

General Queries

status

Get Status and Configuration Information
GET/api/status

Obtain information about this server and/or useful to the Central web UI.

Example URI

GET /api/status
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "online": {
      "type": "boolean",
      "description": "Always true"
    },
    "clock": {
      "type": "number",
      "description": "Current server-side system clock (ms since epoch)"
    },
    "version": {
      "type": "string",
      "description": "ZeroTier Central version"
    },
    "apiVersion": {
      "type": "number",
      "description": "ZeroTier Central API version"
    },
    "uptime": {
      "type": "number",
      "description": "This host's uptime in milliseconds"
    },
    "user": {
      "type": "object",
      "properties": {},
      "description": "Current user if authenticated, otherwise null"
    },
    "stripePublishableKey": {
      "type": "string",
      "description": "Publishable key for Stripe payment processor or null if not configured"
    },
    "paidPlans": {
      "type": "object",
      "properties": {},
      "description": "Available paid plans (if configured)"
    },
    "smsEnabled": {
      "type": "boolean",
      "description": "True if SMS messaging is available"
    },
    "clusterNode": {
      "type": "string",
      "description": "Name of current cluster node servicing this request"
    },
    "loginMethods": {
      "type": "object",
      "properties": {},
      "description": "Object containing login methods and whether they are available"
    },
    "recaptchaSiteKey": {
      "type": "string",
      "description": "Recaptcha site key or null if not configured"
    },
    "return_to": {
      "type": "string",
      "description": "Bounce destination if using Central as third party auth source (used for ZeroTier support login)"
    }
  }
}

self

Get Currently Authenticated User
GET/api/self

Get the currently authenticated user’s user record.

Example URI

GET /api/self
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "User ID (GUID) [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type [ro]"
    },
    "clock": {
      "type": "number",
      "description": "Current system clock on server [ro]"
    },
    "globalPermissions": {
      "type": "object",
      "properties": {
        "r": {
          "type": "boolean",
          "description": "Read"
        },
        "m": {
          "type": "boolean",
          "description": "Modify"
        },
        "d": {
          "type": "boolean",
          "description": "Delete"
        },
        "a": {
          "type": "boolean",
          "description": "Authorize"
        }
      },
      "description": "Global permissions for this user against all objects on system (for admins) [ro]"
    },
    "ui": {
      "type": "object",
      "properties": {},
      "description": "Arbitrary data that is stored and used by the UI [rw]"
    },
    "displayName": {
      "type": "string",
      "description": "User display name [rw]"
    },
    "email": {
      "type": "string",
      "description": "User e-mail [ro]"
    },
    "auth": {
      "type": "object",
      "properties": {},
      "description": "Object containing one or more authentication types and login names or IDs [ro]"
    },
    "smsNumber": {
      "type": "string",
      "description": "SMS telephone number for sending SMS notifications [rw]"
    },
    "tokens": {
      "type": "array",
      "description": "Array of API authentication tokens [rw]"
    },
    "permissions": {
      "type": "object",
      "properties": {
        "{id}": {
          "type": "object",
          "properties": {
            "t": {
              "type": "string",
              "description": "Type of actor object (currently User or Group)"
            },
            "r": {
              "type": "boolean",
              "description": "Read"
            },
            "m": {
              "type": "boolean",
              "description": "Modify"
            },
            "d": {
              "type": "boolean",
              "description": "Delete"
            },
            "a": {
              "type": "boolean",
              "description": "Authorize"
            }
          },
          "description": "Permissions possessed by actor object, by object ID [ro]"
        }
      },
      "description": "Actors with permissions that apply to this object [ro]"
    },
    "subscriptions": {
      "type": "object",
      "properties": {},
      "description": "Subscriptions by plan ID [ro]"
    }
  }
}

randomToken

Generate a Random Token
GET/api/randomToken

This generates a random token suitable for use as an API token server-side using a secure random source. It does not actually modify the user record, just returns the token for use by API callers or the UI.

Example URI

GET /api/randomToken
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "description": "Random string suitable for use as an API authentication token"
    },
    "clock": {
      "type": "number",
      "description": "Current server-side system clock (ms since epoch)"
    },
    "raw": {
      "type": "string",
      "description": "Raw random bytes in hex format"
    }
  }
}

logout

Terminate Current Session
POST/api/auth/_logout

Hitting this endpoint causes the user to be logged out. It has no effect when using token authentication, so it’s mostly used by the UI.

Example URI

POST /api/auth/_logout
Response  200
HideShow
Headers
Content-Type: application/json

User

User

Retrieve a User
GET/api/user/{userId}

Example URI

GET /api/user/00000000
URI Parameters
HideShow
userId
string (required) Example: 00000000

0000-0000-0000-000000000000 (required,string) - Internal user ID (GUID)

Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "User ID (GUID) [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type [ro]"
    },
    "clock": {
      "type": "number",
      "description": "Current system clock on server [ro]"
    },
    "globalPermissions": {
      "type": "object",
      "properties": {
        "r": {
          "type": "boolean",
          "description": "Read"
        },
        "m": {
          "type": "boolean",
          "description": "Modify"
        },
        "d": {
          "type": "boolean",
          "description": "Delete"
        },
        "a": {
          "type": "boolean",
          "description": "Authorize"
        }
      },
      "description": "Global permissions for this user against all objects on system (for admins) [ro]"
    },
    "ui": {
      "type": "object",
      "properties": {},
      "description": "Arbitrary data that is stored and used by the UI [rw]"
    },
    "displayName": {
      "type": "string",
      "description": "User display name [rw]"
    },
    "email": {
      "type": "string",
      "description": "User e-mail [ro]"
    },
    "auth": {
      "type": "object",
      "properties": {},
      "description": "Object containing one or more authentication types and login names or IDs [ro]"
    },
    "smsNumber": {
      "type": "string",
      "description": "SMS telephone number for sending SMS notifications [rw]"
    },
    "tokens": {
      "type": "array",
      "description": "Array of API authentication tokens [rw]"
    },
    "permissions": {
      "type": "object",
      "properties": {
        "{id}": {
          "type": "object",
          "properties": {
            "t": {
              "type": "string",
              "description": "Type of actor object (currently User or Group)"
            },
            "r": {
              "type": "boolean",
              "description": "Read"
            },
            "m": {
              "type": "boolean",
              "description": "Modify"
            },
            "d": {
              "type": "boolean",
              "description": "Delete"
            },
            "a": {
              "type": "boolean",
              "description": "Authorize"
            }
          },
          "description": "Permissions possessed by actor object, by object ID [ro]"
        }
      },
      "description": "Actors with permissions that apply to this object [ro]"
    },
    "subscriptions": {
      "type": "object",
      "properties": {},
      "description": "Subscriptions by plan ID [ro]"
    }
  }
}

Update a User
POST/api/user/{userId}

Only fields marked as [rw] can be directly modified. If other fields are present in the posted request they are ignored.

Example URI

POST /api/user/00000000
URI Parameters
HideShow
userId
string (required) Example: 00000000

0000-0000-0000-000000000000 (required,string) - Internal user ID (GUID)

Request
HideShow
Headers
Content-Type: application/json
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "User ID (GUID) [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type [ro]"
    },
    "clock": {
      "type": "number",
      "description": "Current system clock on server [ro]"
    },
    "globalPermissions": {
      "type": "object",
      "properties": {
        "r": {
          "type": "boolean",
          "description": "Read"
        },
        "m": {
          "type": "boolean",
          "description": "Modify"
        },
        "d": {
          "type": "boolean",
          "description": "Delete"
        },
        "a": {
          "type": "boolean",
          "description": "Authorize"
        }
      },
      "description": "Global permissions for this user against all objects on system (for admins) [ro]"
    },
    "ui": {
      "type": "object",
      "properties": {},
      "description": "Arbitrary data that is stored and used by the UI [rw]"
    },
    "displayName": {
      "type": "string",
      "description": "User display name [rw]"
    },
    "email": {
      "type": "string",
      "description": "User e-mail [ro]"
    },
    "auth": {
      "type": "object",
      "properties": {},
      "description": "Object containing one or more authentication types and login names or IDs [ro]"
    },
    "smsNumber": {
      "type": "string",
      "description": "SMS telephone number for sending SMS notifications [rw]"
    },
    "tokens": {
      "type": "array",
      "description": "Array of API authentication tokens [rw]"
    },
    "permissions": {
      "type": "object",
      "properties": {
        "{id}": {
          "type": "object",
          "properties": {
            "t": {
              "type": "string",
              "description": "Type of actor object (currently User or Group)"
            },
            "r": {
              "type": "boolean",
              "description": "Read"
            },
            "m": {
              "type": "boolean",
              "description": "Modify"
            },
            "d": {
              "type": "boolean",
              "description": "Delete"
            },
            "a": {
              "type": "boolean",
              "description": "Authorize"
            }
          },
          "description": "Permissions possessed by actor object, by object ID [ro]"
        }
      },
      "description": "Actors with permissions that apply to this object [ro]"
    },
    "subscriptions": {
      "type": "object",
      "properties": {},
      "description": "Subscriptions by plan ID [ro]"
    }
  }
}

Delete a User
DELETE/api/user/{userId}

Delete a user. This will immediately and PERMANENTLY delete a user and all associated networks and data. Only hit this URL if you’re 100% sure you want the user deleted.

Example URI

DELETE /api/user/00000000
URI Parameters
HideShow
userId
string (required) Example: 00000000

0000-0000-0000-000000000000 (required,string) - Internal user ID (GUID)

Request
HideShow
Headers
Content-Type: application/json
Response  200

Users

Get All Viewable Users
GET/api/user

Get all users for which you have at least read access.

Example URI

GET /api/user
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array"
}

Network

Network

Retrieve a Network
GET/api/network/{networkId}

Example URI

GET /api/network/0000000000000000
URI Parameters
HideShow
networkId
string (required) Example: 0000000000000000

16-digit ZeroTier network ID

Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "16-digit ZeroTier network ID [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type (\"Network\") [ro]"
    },
    "clock": {
      "type": "number",
      "description": "Current system clock on server [ro]"
    },
    "ui": {
      "type": "object",
      "properties": {},
      "description": "Arbitrary data that is stored and used by the UI [rw]"
    },
    "rulesSource": {
      "type": "string",
      "description": "Source code of network rule set [rw]"
    },
    "description": {
      "type": "string",
      "description": "Long description of this network [rw]"
    },
    "permissions": {
      "type": "object",
      "properties": {
        "{id}": {
          "type": "object",
          "properties": {
            "t": {
              "type": "string",
              "description": "Type of actor object (currently User or Group)"
            },
            "r": {
              "type": "boolean",
              "description": "Read"
            },
            "m": {
              "type": "boolean",
              "description": "Modify"
            },
            "d": {
              "type": "boolean",
              "description": "Delete"
            },
            "a": {
              "type": "boolean",
              "description": "Authorize"
            }
          },
          "description": "Permissions possessed by actor object, by object ID [ro]"
        }
      },
      "description": "Actors with permissions that apply to this object [ro]"
    },
    "onlineMemberCount": {
      "type": "number",
      "description": "Number of members online [ro]"
    },
    "capabilitiesByName": {
      "type": "object",
      "properties": {},
      "description": "Capabilities defined in rule set by name [rw]"
    },
    "tagsByName": {
      "type": "object",
      "properties": {},
      "description": "Tags defined in rule set by name [rw]"
    },
    "circuitTestEvery": {
      "type": "number",
      "description": "Circuit test this network every N milliseconds [ro]"
    },
    "config": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "16-digit ZeroTier network ID [ro]"
        },
        "nwid": {
          "type": "string",
          "description": "16-digit ZeroTier network ID (for backward compatibility) [ro]"
        },
        "name": {
          "type": "string",
          "description": "Short name of network [rw]"
        },
        "objtype": {
          "type": "string",
          "description": "Object type on controller (\"network\") [ro]"
        },
        "private": {
          "type": "boolean",
          "description": "If true, certificate access control is enabled [rw]"
        },
        "creationTime": {
          "type": "number",
          "description": "Time network was created on controller [ro]"
        },
        "revision": {
          "type": "number",
          "description": "Network revision number [ro]"
        },
        "lastModified": {
          "type": "number",
          "description": "Time config was last modified [ro]"
        },
        "multicastLimit": {
          "type": "number",
          "description": "Max recipients per multicast or broadcast [rw]"
        },
        "routes": {
          "type": "array",
          "description": "Array of IP routes published to members [rw]"
        },
        "rules": {
          "type": "array",
          "description": "Network base rules table [rw]"
        },
        "tags": {
          "type": "array",
          "description": "Array of tags available on this network [rw]"
        },
        "capabilities": {
          "type": "array",
          "description": "Array of capabilities available on this network [rw]"
        },
        "totalMemberCount": {
          "type": "number",
          "description": "Total number of members [ro]"
        },
        "activeMemberCount": {
          "type": "number",
          "description": "Number of active/online members [ro]"
        },
        "authTokens": {
          "type": "array",
          "description": "Array of authentication tokens for auto-authorizing new members [rw]"
        },
        "authorizedMemberCount": {
          "type": "number",
          "description": "Number of authorized members [ro]"
        },
        "v4AssignMode": {
          "type": "object",
          "properties": {},
          "description": "Boolean toggles for IPv4 assignment modes [rw]"
        },
        "v6AssignMode": {
          "type": "object",
          "properties": {},
          "description": "Boolean toggles for IPv6 assignment modes [rw]"
        }
      },
      "description": "Network configuration (for actual controller) [rw]"
    }
  }
}

Update or create a Network
POST/api/network/{networkId}

Only fields marked as [rw] can be directly modified. If other fields are present in the posted request they are ignored.

New networks can be created by POSTing to /api/network with no networkId parameter. The server will create a random unused network ID and return the new network record.

Example URI

POST /api/network/0000000000000000
URI Parameters
HideShow
networkId
string (required) Example: 0000000000000000

16-digit ZeroTier network ID

Request
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "16-digit ZeroTier network ID [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type (\"Network\") [ro]"
    },
    "clock": {
      "type": "number",
      "description": "Current system clock on server [ro]"
    },
    "ui": {
      "type": "object",
      "properties": {},
      "description": "Arbitrary data that is stored and used by the UI [rw]"
    },
    "rulesSource": {
      "type": "string",
      "description": "Source code of network rule set [rw]"
    },
    "description": {
      "type": "string",
      "description": "Long description of this network [rw]"
    },
    "permissions": {
      "type": "object",
      "properties": {
        "{id}": {
          "type": "object",
          "properties": {
            "t": {
              "type": "string",
              "description": "Type of actor object (currently User or Group)"
            },
            "r": {
              "type": "boolean",
              "description": "Read"
            },
            "m": {
              "type": "boolean",
              "description": "Modify"
            },
            "d": {
              "type": "boolean",
              "description": "Delete"
            },
            "a": {
              "type": "boolean",
              "description": "Authorize"
            }
          },
          "description": "Permissions possessed by actor object, by object ID [ro]"
        }
      },
      "description": "Actors with permissions that apply to this object [ro]"
    },
    "onlineMemberCount": {
      "type": "number",
      "description": "Number of members online [ro]"
    },
    "capabilitiesByName": {
      "type": "object",
      "properties": {},
      "description": "Capabilities defined in rule set by name [rw]"
    },
    "tagsByName": {
      "type": "object",
      "properties": {},
      "description": "Tags defined in rule set by name [rw]"
    },
    "circuitTestEvery": {
      "type": "number",
      "description": "Circuit test this network every N milliseconds [ro]"
    },
    "config": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "16-digit ZeroTier network ID [ro]"
        },
        "nwid": {
          "type": "string",
          "description": "16-digit ZeroTier network ID (for backward compatibility) [ro]"
        },
        "name": {
          "type": "string",
          "description": "Short name of network [rw]"
        },
        "objtype": {
          "type": "string",
          "description": "Object type on controller (\"network\") [ro]"
        },
        "private": {
          "type": "boolean",
          "description": "If true, certificate access control is enabled [rw]"
        },
        "creationTime": {
          "type": "number",
          "description": "Time network was created on controller [ro]"
        },
        "revision": {
          "type": "number",
          "description": "Network revision number [ro]"
        },
        "lastModified": {
          "type": "number",
          "description": "Time config was last modified [ro]"
        },
        "multicastLimit": {
          "type": "number",
          "description": "Max recipients per multicast or broadcast [rw]"
        },
        "routes": {
          "type": "array",
          "description": "Array of IP routes published to members [rw]"
        },
        "rules": {
          "type": "array",
          "description": "Network base rules table [rw]"
        },
        "tags": {
          "type": "array",
          "description": "Array of tags available on this network [rw]"
        },
        "capabilities": {
          "type": "array",
          "description": "Array of capabilities available on this network [rw]"
        },
        "totalMemberCount": {
          "type": "number",
          "description": "Total number of members [ro]"
        },
        "activeMemberCount": {
          "type": "number",
          "description": "Number of active/online members [ro]"
        },
        "authTokens": {
          "type": "array",
          "description": "Array of authentication tokens for auto-authorizing new members [rw]"
        },
        "authorizedMemberCount": {
          "type": "number",
          "description": "Number of authorized members [ro]"
        },
        "v4AssignMode": {
          "type": "object",
          "properties": {},
          "description": "Boolean toggles for IPv4 assignment modes [rw]"
        },
        "v6AssignMode": {
          "type": "object",
          "properties": {},
          "description": "Boolean toggles for IPv6 assignment modes [rw]"
        }
      },
      "description": "Network configuration (for actual controller) [rw]"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "16-digit ZeroTier network ID [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type (\"Network\") [ro]"
    },
    "clock": {
      "type": "number",
      "description": "Current system clock on server [ro]"
    },
    "ui": {
      "type": "object",
      "properties": {},
      "description": "Arbitrary data that is stored and used by the UI [rw]"
    },
    "rulesSource": {
      "type": "string",
      "description": "Source code of network rule set [rw]"
    },
    "description": {
      "type": "string",
      "description": "Long description of this network [rw]"
    },
    "permissions": {
      "type": "object",
      "properties": {
        "{id}": {
          "type": "object",
          "properties": {
            "t": {
              "type": "string",
              "description": "Type of actor object (currently User or Group)"
            },
            "r": {
              "type": "boolean",
              "description": "Read"
            },
            "m": {
              "type": "boolean",
              "description": "Modify"
            },
            "d": {
              "type": "boolean",
              "description": "Delete"
            },
            "a": {
              "type": "boolean",
              "description": "Authorize"
            }
          },
          "description": "Permissions possessed by actor object, by object ID [ro]"
        }
      },
      "description": "Actors with permissions that apply to this object [ro]"
    },
    "onlineMemberCount": {
      "type": "number",
      "description": "Number of members online [ro]"
    },
    "capabilitiesByName": {
      "type": "object",
      "properties": {},
      "description": "Capabilities defined in rule set by name [rw]"
    },
    "tagsByName": {
      "type": "object",
      "properties": {},
      "description": "Tags defined in rule set by name [rw]"
    },
    "circuitTestEvery": {
      "type": "number",
      "description": "Circuit test this network every N milliseconds [ro]"
    },
    "config": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "16-digit ZeroTier network ID [ro]"
        },
        "nwid": {
          "type": "string",
          "description": "16-digit ZeroTier network ID (for backward compatibility) [ro]"
        },
        "name": {
          "type": "string",
          "description": "Short name of network [rw]"
        },
        "objtype": {
          "type": "string",
          "description": "Object type on controller (\"network\") [ro]"
        },
        "private": {
          "type": "boolean",
          "description": "If true, certificate access control is enabled [rw]"
        },
        "creationTime": {
          "type": "number",
          "description": "Time network was created on controller [ro]"
        },
        "revision": {
          "type": "number",
          "description": "Network revision number [ro]"
        },
        "lastModified": {
          "type": "number",
          "description": "Time config was last modified [ro]"
        },
        "multicastLimit": {
          "type": "number",
          "description": "Max recipients per multicast or broadcast [rw]"
        },
        "routes": {
          "type": "array",
          "description": "Array of IP routes published to members [rw]"
        },
        "rules": {
          "type": "array",
          "description": "Network base rules table [rw]"
        },
        "tags": {
          "type": "array",
          "description": "Array of tags available on this network [rw]"
        },
        "capabilities": {
          "type": "array",
          "description": "Array of capabilities available on this network [rw]"
        },
        "totalMemberCount": {
          "type": "number",
          "description": "Total number of members [ro]"
        },
        "activeMemberCount": {
          "type": "number",
          "description": "Number of active/online members [ro]"
        },
        "authTokens": {
          "type": "array",
          "description": "Array of authentication tokens for auto-authorizing new members [rw]"
        },
        "authorizedMemberCount": {
          "type": "number",
          "description": "Number of authorized members [ro]"
        },
        "v4AssignMode": {
          "type": "object",
          "properties": {},
          "description": "Boolean toggles for IPv4 assignment modes [rw]"
        },
        "v6AssignMode": {
          "type": "object",
          "properties": {},
          "description": "Boolean toggles for IPv6 assignment modes [rw]"
        }
      },
      "description": "Network configuration (for actual controller) [rw]"
    }
  }
}

Delete a Network
DELETE/api/network/{networkId}

Delete a network and all its related information permanently. Use extreme caution as this cannot be undone!

Example URI

DELETE /api/network/0000000000000000
URI Parameters
HideShow
networkId
string (required) Example: 0000000000000000

16-digit ZeroTier network ID

Response  200

Networks

Get All Viewable Networks
GET/api/network

Get all networks for which you have at least read access.

Example URI

GET /api/network
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array"
}

Member

Member

Retrieve a Member
GET/api/network/{networkId}/member/{nodeId}

Example URI

GET /api/network/0000000000000000/member/0000000000
URI Parameters
HideShow
networkId
string (required) Example: 0000000000000000

16-digit ZeroTier network ID

nodeId
string (required) Example: 0000000000

10-digit ZeroTier node ID (a.k.a. ZeroTier address)

Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Member record ID, which is formed from the network and node IDs [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type (\"Member\") [ro]"
    },
    "clock": {
      "type": "number",
      "description": "System clock on server [ro]"
    },
    "networkId": {
      "type": "string",
      "description": "16-digit ZeroTier network ID [ro]"
    },
    "nodeId": {
      "type": "string",
      "description": "10-digit ZeroTier node ID / device address [ro]"
    },
    "controllerId": {
      "type": "string",
      "description": "10-digit ZeroTier node ID of controller (same as first 10 digits of network ID) [ro]"
    },
    "hidden": {
      "type": "boolean",
      "description": "Hidden in UI? [rw]"
    },
    "name": {
      "type": "string",
      "description": "Short name describing member [rw]"
    },
    "description": {
      "type": "string",
      "description": "Long form description [rw]"
    },
    "online": {
      "type": "boolean",
      "description": "Member is online? (has requested an update recently) [ro]"
    },
    "lastOnline": {
      "type": "number",
      "description": "Time member was last determined to be online [ro]"
    },
    "lastOffline": {
      "type": "number",
      "description": "Time member was last determined to be offline [ro]"
    },
    "physicalAddress": {
      "type": "string",
      "description": "Latest physical address of member [ro]"
    },
    "physicalLocation": {
      "description": "Lat/lon of estimated (GeoIP-determined) location of physicalAddress (if available) [ro]"
    },
    "clientVersion": {
      "type": "string",
      "description": "Most recent client software version [ro]"
    },
    "protocolVersion": {
      "type": "number",
      "description": "Most recent client-reported ZeroTier protocol version [ro]"
    },
    "supportsCircuitTesting": {
      "type": "boolean",
      "description": "True if member supports circuit testing [ro]"
    },
    "supportsRulesEngine": {
      "type": "boolean",
      "description": "True if member supports the new (post-1.2) rules engine [ro]"
    },
    "offlineNotifyDelay": {
      "type": "number",
      "description": "Notify of offline after this many milliseconds [rw]"
    },
    "config": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "10-digit ZeroTier node ID [ro]"
        },
        "address": {
          "type": "string",
          "description": "10-digit ZeroTier node ID [ro]"
        },
        "nwid": {
          "type": "string",
          "description": "16-digit network ID [ro]"
        },
        "objtype": {
          "type": "string",
          "description": "Object type on controller (\"member\") [ro]"
        },
        "authorized": {
          "type": "boolean",
          "description": "True if authorized (only matters on private networks) [rw]"
        },
        "authHistory": {
          "type": "array",
          "description": "History of most recent authentications [ro]"
        },
        "capabilities": {
          "type": "array",
          "description": "Array of IDs of capabilities assigned to this member [rw]"
        },
        "tags": {
          "type": "array",
          "description": "Array of tuples of tag ID, tag value [rw]"
        },
        "creationTime": {
          "type": "number",
          "description": "Time member record was first created [ro]"
        },
        "identity": {
          "type": "string",
          "description": "ZeroTier public identity of member (address and public key) [ro]"
        },
        "ipAssignments": {
          "type": "array",
          "description": "Array of IP assignments published to member [rw]"
        },
        "lastAuthorizedTime": {
          "type": "number",
          "description": "Time member was last authorized on network [ro]"
        },
        "lastDeauthorizedTime": {
          "type": "number",
          "description": "Time member was last de-authorized on network [ro]"
        },
        "noAutoAssignIps": {
          "type": "boolean",
          "description": "If true do not auto-assign IPv4 or IPv6 addresses, overriding network settings [rw]"
        },
        "physicalAddr": {
          "type": "string",
          "description": "Last known physical address of member [ro]"
        },
        "revision": {
          "type": "number",
          "description": "Member record revision counter [ro]"
        }
      },
      "description": "Member configuration (for actual controller) [rw]"
    }
  }
}

Update or add a Member
POST/api/network/{networkId}/member/{nodeId}

New members can be added to a network by POSTing them.

Example URI

POST /api/network/0000000000000000/member/0000000000
URI Parameters
HideShow
networkId
string (required) Example: 0000000000000000

16-digit ZeroTier network ID

nodeId
string (required) Example: 0000000000

10-digit ZeroTier node ID (a.k.a. ZeroTier address)

Request
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Member record ID, which is formed from the network and node IDs [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type (\"Member\") [ro]"
    },
    "clock": {
      "type": "number",
      "description": "System clock on server [ro]"
    },
    "networkId": {
      "type": "string",
      "description": "16-digit ZeroTier network ID [ro]"
    },
    "nodeId": {
      "type": "string",
      "description": "10-digit ZeroTier node ID / device address [ro]"
    },
    "controllerId": {
      "type": "string",
      "description": "10-digit ZeroTier node ID of controller (same as first 10 digits of network ID) [ro]"
    },
    "hidden": {
      "type": "boolean",
      "description": "Hidden in UI? [rw]"
    },
    "name": {
      "type": "string",
      "description": "Short name describing member [rw]"
    },
    "description": {
      "type": "string",
      "description": "Long form description [rw]"
    },
    "online": {
      "type": "boolean",
      "description": "Member is online? (has requested an update recently) [ro]"
    },
    "lastOnline": {
      "type": "number",
      "description": "Time member was last determined to be online [ro]"
    },
    "lastOffline": {
      "type": "number",
      "description": "Time member was last determined to be offline [ro]"
    },
    "physicalAddress": {
      "type": "string",
      "description": "Latest physical address of member [ro]"
    },
    "physicalLocation": {
      "description": "Lat/lon of estimated (GeoIP-determined) location of physicalAddress (if available) [ro]"
    },
    "clientVersion": {
      "type": "string",
      "description": "Most recent client software version [ro]"
    },
    "protocolVersion": {
      "type": "number",
      "description": "Most recent client-reported ZeroTier protocol version [ro]"
    },
    "supportsCircuitTesting": {
      "type": "boolean",
      "description": "True if member supports circuit testing [ro]"
    },
    "supportsRulesEngine": {
      "type": "boolean",
      "description": "True if member supports the new (post-1.2) rules engine [ro]"
    },
    "offlineNotifyDelay": {
      "type": "number",
      "description": "Notify of offline after this many milliseconds [rw]"
    },
    "config": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "10-digit ZeroTier node ID [ro]"
        },
        "address": {
          "type": "string",
          "description": "10-digit ZeroTier node ID [ro]"
        },
        "nwid": {
          "type": "string",
          "description": "16-digit network ID [ro]"
        },
        "objtype": {
          "type": "string",
          "description": "Object type on controller (\"member\") [ro]"
        },
        "authorized": {
          "type": "boolean",
          "description": "True if authorized (only matters on private networks) [rw]"
        },
        "authHistory": {
          "type": "array",
          "description": "History of most recent authentications [ro]"
        },
        "capabilities": {
          "type": "array",
          "description": "Array of IDs of capabilities assigned to this member [rw]"
        },
        "tags": {
          "type": "array",
          "description": "Array of tuples of tag ID, tag value [rw]"
        },
        "creationTime": {
          "type": "number",
          "description": "Time member record was first created [ro]"
        },
        "identity": {
          "type": "string",
          "description": "ZeroTier public identity of member (address and public key) [ro]"
        },
        "ipAssignments": {
          "type": "array",
          "description": "Array of IP assignments published to member [rw]"
        },
        "lastAuthorizedTime": {
          "type": "number",
          "description": "Time member was last authorized on network [ro]"
        },
        "lastDeauthorizedTime": {
          "type": "number",
          "description": "Time member was last de-authorized on network [ro]"
        },
        "noAutoAssignIps": {
          "type": "boolean",
          "description": "If true do not auto-assign IPv4 or IPv6 addresses, overriding network settings [rw]"
        },
        "physicalAddr": {
          "type": "string",
          "description": "Last known physical address of member [ro]"
        },
        "revision": {
          "type": "number",
          "description": "Member record revision counter [ro]"
        }
      },
      "description": "Member configuration (for actual controller) [rw]"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Member record ID, which is formed from the network and node IDs [ro]"
    },
    "type": {
      "type": "string",
      "description": "Object type (\"Member\") [ro]"
    },
    "clock": {
      "type": "number",
      "description": "System clock on server [ro]"
    },
    "networkId": {
      "type": "string",
      "description": "16-digit ZeroTier network ID [ro]"
    },
    "nodeId": {
      "type": "string",
      "description": "10-digit ZeroTier node ID / device address [ro]"
    },
    "controllerId": {
      "type": "string",
      "description": "10-digit ZeroTier node ID of controller (same as first 10 digits of network ID) [ro]"
    },
    "hidden": {
      "type": "boolean",
      "description": "Hidden in UI? [rw]"
    },
    "name": {
      "type": "string",
      "description": "Short name describing member [rw]"
    },
    "description": {
      "type": "string",
      "description": "Long form description [rw]"
    },
    "online": {
      "type": "boolean",
      "description": "Member is online? (has requested an update recently) [ro]"
    },
    "lastOnline": {
      "type": "number",
      "description": "Time member was last determined to be online [ro]"
    },
    "lastOffline": {
      "type": "number",
      "description": "Time member was last determined to be offline [ro]"
    },
    "physicalAddress": {
      "type": "string",
      "description": "Latest physical address of member [ro]"
    },
    "physicalLocation": {
      "description": "Lat/lon of estimated (GeoIP-determined) location of physicalAddress (if available) [ro]"
    },
    "clientVersion": {
      "type": "string",
      "description": "Most recent client software version [ro]"
    },
    "protocolVersion": {
      "type": "number",
      "description": "Most recent client-reported ZeroTier protocol version [ro]"
    },
    "supportsCircuitTesting": {
      "type": "boolean",
      "description": "True if member supports circuit testing [ro]"
    },
    "supportsRulesEngine": {
      "type": "boolean",
      "description": "True if member supports the new (post-1.2) rules engine [ro]"
    },
    "offlineNotifyDelay": {
      "type": "number",
      "description": "Notify of offline after this many milliseconds [rw]"
    },
    "config": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "10-digit ZeroTier node ID [ro]"
        },
        "address": {
          "type": "string",
          "description": "10-digit ZeroTier node ID [ro]"
        },
        "nwid": {
          "type": "string",
          "description": "16-digit network ID [ro]"
        },
        "objtype": {
          "type": "string",
          "description": "Object type on controller (\"member\") [ro]"
        },
        "authorized": {
          "type": "boolean",
          "description": "True if authorized (only matters on private networks) [rw]"
        },
        "authHistory": {
          "type": "array",
          "description": "History of most recent authentications [ro]"
        },
        "capabilities": {
          "type": "array",
          "description": "Array of IDs of capabilities assigned to this member [rw]"
        },
        "tags": {
          "type": "array",
          "description": "Array of tuples of tag ID, tag value [rw]"
        },
        "creationTime": {
          "type": "number",
          "description": "Time member record was first created [ro]"
        },
        "identity": {
          "type": "string",
          "description": "ZeroTier public identity of member (address and public key) [ro]"
        },
        "ipAssignments": {
          "type": "array",
          "description": "Array of IP assignments published to member [rw]"
        },
        "lastAuthorizedTime": {
          "type": "number",
          "description": "Time member was last authorized on network [ro]"
        },
        "lastDeauthorizedTime": {
          "type": "number",
          "description": "Time member was last de-authorized on network [ro]"
        },
        "noAutoAssignIps": {
          "type": "boolean",
          "description": "If true do not auto-assign IPv4 or IPv6 addresses, overriding network settings [rw]"
        },
        "physicalAddr": {
          "type": "string",
          "description": "Last known physical address of member [ro]"
        },
        "revision": {
          "type": "number",
          "description": "Member record revision counter [ro]"
        }
      },
      "description": "Member configuration (for actual controller) [rw]"
    }
  }
}

Members

Get All Members of a Network
GET/api/network/{networkId}/member

Get all members of a network for which you have at least read access.

Example URI

GET /api/network/0000000000000000/member
URI Parameters
HideShow
networkId
string (required) Example: 0000000000000000

16-digit ZeroTier network ID

Response  200
HideShow
Headers
Content-Type: application/json
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array"
}

Generated by aglio on 28 May 2019