diff --git a/content/nomad/v0.11.x/content/api-docs/acl-policies.mdx b/content/nomad/v0.11.x/content/api-docs/acl-policies.mdx
new file mode 100644
index 0000000000..9611f95bf1
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/acl-policies.mdx
@@ -0,0 +1,168 @@
+---
+layout: api
+page_title: ACL Policies - HTTP API
+sidebar_title: ACL Policies
+description: The /acl/policy endpoints are used to configure and manage ACL policies.
+---
+
+# ACL Policies HTTP API
+
+The `/acl/policies` and `/acl/policy/` endpoints are used to manage ACL policies.
+For more details about ACLs, please see the [ACL Guide](https://learn.hashicorp.com/nomad?track=acls#operations-and-development).
+
+## List Policies
+
+This endpoint lists all ACL policies. This lists the policies that have been replicated
+to the region, and may lag behind the authoritative region.
+
+| Method | Path | Produces |
+| ------ | --------------- | ------------------ |
+| `GET` | `/acl/policies` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------- |
+| `YES` | `all` | `management` for all policies.
Output when given a non-management token will be limited to the policies on the token itself |
+
+### Parameters
+
+- `prefix` `(string: "")` - Specifies a string to filter ACL policies based on
+ a name prefix. This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/acl/policies
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/acl/policies?prefix=prod
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "Name": "foo",
+ "Description": "",
+ "CreateIndex": 12,
+ "ModifyIndex": 13
+ }
+]
+```
+
+## Create or Update Policy
+
+This endpoint creates or updates an ACL Policy. This request is always forwarded to the
+authoritative region.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | -------------- |
+| `POST` | `/acl/policy/:policy_name` | `(empty body)` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `Name` `(string: )` - Specifies the name of the policy.
+ Creates the policy if the name does not exist, otherwise updates the existing policy.
+
+- `Description` `(string: )` - Specifies a human readable description.
+
+- `Rules` `(string: )` - Specifies the Policy rules in HCL or JSON format.
+
+### Sample Payload
+
+```json
+{
+ "Name": "my-policy",
+ "Description": "This is a great policy",
+ "Rules": ""
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/acl/policy/my-policy
+```
+
+## Read Policy
+
+This endpoint reads an ACL policy with the given name. This queries the policy that have been
+replicated to the region, and may lag behind the authoritative region.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | ------------------ |
+| `GET` | `/acl/policy/:policy_name` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | ------------------------------------------- |
+| `YES` | `all` | `management` or token with access to policy |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/acl/policy/foo
+```
+
+### Sample Response
+
+```json
+{
+ "Name": "foo",
+ "Rules": "",
+ "Description": "",
+ "CreateIndex": 12,
+ "ModifyIndex": 13
+}
+```
+
+## Delete Policy
+
+This endpoint deletes the named ACL policy. This request is always forwarded to the
+authoritative region.
+
+| Method | Path | Produces |
+| -------- | -------------------------- | -------------- |
+| `DELETE` | `/acl/policy/:policy_name` | `(empty body)` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `policy_name` `(string: )` - Specifies the policy name to delete.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ https://localhost:4646/v1/acl/policy/foo
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/acl-tokens.mdx b/content/nomad/v0.11.x/content/api-docs/acl-tokens.mdx
new file mode 100644
index 0000000000..9cca68460b
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/acl-tokens.mdx
@@ -0,0 +1,344 @@
+---
+layout: api
+page_title: ACL Tokens - HTTP API
+sidebar_title: ACL Tokens
+description: The /acl/token/ endpoints are used to configure and manage ACL tokens.
+---
+
+# ACL Tokens HTTP API
+
+The `/acl/bootstrap`, `/acl/tokens`, and `/acl/token/` endpoints are used to manage ACL tokens.
+For more details about ACLs, please see the [ACL Guide](https://learn.hashicorp.com/nomad?track=acls#operations-and-development).
+
+## Bootstrap Token
+
+This endpoint is used to bootstrap the ACL system and provide the initial management token.
+This request is always forwarded to the authoritative region. It can only be invoked once
+until a [bootstrap reset](https://learn.hashicorp.com/nomad?track=acls#acls) is performed.
+
+| Method | Path | Produces |
+| ------ | ---------------- | ------------------ |
+| `POST` | `/acl/bootstrap` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/acl/bootstrap
+```
+
+### Sample Response
+
+```json
+{
+ "AccessorID": "b780e702-98ce-521f-2e5f-c6b87de05b24",
+ "SecretID": "3f4a0fcd-7c42-773c-25db-2d31ba0c05fe",
+ "Name": "Bootstrap Token",
+ "Type": "management",
+ "Policies": null,
+ "Global": true,
+ "CreateTime": "2017-08-23T22:47:14.695408057Z",
+ "CreateIndex": 7,
+ "ModifyIndex": 7
+}
+```
+
+## List Tokens
+
+This endpoint lists all ACL tokens. This lists the local tokens and the global
+tokens which have been replicated to the region, and may lag behind the authoritative region.
+
+| Method | Path | Produces |
+| ------ | ------------- | ------------------ |
+| `GET` | `/acl/tokens` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | ------------ |
+| `YES` | `all` | `management` |
+
+### Parameters
+
+- `prefix` `(string: "")` - Specifies a string to filter ACL tokens based on an
+ accessor ID prefix. Because the value is decoded to bytes, the prefix must
+ have an even number of hexadecimal characters (0-9a-f). This is specified as
+ a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/acl/tokens
+```
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/acl/tokens?prefix=3da2ed52
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "AccessorID": "b780e702-98ce-521f-2e5f-c6b87de05b24",
+ "Name": "Bootstrap Token",
+ "Type": "management",
+ "Policies": null,
+ "Global": true,
+ "CreateTime": "2017-08-23T22:47:14.695408057Z",
+ "CreateIndex": 7,
+ "ModifyIndex": 7
+ }
+]
+```
+
+## Create Token
+
+This endpoint creates an ACL Token. If the token is a global token, the request
+is forwarded to the authoritative region.
+
+| Method | Path | Produces |
+| ------ | ------------ | ------------------ |
+| `POST` | `/acl/token` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `Name` `(string: )` - Specifies the human readable name of the token.
+
+- `Type` `(string: )` - Specifies the type of token. Must be either `client` or `management`.
+
+- `Policies` `(array: )` - Must be null or blank for `management` type tokens, otherwise must specify at least one policy for `client` type tokens.
+
+- `Global` `(bool: )` - If true, indicates this token should be replicated globally to all regions. Otherwise, this token is created local to the target region.
+
+### Sample Payload
+
+```json
+{
+ "Name": "Readonly token",
+ "Type": "client",
+ "Policies": ["readonly"],
+ "Global": false
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/acl/token
+```
+
+### Sample Response
+
+```json
+{
+ "AccessorID": "aa534e09-6a07-0a45-2295-a7f77063d429",
+ "SecretID": "8176afd3-772d-0b71-8f85-7fa5d903e9d4",
+ "Name": "Readonly token",
+ "Type": "client",
+ "Policies": ["readonly"],
+ "Global": false,
+ "CreateTime": "2017-08-23T23:25:41.429154233Z",
+ "CreateIndex": 52,
+ "ModifyIndex": 52
+}
+```
+
+## Update Token
+
+This endpoint updates an existing ACL Token. If the token is a global token, the request
+is forwarded to the authoritative region. Note that a token cannot be switched from global
+to local or visa versa.
+
+| Method | Path | Produces |
+| ------ | ------------------------- | ------------------ |
+| `POST` | `/acl/token/:accessor_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `AccessorID` `(string: )` - Specifies the token (by accessor) that is being updated. Must match payload body and request path.
+
+- `Name` `(string: )` - Specifies the human readable name of the token.
+
+- `Type` `(string: )` - Specifies the type of token. Must be either `client` or `management`.
+
+- `Policies` `(array: )` - Must be null or blank for `management` type tokens, otherwise must specify at least one policy for `client` type tokens.
+
+### Sample Payload
+
+```json
+{
+ "AccessorID": "aa534e09-6a07-0a45-2295-a7f77063d429",
+ "Name": "Read-write token",
+ "Type": "client",
+ "Policies": ["readwrite"]
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/acl/token/aa534e09-6a07-0a45-2295-a7f77063d429
+```
+
+### Sample Response
+
+```json
+{
+ "AccessorID": "aa534e09-6a07-0a45-2295-a7f77063d429",
+ "SecretID": "8176afd3-772d-0b71-8f85-7fa5d903e9d4",
+ "Name": "Read-write token",
+ "Type": "client",
+ "Policies": ["readwrite"],
+ "Global": false,
+ "CreateTime": "2017-08-23T23:25:41.429154233Z",
+ "CreateIndex": 52,
+ "ModifyIndex": 64
+}
+```
+
+## Read Token
+
+This endpoint reads an ACL token with the given accessor. If the token is a global token
+which has been replicated to the region it may lag behind the authoritative region.
+
+| Method | Path | Produces |
+| ------ | ------------------------- | ------------------ |
+| `GET` | `/acl/token/:accessor_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | -------------------------------------------------- |
+| `YES` | `all` | `management` or a SecretID matching the AccessorID |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/acl/token/aa534e09-6a07-0a45-2295-a7f77063d429
+```
+
+### Sample Response
+
+```json
+{
+ "AccessorID": "aa534e09-6a07-0a45-2295-a7f77063d429",
+ "SecretID": "8176afd3-772d-0b71-8f85-7fa5d903e9d4",
+ "Name": "Read-write token",
+ "Type": "client",
+ "Policies": ["readwrite"],
+ "Global": false,
+ "CreateTime": "2017-08-23T23:25:41.429154233Z",
+ "CreateIndex": 52,
+ "ModifyIndex": 64
+}
+```
+
+## Read Self Token
+
+This endpoint reads the ACL token given by the passed SecretID. If the token is a global token
+which has been replicated to the region it may lag behind the authoritative region.
+
+| Method | Path | Produces |
+| ------ | ----------------- | ------------------ |
+| `GET` | `/acl/token/self` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | ------------------- |
+| `YES` | `all` | Any valid ACL token |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --header "X-Nomad-Token: 8176afd3-772d-0b71-8f85-7fa5d903e9d4" \
+ https://localhost:4646/v1/acl/token/self
+```
+
+### Sample Response
+
+```json
+{
+ "AccessorID": "aa534e09-6a07-0a45-2295-a7f77063d429",
+ "SecretID": "8176afd3-772d-0b71-8f85-7fa5d903e9d4",
+ "Name": "Read-write token",
+ "Type": "client",
+ "Policies": ["readwrite"],
+ "Global": false,
+ "CreateTime": "2017-08-23T23:25:41.429154233Z",
+ "CreateIndex": 52,
+ "ModifyIndex": 64
+}
+```
+
+## Delete Token
+
+This endpoint deletes the ACL token by accessor. This request is forwarded to the
+authoritative region for global tokens.
+
+| Method | Path | Produces |
+| -------- | ------------------------- | -------------- |
+| `DELETE` | `/acl/token/:accessor_id` | `(empty body)` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `accessor_id` `(string: )` - Specifies the ACL token accessor ID.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ https://localhost:4646/v1/acl/token/aa534e09-6a07-0a45-2295-a7f77063d429
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/agent.mdx b/content/nomad/v0.11.x/content/api-docs/agent.mdx
new file mode 100644
index 0000000000..0d46c58514
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/agent.mdx
@@ -0,0 +1,644 @@
+---
+layout: api
+page_title: Agent - HTTP API
+sidebar_title: Agent
+description: |-
+ The /agent endpoints interact with the local Nomad agent to interact with
+ members and servers.
+---
+
+# Agent HTTP API
+
+The `/agent` endpoints are used to interact with the local Nomad agent.
+
+## List Members
+
+This endpoint queries the agent for the known peers in the gossip pool. This
+endpoint is only applicable to servers. Due to the nature of gossip, this is
+eventually consistent.
+
+| Method | Path | Produces |
+| ------ | ---------------- | ------------------ |
+| `GET` | `/agent/members` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `node:read` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/agent/members
+```
+
+### Sample Response
+
+```json
+{
+ "ServerName": "bacon-mac",
+ "ServerRegion": "global",
+ "ServerDC": "dc1",
+ "Members": [
+ {
+ "Name": "bacon-mac.global",
+ "Addr": "127.0.0.1",
+ "Port": 4648,
+ "Tags": {
+ "mvn": "1",
+ "build": "0.5.5dev",
+ "port": "4647",
+ "bootstrap": "1",
+ "role": "nomad",
+ "region": "global",
+ "dc": "dc1",
+ "vsn": "1"
+ },
+ "Status": "alive",
+ "ProtocolMin": 1,
+ "ProtocolMax": 5,
+ "ProtocolCur": 2,
+ "DelegateMin": 2,
+ "DelegateMax": 4,
+ "DelegateCur": 4
+ }
+ ]
+}
+```
+
+## List Servers
+
+This endpoint lists the known server nodes. The `servers` endpoint is used to
+query an agent in client mode for its list of known servers. Client nodes
+register themselves with these server addresses so that they may dequeue work.
+The servers endpoint can be used to keep this configuration up to date if there
+are changes in the cluster.
+
+| Method | Path | Produces |
+| ------ | ---------------- | ------------------ |
+| `GET` | `/agent/servers` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `agent:read` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/agent/servers
+```
+
+### Sample Response
+
+```json
+["127.0.0.1:4647"]
+```
+
+## Update Servers
+
+This endpoint updates the list of known servers to the provided list. This
+**replaces** all previous server addresses with the new list.
+
+| Method | Path | Produces |
+| ------ | ---------------- | -------------- |
+| `POST` | `/agent/servers` | `(empty body)` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------- |
+| `NO` | `agent:write` |
+
+### Parameters
+
+- `address` `(string: )` - Specifies the list of addresses in the
+ format `ip:port`. This is specified as a query string!
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/agent/servers?address=1.2.3.4:4647&address=5.6.7.8:4647
+```
+
+## Query Self
+
+This endpoint queries the state of the target agent (self).
+
+| Method | Path | Produces |
+| ------ | ------------- | ------------------ |
+| `GET` | `/agent/self` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `agent:read` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/agent/self
+```
+
+### Sample Response
+
+```json
+{
+ "config": {
+ "Addresses": {
+ "HTTP": "127.0.0.1",
+ "RPC": "127.0.0.1",
+ "Serf": "127.0.0.1"
+ },
+ "AdvertiseAddrs": {
+ "HTTP": "127.0.0.1:4646",
+ "RPC": "127.0.0.1:4647",
+ "Serf": "127.0.0.1:4648"
+ },
+ "BindAddr": "127.0.0.1",
+ "Client": {
+ "AllocDir": "",
+ "ChrootEnv": {},
+ "ClientMaxPort": 14512,
+ "ClientMinPort": 14000,
+ "DisableRemoteExec": false,
+ "Enabled": true,
+ "GCDiskUsageThreshold": 99,
+ "GCInodeUsageThreshold": 99,
+ "GCInterval": 600000000000,
+ "MaxKillTimeout": "30s",
+ "Meta": {},
+ "NetworkInterface": "lo0",
+ "NetworkSpeed": 0,
+ "NodeClass": "",
+ "Options": {
+ "driver.docker.volumes": "true"
+ },
+ "Reserved": {
+ "CPU": 0,
+ "DiskMB": 0,
+ "MemoryMB": 0,
+ "ParsedReservedPorts": null,
+ "ReservedPorts": ""
+ },
+ "Servers": null,
+ "StateDir": ""
+ },
+ "Consul": {
+ "Addr": "",
+ "Auth": "",
+ "AutoAdvertise": true,
+ "CAFile": "",
+ "CertFile": "",
+ "ChecksUseAdvertise": false,
+ "ClientAutoJoin": true,
+ "ClientServiceName": "nomad-client",
+ "EnableSSL": false,
+ "KeyFile": "",
+ "ServerAutoJoin": true,
+ "ServerServiceName": "nomad",
+ "Timeout": 5000000000,
+ "Token": "",
+ "VerifySSL": false
+ },
+ "DataDir": "",
+ "Datacenter": "dc1",
+ "DevMode": true,
+ "DisableAnonymousSignature": true,
+ "DisableUpdateCheck": false,
+ "EnableDebug": true,
+ "EnableSyslog": false,
+ "Files": null,
+ "HTTPAPIResponseHeaders": {},
+ "LeaveOnInt": false,
+ "LeaveOnTerm": false,
+ "LogLevel": "DEBUG",
+ "NodeName": "",
+ "Ports": {
+ "HTTP": 4646,
+ "RPC": 4647,
+ "Serf": 4648
+ },
+ "Region": "global",
+ "Revision": "f551dcb83e3ac144c9dbb90583b6e82d234662e9",
+ "Server": {
+ "BootstrapExpect": 0,
+ "DataDir": "",
+ "Enabled": true,
+ "EnabledSchedulers": null,
+ "HeartbeatGrace": "",
+ "NodeGCThreshold": "",
+ "NumSchedulers": 0,
+ "ProtocolVersion": 0,
+ "RejoinAfterLeave": false,
+ "RetryInterval": "30s",
+ "RetryJoin": [],
+ "RetryMaxAttempts": 0,
+ "StartJoin": []
+ },
+ "SyslogFacility": "LOCAL0",
+ "TLSConfig": {
+ "CAFile": "",
+ "CertFile": "",
+ "EnableHTTP": false,
+ "EnableRPC": false,
+ "KeyFile": "",
+ "VerifyServerHostname": false
+ },
+ "Telemetry": {
+ "CirconusAPIApp": "",
+ "CirconusAPIToken": "",
+ "CirconusAPIURL": "",
+ "CirconusBrokerID": "",
+ "CirconusBrokerSelectTag": "",
+ "CirconusCheckDisplayName": "",
+ "CirconusCheckForceMetricActivation": "",
+ "CirconusCheckID": "",
+ "CirconusCheckInstanceID": "",
+ "CirconusCheckSearchTag": "",
+ "CirconusCheckSubmissionURL": "",
+ "CirconusCheckTags": "",
+ "CirconusSubmissionInterval": "",
+ "CollectionInterval": "1s",
+ "DataDogAddr": "",
+ "DataDogTags": [],
+ "DisableHostname": false,
+ "PublishAllocationMetrics": false,
+ "PublishNodeMetrics": false,
+ "StatsdAddr": "",
+ "StatsiteAddr": "",
+ "UseNodeName": false
+ },
+ "Vault": {
+ "Addr": "https://vault.service.consul:8200",
+ "AllowUnauthenticated": true,
+ "ConnectionRetryIntv": 30000000000,
+ "Enabled": null,
+ "Role": "",
+ "TLSCaFile": "",
+ "TLSCaPath": "",
+ "TLSCertFile": "",
+ "TLSKeyFile": "",
+ "TLSServerName": "",
+ "TLSSkipVerify": null,
+ "TaskTokenTTL": "",
+ "Token": "root"
+ },
+ "Version": "0.5.5",
+ "VersionPrerelease": "dev"
+ },
+ "member": {
+ "Addr": "127.0.0.1",
+ "DelegateCur": 4,
+ "DelegateMax": 4,
+ "DelegateMin": 2,
+ "Name": "bacon-mac.global",
+ "Port": 4648,
+ "ProtocolCur": 2,
+ "ProtocolMax": 5,
+ "ProtocolMin": 1,
+ "Status": "alive",
+ "Tags": {
+ "role": "nomad",
+ "region": "global",
+ "dc": "dc1",
+ "vsn": "1",
+ "mvn": "1",
+ "build": "0.5.5dev",
+ "port": "4647",
+ "bootstrap": "1"
+ }
+ },
+ "stats": {
+ "runtime": {
+ "cpu_count": "8",
+ "kernel.name": "darwin",
+ "arch": "amd64",
+ "version": "go1.8",
+ "max_procs": "7",
+ "goroutines": "79"
+ },
+ "nomad": {
+ "server": "true",
+ "leader": "true",
+ "leader_addr": "127.0.0.1:4647",
+ "bootstrap": "false",
+ "known_regions": "1"
+ },
+ "raft": {
+ "num_peers": "0",
+ "fsm_pending": "0",
+ "last_snapshot_index": "0",
+ "last_log_term": "2",
+ "commit_index": "144",
+ "term": "2",
+ "last_log_index": "144",
+ "protocol_version_max": "3",
+ "snapshot_version_max": "1",
+ "latest_configuration_index": "1",
+ "latest_configuration": "[{Suffrage:Voter ID:127.0.0.1:4647 Address:127.0.0.1:4647}]",
+ "last_contact": "never",
+ "applied_index": "144",
+ "protocol_version": "1",
+ "protocol_version_min": "0",
+ "snapshot_version_min": "0",
+ "state": "Leader",
+ "last_snapshot_term": "0"
+ },
+ "client": {
+ "heartbeat_ttl": "17.79568937s",
+ "node_id": "fb2170a8-257d-3c64-b14d-bc06cc94e34c",
+ "known_servers": "127.0.0.1:4647",
+ "num_allocations": "0",
+ "last_heartbeat": "10.107423052s"
+ },
+ "serf": {
+ "event_time": "1",
+ "event_queue": "0",
+ "encrypted": "false",
+ "member_time": "1",
+ "query_time": "1",
+ "intent_queue": "0",
+ "query_queue": "0",
+ "members": "1",
+ "failed": "0",
+ "left": "0",
+ "health_score": "0"
+ }
+ }
+}
+```
+
+## Join Agent
+
+This endpoint introduces a new member to the gossip pool. This endpoint is only
+eligible for servers.
+
+| Method | Path | Produces |
+| ------ | ------------- | ------------------ |
+| `POST` | `/agent/join` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Parameters
+
+- `address` `(string: )` - Specifies the address to join in the
+ `ip:port` format. This is provided as a query parameter and may be specified
+ multiple times to join multiple servers.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/agent/join?address=1.2.3.4&address=5.6.7.8
+```
+
+### Sample Response
+
+```json
+{
+ "error": "",
+ "num_joined": 2
+}
+```
+
+## Force Leave Agent
+
+This endpoint forces a member of the gossip pool from the `"failed"` state to
+the `"left"` state. This allows the consensus protocol to remove the peer and
+stop attempting replication. This is only applicable for servers.
+
+| Method | Path | Produces |
+| ------ | -------------------- | ------------------ |
+| `POST` | `/agent/force-leave` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------- |
+| `NO` | `agent:write` |
+
+### Parameters
+
+- `node` `(string: )` - Specifies the name of the node to force leave.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/agent/force-leave?node=client-ab2e23dc
+```
+
+## Health
+
+This endpoint returns whether or not the agent is healthy. When using Consul it
+is the endpoint Nomad will register for its own health checks.
+
+When the agent is unhealthy 500 will be returned along with JSON response
+containing an error message.
+
+| Method | Path | Produces |
+| ------ | --------------- | ------------------ |
+| `GET` | `/agent/health` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/agent/health
+```
+
+### Sample Response
+
+```json
+{
+ "client": {
+ "message": "ok",
+ "ok": true
+ },
+ "server": {
+ "message": "ok",
+ "ok": true
+ }
+}
+```
+
+## Stream Logs
+
+This endpoint streams logs from the local agent until the connection is closed
+
+| Method | Path | Produces |
+| ------ | ---------------- | ------------------ |
+| `GET` | `/agent/monitor` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `agent:read` |
+
+### Parameters
+
+- `log_level` `(string: "info")` - Specifies a text string containing a log level
+ to filter on, such as `info`. Possible values include `trace`, `debug`,
+ `info`, `warn`, `error`
+
+- `log_json` `(bool: false)` - Specifies if the log format for streamed logs
+ should be JSON.
+
+- `node_id` `(string: "a57b2adb-1a30-2dda-8df0-25abb0881952")` - Specifies a text
+ string containing a node-id to target for streaming.
+
+- `server_id` `(string: "server1.global")` - Specifies a text
+ string containing a server name or "leader" to target a specific remote server
+ or leader for streaming.
+
+- `plain` `(bool: false)` - Specifies if the response should be JSON or
+ plaintext
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/agent/monitor?log_level=debug&server_id=leader
+
+$ curl \
+ https://localhost:4646/v1/agent/monitor?log_level=debug&node_id=a57b2adb-1a30-2dda-8df0-25abb0881952
+```
+
+### Sample Response
+
+```json
+{
+ "Offset": 0,
+ "Data": "NTMxOTMyCjUzMTkzMwo1MzE5MzQKNTMx..."
+ "FileEvent": "log"
+}
+```
+
+#### Field Reference
+
+The return value is a stream of frames. These frames contain the following
+fields:
+
+- `Data` - A base64 encoding of the bytes being streamed.
+
+- `FileEvent` - An event that could cause a change in the streams position. The
+ possible value for this endpoint is "log".
+
+- `Offset` - Offset is the offset into the stream.
+
+## Agent Runtime Profiles
+
+This endpoint is the equivalent of Go's /debug/pprof endpoint but is protected
+by ACLs and supports remote forwarding to a client node or server. See the
+[Golang documentation](https://golang.org/pkg/runtime/pprof/#Profile) for a list of available profiles.
+
+| Method | Path | Produces |
+| ------ | ------------------------------ | -------------------------- |
+| `GET` | `/agent/pprof/cmdline` | `text/plain` |
+| `GET` | `/agent/pprof/profile` | `application/octet-stream` |
+| `GET` | `/agent/pprof/trace` | `application/octet-stream` |
+| `GET` | `/agent/pprof/` | `application/octet-stream` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------- |
+| `NO` | `agent:write` |
+
+### Default Behavior
+
+This endpoint is enabled whenever ACLs are enabled. Due to the potentially
+sensitive nature of data contained in profiles, as well as their significant
+performance impact, the agent/pprof endpoint is protected by a high level ACL:
+`agent:write`. For these reasons its recommended to leave [`enable_debug`](/docs/configuration#enable_debug)
+unset and only use the ACL-protected endpoints.
+
+The following table explains when each endpoint is available:
+
+| Endpoint | `enable_debug` | ACLs | **Available?** |
+| --------------- | -------------- | ---- | -------------- |
+| /v1/agent/pprof | unset | n/a | no |
+| /v1/agent/pprof | `true` | n/a | yes |
+| /v1/agent/pprof | `false` | n/a | no |
+| /v1/agent/pprof | unset | off | no |
+| /v1/agent/pprof | unset | on | **yes** |
+| /v1/agent/pprof | `true` | off | yes |
+| /v1/agent/pprof | `false` | on | **yes** |
+
+### Parameters
+
+- `node_id` `(string: "a57b2adb-1a30-2dda-8df0-25abb0881952")` - Specifies a text
+ string containing a Node ID to target for profiling.
+
+- `server_id` `(string: "server1.global")` - Specifies a text
+ string containing a Server ID, name, or `leader` to target a specific remote
+ server or leader for profiling.
+
+- `seconds` `(int: 3)` - Specifies the amount of time to run a profile or trace
+ request for.
+
+- `debug` `(int: 1)` - Specifies if a given pprof profile should be returned as
+ human readable plain text instead of the pprof binary format. Defaults to 0,
+ setting to 1 enables human readable plain text.
+
+### Sample Request
+
+```shell-session
+$ curl -O -J \
+ --header "X-Nomad-Token: 8176afd3-772d-0b71-8f85-7fa5d903e9d4" \
+ https://localhost:4646/v1/agent/pprof/goroutine?server_id=leader
+
+$ go tool pprof goroutine
+
+$ curl -O -J \
+ --header "X-Nomad-Token: 8176afd3-772d-0b71-8f85-7fa5d903e9d4" \
+ https://localhost:4646/v1/agent/profile?seconds=5&node_id=a57b2adb-1a30-2dda-8df0-25abb0881952
+
+$ go tool pprof profile
+
+$ curl -O -J \
+ --header "X-Nomad-Token: 8176afd3-772d-0b71-8f85-7fa5d903e9d4" \
+ https://localhost:4646/v1/agent/trace?&seconds=5&server_id=server1.global
+
+go tool trace trace
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/allocations.mdx b/content/nomad/v0.11.x/content/api-docs/allocations.mdx
new file mode 100644
index 0000000000..a128d60d9d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/allocations.mdx
@@ -0,0 +1,690 @@
+---
+layout: api
+page_title: Allocations - HTTP API
+sidebar_title: Allocations
+description: The /allocation endpoints are used to query for and interact with allocations.
+---
+
+# Allocations HTTP API
+
+The `/allocation` endpoints are used to query for and interact with allocations.
+
+## List Allocations
+
+This endpoint lists all allocations.
+
+| Method | Path | Produces |
+| ------ | ----------------- | ------------------ |
+| `GET` | `/v1/allocations` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `prefix` `(string: "")`- Specifies a string to filter allocations based on an
+ ID prefix. Because the value is decoded to bytes, the prefix must have an
+ even number of hexadecimal characters (0-9a-f). This is specified as a query
+ string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/allocations
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/allocations?prefix=a8198d79
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "a8198d79-cfdb-6593-a999-1e9adabcba2e",
+ "EvalID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Name": "example.cache[0]",
+ "NodeID": "fb2170a8-257d-3c64-b14d-bc06cc94e34c",
+ "PreviousAllocation": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "NextAllocation": "cd13d9b9-4f97-7184-c88b-7b451981616b",
+ "RescheduleTracker": {
+ "Events": [
+ {
+ "PrevAllocID": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "PrevNodeID": "9230cd3b-3bda-9a3f-82f9-b2ea8dedb20e",
+ "RescheduleTime": 1517434161192946200,
+ "Delay": "5000000000"
+ }
+ ]
+ },
+ "JobID": "example",
+ "TaskGroup": "cache",
+ "DesiredStatus": "run",
+ "DesiredDescription": "",
+ "ClientStatus": "running",
+ "ClientDescription": "",
+ "TaskStates": {
+ "redis": {
+ "State": "running",
+ "FinishedAt": "0001-01-01T00:00:00Z",
+ "LastRestart": "0001-01-01T00:00:00Z",
+ "Restarts": 0,
+ "StartedAt": "2017-07-25T23:36:26.106431265Z",
+ "Failed": false,
+ "Events": [
+ {
+ "Type": "Received",
+ "Time": 1495747371795703800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Driver",
+ "Time": 1495747371798867200,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": "Downloading image redis:3.2"
+ },
+ {
+ "Type": "Started",
+ "Time": 1495747379525667800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ }
+ ]
+ }
+ },
+ "CreateIndex": 54,
+ "ModifyIndex": 57,
+ "CreateTime": 1495747371794276400,
+ "ModifyTime": 1495747371794276400
+ }
+]
+```
+
+## Read Allocation
+
+This endpoint reads information about a specific allocation.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | ------------------ |
+| `GET` | `/v1/allocation/:alloc_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:alloc_id` `(string: )`- Specifies the UUID of the allocation. This
+ must be the full UUID, not the short 8-character one. This is specified as
+ part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/allocation/5456bd7a-9fc0-c0dd-6131-cbee77f57577
+```
+
+### Sample Response
+
+```json
+{
+ "ID": "a8198d79-cfdb-6593-a999-1e9adabcba2e",
+ "EvalID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Name": "example.cache[0]",
+ "NodeID": "fb2170a8-257d-3c64-b14d-bc06cc94e34c",
+ "PreviousAllocation": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "NextAllocation": "cd13d9b9-4f97-7184-c88b-7b451981616b",
+ "RescheduleTracker": {
+ "Events": [
+ {
+ "PrevAllocID": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "PrevNodeID": "9230cd3b-3bda-9a3f-82f9-b2ea8dedb20e",
+ "RescheduleTime": 1517434161192946200,
+ "Delay": "5000000000"
+ }
+ ]
+ },
+ "JobID": "example",
+ "Job": {
+ "Region": "global",
+ "ID": "example",
+ "ParentID": "",
+ "Name": "example",
+ "Type": "service",
+ "Priority": 50,
+ "AllAtOnce": false,
+ "Datacenters": ["dc1"],
+ "Constraints": null,
+ "Affinities": null,
+ "TaskGroups": [
+ {
+ "Name": "cache",
+ "Count": 1,
+ "Constraints": null,
+ "Affinities": null,
+ "RestartPolicy": {
+ "Attempts": 10,
+ "Interval": 300000000000,
+ "Delay": 25000000000,
+ "Mode": "delay"
+ },
+ "Spreads": null,
+ "Tasks": [
+ {
+ "Name": "redis",
+ "Driver": "docker",
+ "User": "",
+ "Config": {
+ "port_map": [
+ {
+ "db": 6379
+ }
+ ],
+ "image": "redis:3.2"
+ },
+ "Env": null,
+ "Services": [
+ {
+ "Name": "redis-cache",
+ "PortLabel": "db",
+ "Tags": ["global", "cache"],
+ "Checks": [
+ {
+ "Name": "alive",
+ "Type": "tcp",
+ "Command": "",
+ "Args": null,
+ "Path": "",
+ "Protocol": "",
+ "PortLabel": "",
+ "Interval": 10000000000,
+ "Timeout": 2000000000,
+ "InitialStatus": ""
+ }
+ ]
+ }
+ ],
+ "Vault": null,
+ "Templates": null,
+ "Constraints": null,
+ "Affinities": null,
+ "Resources": {
+ "CPU": 500,
+ "MemoryMB": 10,
+ "DiskMB": 0,
+ "Networks": [
+ {
+ "Device": "",
+ "CIDR": "",
+ "IP": "",
+ "MBits": 10,
+ "ReservedPorts": null,
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 0
+ }
+ ]
+ }
+ ]
+ },
+ "Spreads": null,
+ "DispatchPayload": null,
+ "Meta": null,
+ "KillTimeout": 5000000000,
+ "LogConfig": {
+ "MaxFiles": 10,
+ "MaxFileSizeMB": 10
+ },
+ "Artifacts": null,
+ "Leader": false
+ }
+ ],
+ "EphemeralDisk": {
+ "Sticky": false,
+ "SizeMB": 300,
+ "Migrate": false
+ },
+ "Meta": null
+ }
+ ],
+ "Update": {
+ "Stagger": 10000000000,
+ "MaxParallel": 0
+ },
+ "Periodic": null,
+ "ParameterizedJob": null,
+ "Payload": null,
+ "Spreads": null,
+ "Meta": null,
+ "VaultToken": "",
+ "Status": "pending",
+ "StatusDescription": "",
+ "CreateIndex": 52,
+ "ModifyIndex": 52,
+ "JobModifyIndex": 52
+ },
+ "TaskGroup": "cache",
+ "Resources": {
+ "CPU": 500,
+ "MemoryMB": 10,
+ "DiskMB": 300,
+ "Networks": [
+ {
+ "Device": "lo0",
+ "CIDR": "",
+ "IP": "127.0.0.1",
+ "MBits": 10,
+ "ReservedPorts": null,
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 23116
+ }
+ ]
+ }
+ ]
+ },
+ "SharedResources": {
+ "CPU": 0,
+ "MemoryMB": 0,
+ "DiskMB": 300,
+ "Networks": null
+ },
+ "TaskResources": {
+ "redis": {
+ "CPU": 500,
+ "MemoryMB": 10,
+ "DiskMB": 0,
+ "Networks": [
+ {
+ "Device": "lo0",
+ "CIDR": "",
+ "IP": "127.0.0.1",
+ "MBits": 10,
+ "ReservedPorts": null,
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 23116
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "Metrics": {
+ "NodesEvaluated": 1,
+ "NodesFiltered": 0,
+ "NodesAvailable": {
+ "dc1": 1
+ },
+ "ClassFiltered": null,
+ "ConstraintFiltered": null,
+ "NodesExhausted": 0,
+ "ClassExhausted": null,
+ "DimensionExhausted": null,
+ "Scores": {
+ "fb2170a8-257d-3c64-b14d-bc06cc94e34c.binpack": 0.6205732522109244
+ },
+ "AllocationTime": 31729,
+ "CoalescedFailures": 0
+ },
+ "DesiredStatus": "run",
+ "DesiredDescription": "",
+ "ClientStatus": "running",
+ "ClientDescription": "",
+ "TaskStates": {
+ "redis": {
+ "State": "running",
+ "Failed": false,
+ "FinishedAt": "0001-01-01T00:00:00Z",
+ "LastRestart": "0001-01-01T00:00:00Z",
+ "Restarts": 0,
+ "StartedAt": "2017-07-25T23:36:26.106431265Z",
+ "Events": [
+ {
+ "Type": "Received",
+ "Time": 1495747371795703800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Driver",
+ "Time": 1495747371798867200,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": "Downloading image redis:3.2"
+ },
+ {
+ "Type": "Started",
+ "Time": 1495747379525667800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ }
+ ]
+ }
+ },
+ "PreviousAllocation": "",
+ "CreateIndex": 54,
+ "ModifyIndex": 57,
+ "AllocModifyIndex": 54,
+ "CreateTime": 1495747371794276400,
+ "ModifyTime": 1495747371794276400
+}
+```
+
+#### Field Reference
+
+- `TaskStates` - A map of tasks to their current state and the latest events
+ that have effected the state. `TaskState` objects contain the following
+ fields:
+
+ - `State`: The task's current state. It can have one of the following
+ values:
+
+ - `TaskStatePending` - The task is waiting to be run, either for the first
+ time or due to a restart.
+
+ - `TaskStateRunning` - The task is currently running.
+
+ - `TaskStateDead` - The task is dead and will not run again.
+
+ - `StartedAt`: The time the task was last started at. Can be updated through
+ restarts.
+
+ - `FinishedAt`: The time the task was finished at.
+
+ - `LastRestart`: The last time the task was restarted.
+
+ - `Restarts`: The number of times the task has restarted.
+
+ - `Events` - An event contains metadata about the event. The latest 10 events
+ are stored per task. Each event is timestamped (Unix nanoseconds) and has one
+ of the following types:
+
+ - `Setup Failure` - The task could not be started because there was a
+ failure setting up the task prior to it running.
+
+ - `Driver Failure` - The task could not be started due to a failure in the
+ driver.
+
+ - `Started` - The task was started; either for the first time or due to a
+ restart.
+
+ - `Terminated` - The task was started and exited.
+
+ - `Killing` - The task has been sent the kill signal.
+
+ - `Killed` - The task was killed by a user.
+
+ - `Received` - The task has been pulled by the client at the given timestamp.
+
+ - `Failed Validation` - The task was invalid and as such it didn't run.
+
+ - `Restarting` - The task terminated and is being restarted.
+
+ - `Not Restarting` - the task has failed and is not being restarted because
+ it has exceeded its restart policy.
+
+ - `Downloading Artifacts` - The task is downloading the artifact(s)
+ - specified in the task.
+
+ - `Failed Artifact Download` - Artifact(s) specified in the task failed to
+ download.
+
+ - `Restart Signaled` - The task was singled to be restarted.
+
+ - `Signaling` - The task was is being sent a signal.
+
+ - `Sibling Task Failed` - A task in the same task group failed.
+
+ - `Leader Task Dead` - The group's leader task is dead.
+
+ - `Driver` - A message from the driver.
+
+ - `Task Setup` - Task setup messages.
+
+ - `Building Task Directory` - Task is building its file system.
+
+ Depending on the type the event will have applicable annotations.
+
+## Stop Allocation
+
+This endpoint stops and reschedules a specific allocation.
+
+| Method | Path | Produces |
+| -------------- | ------------------------------- | ------------------ |
+| `POST` / `PUT` | `/v1/allocation/:alloc_id/stop` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------- |
+| `NO` | `namespace:alloc-lifecycle` |
+
+### Parameters
+
+- `:alloc_id` `(string: )`- Specifies the UUID of the allocation. This
+ must be the full UUID, not the short 8-character one. This is specified as
+ part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl -X POST \
+ https://localhost:4646/v1/allocation/5456bd7a-9fc0-c0dd-6131-cbee77f57577/stop
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Index": 54
+}
+```
+
+## Signal Allocation
+
+This endpoint sends a signal to an allocation or task.
+
+| Method | Path | Produces |
+| -------------- | ---------------------------------------- | ------------------ |
+| `POST` / `PUT` | `/v1/client/allocation/:alloc_id/signal` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------- |
+| `NO` | `namespace:alloc-lifecycle` |
+
+### Parameters
+
+- `:alloc_id` `(string: )`- Specifies the UUID of the allocation. This
+ must be the full UUID, not the short 8-character one. This is specified as
+ part of the path.
+
+### Sample Payload
+
+```json
+{
+ "Signal": "SIGUSR1",
+ "Task": "FOO"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl -X POST -d '{"Signal": "SIGUSR1" }' \
+ https://localhost:4646/v1/client/allocation/5456bd7a-9fc0-c0dd-6131-cbee77f57577/signal
+```
+
+### Sample Response
+
+```json
+{}
+```
+
+## Restart Allocation
+
+This endpoint restarts an allocation or task in-place.
+
+| Method | Path | Produces |
+| -------------- | ----------------------------------------- | ------------------ |
+| `POST` / `PUT` | `/v1/client/allocation/:alloc_id/restart` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------- |
+| `NO` | `namespace:alloc-lifecycle` |
+
+### Parameters
+
+- `:alloc_id` `(string: )`- Specifies the UUID of the allocation. This
+ must be the full UUID, not the short 8-character one. This is specified as
+ part of the path.
+
+### Sample Payload
+
+```json
+{
+ "Task": "FOO"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl -X POST -d '{"Task": "redis" }' \
+ https://localhost:4646/v1/client/allocation/5456bd7a-9fc0-c0dd-6131-cbee77f57577/restart
+```
+
+### Sample Response
+
+```json
+{}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/client.mdx b/content/nomad/v0.11.x/content/api-docs/client.mdx
new file mode 100644
index 0000000000..e90601b6ca
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/client.mdx
@@ -0,0 +1,618 @@
+---
+layout: api
+page_title: Client - HTTP API
+sidebar_title: Client
+description: |-
+ The /client endpoints are used to access client statistics and inspect
+ allocations running on a particular client.
+---
+
+# Client HTTP API
+
+The `/client` endpoints are used to interact with the Nomad clients.
+
+Since Nomad 0.8.0, both a client and server can handle client endpoints. This is
+particularly useful for when a direct connection to a client is not possible due
+to the network configuration. For high volume access to the client endpoints,
+particularly endpoints streaming file contents, direct access to the node should
+be preferred as it avoids adding additional load to the servers.
+
+When accessing the endpoints via the server, if the desired node is ambiguous
+based on the URL, an additional `?node_id` query parameter must be provided to
+disambiguate.
+
+## Read Stats
+
+This endpoint queries the actual resources consumed on a node. The API endpoint
+is hosted by the Nomad client and requests have to be made to the nomad client
+whose resource usage metrics are of interest.
+
+| Method | Path | Produces |
+| ------ | --------------- | ------------------ |
+| `GET` | `/client/stats` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `node:read` |
+
+### Parameters
+
+- `node_id` `(string: )` - Specifies the node to query. This is
+ required when the endpoint is being accessed via a server. This is specified as
+ part of the URL. Note, this must be the _full_ node ID, not the short
+ 8-character one. This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/stats
+```
+
+### Sample Response
+
+```json
+{
+ "AllocDirStats": {
+ "Available": 142943150080,
+ "Device": "",
+ "InodesUsedPercent": 0.05312946180421879,
+ "Mountpoint": "",
+ "Size": 249783500800,
+ "Used": 106578206720,
+ "UsedPercent": 42.668233241448746
+ },
+ "CPU": [
+ {
+ "CPU": "cpu0",
+ "Idle": 80,
+ "System": 11,
+ "Total": 20,
+ "User": 9
+ },
+ {
+ "CPU": "cpu1",
+ "Idle": 99,
+ "System": 0,
+ "Total": 1,
+ "User": 1
+ },
+ {
+ "CPU": "cpu2",
+ "Idle": 89,
+ "System": 7.000000000000001,
+ "Total": 11,
+ "User": 4
+ },
+ {
+ "CPU": "cpu3",
+ "Idle": 100,
+ "System": 0,
+ "Total": 0,
+ "User": 0
+ },
+ {
+ "CPU": "cpu4",
+ "Idle": 92.92929292929293,
+ "System": 4.040404040404041,
+ "Total": 7.07070707070707,
+ "User": 3.0303030303030303
+ },
+ {
+ "CPU": "cpu5",
+ "Idle": 99,
+ "System": 1,
+ "Total": 1,
+ "User": 0
+ },
+ {
+ "CPU": "cpu6",
+ "Idle": 92.07920792079209,
+ "System": 4.9504950495049505,
+ "Total": 7.920792079207921,
+ "User": 2.9702970297029703
+ },
+ {
+ "CPU": "cpu7",
+ "Idle": 99,
+ "System": 0,
+ "Total": 1,
+ "User": 1
+ }
+ ],
+ "CPUTicksConsumed": 1126.8044804480448,
+ "DiskStats": [
+ {
+ "Available": 142943150080,
+ "Device": "/dev/disk1",
+ "InodesUsedPercent": 0.05312946180421879,
+ "Mountpoint": "/",
+ "Size": 249783500800,
+ "Used": 106578206720,
+ "UsedPercent": 42.668233241448746
+ }
+ ],
+ "Memory": {
+ "Available": 6232244224,
+ "Free": 470618112,
+ "Total": 17179869184,
+ "Used": 10947624960
+ },
+ "Timestamp": 1495743032992498200,
+ "Uptime": 193520
+}
+```
+
+## Read Allocation Statistics
+
+The client `allocation` endpoint is used to query the actual resources consumed
+by an allocation.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------ | ------------------ |
+| `GET` | `/client/allocation/:alloc_id/stats` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `NO` | `namespace:read-job` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/allocation/5fc98185-17ff-26bc-a802-0c74fa471c99/stats
+```
+
+### Sample Response
+
+```json
+{
+ "ResourceUsage": {
+ "CpuStats": {
+ "Measured": ["Throttled Periods", "Throttled Time", "Percent"],
+ "Percent": 0.14159538847117795,
+ "SystemMode": 0,
+ "ThrottledPeriods": 0,
+ "ThrottledTime": 0,
+ "TotalTicks": 3.256693934837093,
+ "UserMode": 0
+ },
+ "MemoryStats": {
+ "Cache": 1744896,
+ "KernelMaxUsage": 0,
+ "KernelUsage": 0,
+ "MaxUsage": 4710400,
+ "Measured": ["RSS", "Cache", "Swap", "Max Usage"],
+ "RSS": 1486848,
+ "Swap": 0
+ }
+ },
+ "Tasks": {
+ "redis": {
+ "Pids": null,
+ "ResourceUsage": {
+ "CpuStats": {
+ "Measured": ["Throttled Periods", "Throttled Time", "Percent"],
+ "Percent": 0.14159538847117795,
+ "SystemMode": 0,
+ "ThrottledPeriods": 0,
+ "ThrottledTime": 0,
+ "TotalTicks": 3.256693934837093,
+ "UserMode": 0
+ },
+ "MemoryStats": {
+ "Cache": 1744896,
+ "KernelMaxUsage": 0,
+ "KernelUsage": 0,
+ "MaxUsage": 4710400,
+ "Measured": ["RSS", "Cache", "Swap", "Max Usage"],
+ "RSS": 1486848,
+ "Swap": 0
+ }
+ },
+ "Timestamp": 1495743243970720000
+ }
+ },
+ "Timestamp": 1495743243970720000
+}
+```
+
+## Read File
+
+This endpoint reads the contents of a file in an allocation directory.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | ------------ |
+| `GET` | `/client/fs/cat/:alloc_id` | `text/plain` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------------- |
+| `NO` | `namespace:read-fs` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+- `path` `(string: "/")` - Specifies the path of the file to read, relative to
+ the root of the allocation directory.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/fs/cat/5fc98185-17ff-26bc-a802-0c74fa471c99
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/fs/cat/5fc98185-17ff-26bc-a802-0c74fa471c99?path=alloc/file.json
+```
+
+### Sample Response
+
+```text
+(whatever was in the file...)
+```
+
+## Read File at Offset
+
+This endpoint reads the contents of a file in an allocation directory at a
+particular offset and limit.
+
+| Method | Path | Produces |
+| ------ | ----------------------------- | ------------ |
+| `GET` | `/client/fs/readat/:alloc_id` | `text/plain` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------------- |
+| `NO` | `namespace:read-fs` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+- `path` `(string: "/")` - Specifies the path of the file to read, relative to
+ the root of the allocation directory.
+
+- `offset` `(int: )` - Specifies the byte offset from where content
+ will be read.
+
+- `limit` `(int: )` - Specifies the number of bytes to read from the
+ offset.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/fs/readat/5fc98185-17ff-26bc-a802-0c74fa471c99?path=/alloc/foo&offset=1323&limit=19303
+```
+
+### Sample Response
+
+```text
+(whatever was in the file, starting from offset, up to limit bytes...)
+```
+
+## Stream File
+
+This endpoint streams the contents of a file in an allocation directory.
+
+| Method | Path | Produces |
+| ------ | ----------------------------- | ------------ |
+| `GET` | `/client/fs/stream/:alloc_id` | `text/plain` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------------- |
+| `NO` | `namespace:read-fs` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+- `path` `(string: "/")` - Specifies the path of the file to read, relative to
+ the root of the allocation directory.
+
+- `follow` `(bool: true)`- Specifies whether to tail the file.
+
+- `offset` `(int: )` - Specifies the byte offset from where content
+ will be read.
+
+- `origin` `(string: "start|end")` - Applies the relative offset to either the
+ start or end of the file.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/fs/stream/5fc98185-17ff-26bc-a802-0c74fa471c99?path=/alloc/logs/redis.log
+```
+
+### Sample Response
+
+```json
+({
+ "File": "alloc/logs/redis.log",
+ "Offset": 3604480,
+ "Data": "NTMxOTMyCjUzMTkzMwo1MzE5MzQKNTMx..."
+},
+{
+ "File": "alloc/logs/redis.log",
+ "FileEvent": "file deleted"
+})
+```
+
+#### Field Reference
+
+The return value is a stream of frames. These frames contain the following
+fields:
+
+- `Data` - A base64 encoding of the bytes being streamed.
+
+- `FileEvent` - An event that could cause a change in the streams position. The
+ possible values are "file deleted" and "file truncated".
+
+- `Offset` - Offset is the offset into the stream.
+
+- `File` - The name of the file being streamed.
+
+## Stream Logs
+
+This endpoint streams a task's stderr/stdout logs.
+
+| Method | Path | Produces |
+| ------ | --------------------------- | ------------ |
+| `GET` | `/client/fs/logs/:alloc_id` | `text/plain` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------------------------------- |
+| `NO` | `namespace:read-logs` or `namespace:read-fs` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+- `task` `(string: )` - Specifies the name of the task inside the
+ allocation to stream logs from.
+
+- `follow` `(bool: false)`- Specifies whether to tail the logs.
+
+- `type` `(string: "stderr|stdout")` - Specifies the stream to stream.
+
+- `offset` `(int: 0)` - Specifies the offset to start streaming from.
+
+- `origin` `(string: "start|end")` - Specifies either "start" or "end" and
+ applies the offset relative to either the start or end of the logs
+ respectively. Defaults to "start".
+
+- `plain` `(bool: false)` - Return just the plain text without framing. This can
+ be useful when viewing logs in a browser.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/fs/logs/5fc98185-17ff-26bc-a802-0c74fa471c99
+```
+
+### Sample Response
+
+```json
+({
+ "File": "alloc/logs/redis.stdout.0",
+ "Offset": 3604480,
+ "Data": "NTMxOTMyCjUzMTkzMwo1MzE5MzQKNTMx..."
+},
+{
+ "File": "alloc/logs/redis.stdout.0",
+ "FileEvent": "file deleted"
+})
+```
+
+#### Field Reference
+
+The return value is a stream of frames. These frames contain the following
+fields:
+
+- `Data` - A base64 encoding of the bytes being streamed.
+
+- `FileEvent` - An event that could cause a change in the streams position. The
+ possible values are "file deleted" and "file truncated".
+
+- `Offset` - Offset is the offset into the stream.
+
+- `File` - The name of the file being streamed.
+
+## List Files
+
+This endpoint lists files in an allocation directory.
+
+| Method | Path | Produces |
+| ------ | ------------------------- | ------------ |
+| `GET` | `/client/fs/ls/:alloc_id` | `text/plain` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------------- |
+| `NO` | `namespace:read-fs` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+- `path` `(string: "/")` - Specifies the path of the file to read, relative to
+ the root of the allocation directory.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/fs/ls/5fc98185-17ff-26bc-a802-0c74fa471c99
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "Name": "alloc",
+ "IsDir": true,
+ "Size": 4096,
+ "FileMode": "drwxrwxr-x",
+ "ModTime": "2016-03-15T15:40:00.414236712-07:00"
+ },
+ {
+ "Name": "redis",
+ "IsDir": true,
+ "Size": 4096,
+ "FileMode": "drwxrwxr-x",
+ "ModTime": "2016-03-15T15:40:56.810238153-07:00"
+ }
+]
+```
+
+## Stat File
+
+This endpoint stats a file in an allocation.
+
+| Method | Path | Produces |
+| ------ | --------------------------- | ------------ |
+| `GET` | `/client/fs/stat/:alloc_id` | `text/plain` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------------- |
+| `NO` | `namespace:read-fs` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+- `path` `(string: "/")` - Specifies the path of the file to read, relative to
+ the root of the allocation directory.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/fs/stat/5fc98185-17ff-26bc-a802-0c74fa471c99
+```
+
+### Sample Response
+
+```json
+{
+ "Name": "redis-syslog-collector.out",
+ "IsDir": false,
+ "Size": 96,
+ "FileMode": "-rw-rw-r--",
+ "ModTime": "2016-03-15T15:40:56.822238153-07:00"
+}
+```
+
+## GC Allocation
+
+This endpoint forces a garbage collection of a particular, stopped allocation
+on a node.
+
+| Method | Path | Produces |
+| ------ | --------------------------------- | ------------------ |
+| `GET` | `/client/allocation/:alloc_id/gc` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `:alloc_id` `(string: )` - Specifies the allocation ID to query.
+ This is specified as part of the URL. Note, this must be the _full_ allocation
+ ID, not the short 8-character one. This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://nomad.rocks/v1/client/allocation/5fc98185-17ff-26bc-a802-0c74fa471c99/gc
+```
+
+## GC All Allocation
+
+This endpoint forces a garbage collection of all stopped allocations on a node.
+
+| Method | Path | Produces |
+| ------ | ------------ | ------------ |
+| `GET` | `/client/gc` | `text/plain` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `node:write` |
+
+### Parameters
+
+- `node_id` `(string: )` - Specifies the node to target. This is
+ required when the endpoint is being accessed via a server. This is specified as
+ part of the URL. Note, this must be the _full_ node ID, not the short
+ 8-character one. This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/client/gc
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/deployments.mdx b/content/nomad/v0.11.x/content/api-docs/deployments.mdx
new file mode 100644
index 0000000000..6554454661
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/deployments.mdx
@@ -0,0 +1,493 @@
+---
+layout: api
+page_title: Deployments - HTTP API
+sidebar_title: Deployments
+description: The /deployment endpoints are used to query for and interact with deployments.
+---
+
+# Deployments HTTP API
+
+The `/deployment` endpoints are used to query for and interact with deployments.
+
+## List Deployments
+
+This endpoint lists all deployments.
+
+| Method | Path | Produces |
+| ------ | ----------------- | ------------------ |
+| `GET` | `/v1/deployments` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `prefix` `(string: "")`- Specifies a string to filter deployments based on
+ an ID prefix. Because the value is decoded to bytes, the prefix must have an
+ even number of hexadecimal characters (0-9a-f) .This is specified as a query
+ string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/deployments
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/deployments?prefix=25ba81c
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "70638f62-5c19-193e-30d6-f9d6e689ab8e",
+ "JobID": "example",
+ "JobVersion": 1,
+ "JobModifyIndex": 17,
+ "JobSpecModifyIndex": 17,
+ "JobCreateIndex": 7,
+ "TaskGroups": {
+ "cache": {
+ "Promoted": false,
+ "DesiredCanaries": 1,
+ "DesiredTotal": 3,
+ "PlacedAllocs": 1,
+ "HealthyAllocs": 0,
+ "UnhealthyAllocs": 0
+ }
+ },
+ "Status": "running",
+ "StatusDescription": "",
+ "CreateIndex": 19,
+ "ModifyIndex": 19
+ }
+]
+```
+
+## Read Deployment
+
+This endpoint reads information about a specific deployment by ID.
+
+| Method | Path | Produces |
+| ------ | ------------------------------- | ------------------ |
+| `GET` | `/v1/deployment/:deployment_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:deployment_id` `(string: )`- Specifies the UUID of the deployment.
+ This must be the full UUID, not the short 8-character one. This is specified
+ as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/deployment/70638f62-5c19-193e-30d6-f9d6e689ab8e
+```
+
+### Sample Response
+
+```json
+{
+ "ID": "70638f62-5c19-193e-30d6-f9d6e689ab8e",
+ "JobID": "example",
+ "JobVersion": 1,
+ "JobModifyIndex": 17,
+ "JobSpecModifyIndex": 17,
+ "JobCreateIndex": 7,
+ "TaskGroups": {
+ "cache": {
+ "Promoted": false,
+ "DesiredCanaries": 1,
+ "DesiredTotal": 3,
+ "PlacedAllocs": 1,
+ "HealthyAllocs": 0,
+ "UnhealthyAllocs": 0
+ }
+ },
+ "Status": "running",
+ "StatusDescription": "",
+ "CreateIndex": 19,
+ "ModifyIndex": 19
+}
+```
+
+## List Allocations for Deployment
+
+This endpoint lists the allocations created or modified for the given
+deployment.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------------- | ------------------ |
+| `GET` | `/v1/deployment/allocations/:deployment_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:deployment_id` `(string: )`- Specifies the UUID of the deployment.
+ This must be the full UUID, not the short 8-character one. This is specified
+ as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/deployment/allocations/5456bd7a-9fc0-c0dd-6131-cbee77f57577
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "287b65cc-6c25-cea9-0332-e4a75ca2af98",
+ "EvalID": "9751cb74-1a0d-190e-d026-ad2bc666ad2c",
+ "Name": "example.cache[0]",
+ "NodeID": "cb1f6030-a220-4f92-57dc-7baaabdc3823",
+ "JobID": "example",
+ "TaskGroup": "cache",
+ "DesiredStatus": "run",
+ "DesiredDescription": "",
+ "ClientStatus": "running",
+ "ClientDescription": "",
+ "TaskStates": {
+ "redis": {
+ "State": "running",
+ "Failed": false,
+ "StartedAt": "2017-06-29T22:29:41.52000268Z",
+ "FinishedAt": "0001-01-01T00:00:00Z",
+ "Events": [
+ {
+ "Type": "Received",
+ "Time": 1498775380693307400,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Task Setup",
+ "Time": 1498775380693659000,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "Building Task Directory",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Started",
+ "Time": 1498775381508493800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ }
+ ]
+ }
+ },
+ "DeploymentStatus": null,
+ "CreateIndex": 19,
+ "ModifyIndex": 22,
+ "CreateTime": 1498775380678486300,
+ "ModifyTime": 1498775380678486300
+ }
+]
+```
+
+## Fail Deployment
+
+This endpoint is used to mark a deployment as failed. This should be done to
+force the scheduler to stop creating allocations as part of the deployment or to
+cause a rollback to a previous job version. This endpoint only triggers a rollback
+if the most recent stable version of the job has a different specification than
+the job being reverted.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------ | ------------------ |
+| `POST` | `/v1/deployment/fail/:deployment_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `:deployment_id` `(string: )`- Specifies the UUID of the deployment.
+ This must be the full UUID, not the short 8-character one. This is specified
+ as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/deployment/fail/5456bd7a-9fc0-c0dd-6131-cbee77f57577
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "0d834913-58a0-81ac-6e33-e452d83a0c66",
+ "EvalCreateIndex": 20,
+ "DeploymentModifyIndex": 20,
+ "RevertedJobVersion": 1,
+ "Index": 20
+}
+```
+
+## Pause Deployment
+
+This endpoint is used to pause or unpause a deployment. This is done to pause
+a rolling upgrade or resume it.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------- | ------------------ |
+| `POST` | `/v1/deployment/pause/:deployment_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `:deployment_id` `(string: )`- Specifies the UUID of the deployment.
+ This must be the full UUID, not the short 8-character one. This is specified
+ as part of the path and in the JSON payload.
+
+- `Pause` `(bool: false)` - Specifies whether to pause or resume the deployment.
+
+### Sample Payload
+
+```javascript
+{
+ "DeploymentID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Pause": true
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/deployment/pause/5456bd7a-9fc0-c0dd-6131-cbee77f57577
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "0d834913-58a0-81ac-6e33-e452d83a0c66",
+ "EvalCreateIndex": 20,
+ "DeploymentModifyIndex": 20,
+ "Index": 20
+}
+```
+
+## Promote Deployment
+
+This endpoint is used to promote task groups that have canaries for a
+deployment. This should be done when the placed canaries are healthy and the
+rolling upgrade of the remaining allocations should begin.
+
+| Method | Path | Produces |
+| ------ | --------------------------------------- | ------------------ |
+| `POST` | `/v1/deployment/promote/:deployment_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `:deployment_id` `(string: )`- Specifies the UUID of the deployment.
+ This must be the full UUID, not the short 8-character one. This is specified
+ as part of the path and JSON payload.
+
+- `All` `(bool: false)` - Specifies whether all task groups should be promoted.
+
+- `Groups` `(array: nil)` - Specifies a particular set of task groups
+ that should be promoted.
+
+### Sample Payload
+
+```javascript
+{
+ "DeploymentID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "All": true
+}
+```
+
+```javascript
+{
+ "DeploymentID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Groups": ["web", "api-server"]
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/deployment/promote/5456bd7a-9fc0-c0dd-6131-cbee77f57577
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "0d834913-58a0-81ac-6e33-e452d83a0c66",
+ "EvalCreateIndex": 20,
+ "DeploymentModifyIndex": 20,
+ "Index": 20
+}
+```
+
+## Set Allocation Health in Deployment
+
+This endpoint is used to set the health of an allocation that is in the
+deployment manually. In some use cases, automatic detection of allocation health
+may not be desired. As such those task groups can be marked with an upgrade
+policy that uses `health_check = "manual"`. Those allocations must have their
+health marked manually using this endpoint. Marking an allocation as healthy
+will allow the rolling upgrade to proceed. Marking it as failed will cause the
+deployment to fail. This endpoint only triggers a rollback if the most recent stable
+version of the job has a different specification than the job being reverted.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------------------- | ------------------ |
+| `POST` | `/v1/deployment/allocation-health/:deployment_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `:deployment_id` `(string: )`- Specifies the UUID of the deployment.
+ This must be the full UUID, not the short 8-character one. This is specified
+ as part of the path and the JSON payload.
+
+- `HealthyAllocationIDs` `(array: nil)` - Specifies the set of
+ allocation that should be marked as healthy.
+
+- `UnhealthyAllocationIDs` `(array: nil)` - Specifies the set of
+ allocation that should be marked as unhealthy.
+
+### Sample Payload
+
+```javascript
+{
+ "DeploymentID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "HealthyAllocationIDs": [
+ "eb13bc8a-7300-56f3-14c0-d4ad115ec3f5",
+ "6584dad8-7ae3-360f-3069-0b4309711cc1"
+ ]
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/deployment/allocation-health/5456bd7a-9fc0-c0dd-6131-cbee77f57577
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "0d834913-58a0-81ac-6e33-e452d83a0c66",
+ "EvalCreateIndex": 20,
+ "DeploymentModifyIndex": 20,
+ "RevertedJobVersion": 1,
+ "Index": 20
+}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/evaluations.mdx b/content/nomad/v0.11.x/content/api-docs/evaluations.mdx
new file mode 100644
index 0000000000..02c576e2f5
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/evaluations.mdx
@@ -0,0 +1,267 @@
+---
+layout: api
+page_title: Evaluations - HTTP API
+sidebar_title: Evaluations
+description: The /evaluation are used to query for and interact with evaluations.
+---
+
+# Evaluations HTTP API
+
+The `/evaluation` endpoints are used to query for and interact with evaluations.
+
+## List Evaluations
+
+This endpoint lists all evaluations.
+
+| Method | Path | Produces |
+| ------ | ----------------- | ------------------ |
+| `GET` | `/v1/evaluations` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `prefix` `(string: "")`- Specifies a string to filter evaluations based on an
+ ID prefix. Because the value is decoded to bytes, the prefix must have an
+ even number of hexadecimal characters (0-9a-f). This is specified as a query
+ string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/evaluations
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/evaluations?prefix=25ba81
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Priority": 50,
+ "Type": "service",
+ "TriggeredBy": "job-register",
+ "JobID": "example",
+ "JobModifyIndex": 52,
+ "NodeID": "",
+ "NodeModifyIndex": 0,
+ "Status": "complete",
+ "StatusDescription": "",
+ "Wait": 0,
+ "NextEval": "",
+ "PreviousEval": "",
+ "BlockedEval": "",
+ "FailedTGAllocs": null,
+ "ClassEligibility": null,
+ "EscapedComputedClass": false,
+ "AnnotatePlan": false,
+ "SnapshotIndex": 53,
+ "QueuedAllocations": {
+ "cache": 0
+ },
+ "CreateIndex": 53,
+ "ModifyIndex": 55
+ }
+]
+```
+
+## Read Evaluation
+
+This endpoint reads information about a specific evaluation by ID.
+
+| Method | Path | Produces |
+| ------ | ------------------------- | ------------------ |
+| `GET` | `/v1/evaluation/:eval_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:eval_id` `(string: )`- Specifies the UUID of the evaluation. This
+ must be the full UUID, not the short 8-character one. This is specified as
+ part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/evaluation/5456bd7a-9fc0-c0dd-6131-cbee77f57577
+```
+
+### Sample Response
+
+```json
+{
+ "ID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Priority": 50,
+ "Type": "service",
+ "TriggeredBy": "job-register",
+ "JobID": "example",
+ "JobModifyIndex": 52,
+ "NodeID": "",
+ "NodeModifyIndex": 0,
+ "Status": "complete",
+ "StatusDescription": "",
+ "Wait": 0,
+ "NextEval": "",
+ "PreviousEval": "",
+ "BlockedEval": "",
+ "FailedTGAllocs": null,
+ "ClassEligibility": null,
+ "EscapedComputedClass": false,
+ "AnnotatePlan": false,
+ "SnapshotIndex": 53,
+ "QueuedAllocations": {
+ "cache": 0
+ },
+ "CreateIndex": 53,
+ "ModifyIndex": 55
+}
+```
+
+## List Allocations for Evaluation
+
+This endpoint lists the allocations created or modified for the given
+evaluation.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------- | ------------------ |
+| `GET` | `/v1/evaluation/:eval_id/allocations` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:eval_id` `(string: )`- Specifies the UUID of the evaluation. This
+ must be the full UUID, not the short 8-character one. This is specified as
+ part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/evaluation/5456bd7a-9fc0-c0dd-6131-cbee77f57577/allocations
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "a8198d79-cfdb-6593-a999-1e9adabcba2e",
+ "EvalID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Name": "example.cache[0]",
+ "NodeID": "fb2170a8-257d-3c64-b14d-bc06cc94e34c",
+ "JobID": "example",
+ "TaskGroup": "cache",
+ "DesiredStatus": "run",
+ "DesiredDescription": "",
+ "ClientStatus": "running",
+ "ClientDescription": "",
+ "TaskStates": {
+ "redis": {
+ "State": "running",
+ "Failed": false,
+ "Events": [
+ {
+ "Type": "Received",
+ "Time": 1495747371795703800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Driver",
+ "Time": 1495747371798867200,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": "Downloading image redis:3.2"
+ },
+ {
+ "Type": "Started",
+ "Time": 1495747379525667800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ }
+ ]
+ }
+ },
+ "CreateIndex": 54,
+ "ModifyIndex": 57,
+ "CreateTime": 1495747371794276400
+ }
+]
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/index.mdx b/content/nomad/v0.11.x/content/api-docs/index.mdx
new file mode 100644
index 0000000000..e0f5a4b8d9
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/index.mdx
@@ -0,0 +1,211 @@
+---
+layout: api
+page_title: HTTP API
+sidebar_title: HTTP API Overview
+description: |-
+ Nomad exposes a RESTful HTTP API to control almost every aspect of the
+ Nomad agent.
+---
+
+# HTTP API
+
+The main interface to Nomad is a RESTful HTTP API. The API can query the current
+state of the system as well as modify the state of the system. The Nomad CLI
+actually invokes Nomad's HTTP for many commands.
+
+## Version Prefix
+
+All API routes are prefixed with `/v1/`.
+
+This documentation is only for the v1 API.
+
+~> **Backwards compatibility:** At the current version, Nomad does not yet
+promise backwards compatibility even with the v1 prefix. We'll remove this
+warning when this policy changes. We expect to reach API stability by Nomad
+1.0.
+
+## Addressing & Ports
+
+Nomad binds to a specific set of addresses and ports. The HTTP API is served via
+the `http` address and port. This `address:port` must be accessible locally. If
+you bind to `127.0.0.1:4646`, the API is only available _from that host_. If you
+bind to a private internal IP, the API will be available from within that
+network. If you bind to a public IP, the API will be available from the public
+Internet (not recommended).
+
+The default port for the Nomad HTTP API is `4646`. This can be overridden via
+the Nomad configuration block. Here is an example curl request to query a Nomad
+server with the default configuration:
+
+```shell-session
+$ curl http://127.0.0.1:4646/v1/agent/members
+```
+
+The conventions used in the API documentation do not list a port and use the
+standard URL `localhost:4646`. Be sure to replace this with your Nomad agent URL
+when using the examples.
+
+## Data Model and Layout
+
+There are five primary nouns in Nomad:
+
+- jobs
+- nodes
+- allocations
+- deployments
+- evaluations
+
+[](/img/nomad-data-model.png)
+
+Jobs are submitted by users and represent a _desired state_. A job is a
+declarative description of tasks to run which are bounded by constraints and
+require resources. Jobs can also have affinities which are used to express placement
+preferences. Nodes are the servers in the clusters that tasks can be
+scheduled on. The mapping of tasks in a job to nodes is done using allocations.
+An allocation is used to declare that a set of tasks in a job should be run on a
+particular node. Scheduling is the process of determining the appropriate
+allocations and is done as part of an evaluation. Deployments are objects to
+track a rolling update of allocations between two versions of a job.
+
+The API is modeled closely on the underlying data model. Use the links to the
+left for documentation about specific endpoints. There are also "Agent" APIs
+which interact with a specific agent and not the broader cluster used for
+administration.
+
+## ACLs
+
+Several endpoints in Nomad use or require ACL tokens to operate. The token are used to authenticate the request and determine if the request is allowed based on the associated authorizations. Tokens are specified per-request by using the `X-Nomad-Token` request header set to the `SecretID` of an ACL Token.
+
+For more details about ACLs, please see the [ACL Guide](https://learn.hashicorp.com/nomad?track=acls#operations-and-development).
+
+## Authentication
+
+When ACLs are enabled, a Nomad token should be provided to API requests using the `X-Nomad-Token` header. When using authentication, clients should communicate via TLS.
+
+Here is an example using curl:
+
+```shell-session
+$ curl \
+ --header "X-Nomad-Token: aa534e09-6a07-0a45-2295-a7f77063d429" \
+ https://localhost:4646/v1/jobs
+```
+
+## Blocking Queries
+
+Many endpoints in Nomad support a feature known as "blocking queries". A
+blocking query is used to wait for a potential change using long polling. Not
+all endpoints support blocking, but each endpoint uniquely documents its support
+for blocking queries in the documentation.
+
+Endpoints that support blocking queries return an HTTP header named
+`X-Nomad-Index`. This is a unique identifier representing the current state of
+the requested resource. On a new Nomad cluster the value of this index starts at 1.
+
+On subsequent requests for this resource, the client can set the `index` query
+string parameter to the value of `X-Nomad-Index`, indicating that the client
+wishes to wait for any changes subsequent to that index.
+
+When this is provided, the HTTP request will "hang" until a change in the system
+occurs, or the maximum timeout is reached. A critical note is that the return of
+a blocking request is **no guarantee** of a change. It is possible that the
+timeout was reached or that there was an idempotent write that does not affect
+the result of the query.
+
+In addition to `index`, endpoints that support blocking will also honor a `wait`
+parameter specifying a maximum duration for the blocking request. This is
+limited to 10 minutes. If not set, the wait time defaults to 5 minutes. This
+value can be specified in the form of "10s" or "5m" (i.e., 10 seconds or 5
+minutes, respectively). A small random amount of additional wait time is added
+to the supplied maximum `wait` time to spread out the wake up time of any
+concurrent requests. This adds up to `wait / 16` additional time to the maximum
+duration.
+
+## Consistency Modes
+
+Most of the read query endpoints support multiple levels of consistency. Since
+no policy will suit all clients' needs, these consistency modes allow the user
+to have the ultimate say in how to balance the trade-offs inherent in a
+distributed system.
+
+The two read modes are:
+
+- `default` - If not specified, the default is strongly consistent in almost all
+ cases. However, there is a small window in which a new leader may be elected
+ during which the old leader may service stale values. The trade-off is fast
+ reads but potentially stale values. The condition resulting in stale reads is
+ hard to trigger, and most clients should not need to worry about this case.
+ Also, note that this race condition only applies to reads, not writes.
+
+- `stale` - This mode allows any server to service the read regardless of
+ whether it is the leader. This means reads can be arbitrarily stale; however,
+ results are generally consistent to within 50 milliseconds of the leader. The
+ trade-off is very fast and scalable reads with a higher likelihood of stale
+ values. Since this mode allows reads without a leader, a cluster that is
+ unavailable will still be able to respond to queries.
+
+To switch these modes, use the `stale` query parameter on requests.
+
+To support bounding the acceptable staleness of data, responses provide the
+`X-Nomad-LastContact` header containing the time in milliseconds that a server
+was last contacted by the leader node. The `X-Nomad-KnownLeader` header also
+indicates if there is a known leader. These can be used by clients to gauge the
+staleness of a result and take appropriate action.
+
+## Cross-Region Requests
+
+By default, any request to the HTTP API will default to the region on which the
+machine is servicing the request. If the agent runs in "region1", the request
+will query the region "region1". A target region can be explicitly request using
+the `?region` query parameter. The request will be transparently forwarded and
+serviced by a server in the requested region.
+
+## Compressed Responses
+
+The HTTP API will gzip the response if the HTTP request denotes that the client
+accepts gzip compression. This is achieved by passing the accept encoding:
+
+```shell-session
+$ curl \
+ --header "Accept-Encoding: gzip" \
+ https://localhost:4646/v1/...
+```
+
+## Formatted JSON Output
+
+By default, the output of all HTTP API requests is minimized JSON. If the client
+passes `pretty` on the query string, formatted JSON will be returned.
+
+In general, clients should prefer a client-side parser like `jq` instead of
+server-formatted data. Asking the server to format the data takes away
+processing cycles from more important tasks.
+
+```shell-session
+$ curl https://localhost:4646/v1/page?pretty
+```
+
+## HTTP Methods
+
+Nomad's API aims to be RESTful, although there are some exceptions. The API
+responds to the standard HTTP verbs GET, PUT, and DELETE. Each API method will
+clearly document the verb(s) it responds to and the generated response. The same
+path with different verbs may trigger different behavior. For example:
+
+```text
+PUT /v1/jobs
+GET /v1/jobs
+```
+
+Even though these share a path, the `PUT` operation creates a new job whereas
+the `GET` operation reads all jobs.
+
+## HTTP Response Codes
+
+Individual API's will contain further documentation in the case that more
+specific response codes are returned but all clients should handle the following:
+
+- 200 and 204 as success codes.
+- 400 indicates a validation failure and if a parameter is modified in the
+ request, it could potentially succeed.
+- 403 marks that the client isn't authenticated for the request.
+- 404 indicates an unknown resource.
+- 5xx means that the client should not expect the request to succeed if retried.
diff --git a/content/nomad/v0.11.x/content/api-docs/jobs.mdx b/content/nomad/v0.11.x/content/api-docs/jobs.mdx
new file mode 100644
index 0000000000..1096087790
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/jobs.mdx
@@ -0,0 +1,1858 @@
+---
+layout: api
+page_title: Jobs - HTTP API
+sidebar_title: Jobs
+description: The /jobs endpoints are used to query for and interact with jobs.
+---
+
+# Jobs HTTP API
+
+The `/jobs` endpoints are used to query for and interact with jobs.
+
+## List Jobs
+
+This endpoint lists all known jobs in the system registered with Nomad.
+
+| Method | Path | Produces |
+| ------ | ---------- | ------------------ |
+| `GET` | `/v1/jobs` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------- |
+| `YES` | `namespace:list-jobs` |
+
+### Parameters
+
+- `prefix` `(string: "")` - Specifies a string to filter jobs on based on
+ an index prefix. This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl https://localhost:4646/v1/jobs
+```
+
+```shell-session
+$ curl https://localhost:4646/v1/jobs?prefix=team
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "example",
+ "ParentID": "",
+ "Name": "example",
+ "Type": "service",
+ "Priority": 50,
+ "Status": "pending",
+ "StatusDescription": "",
+ "JobSummary": {
+ "JobID": "example",
+ "Summary": {
+ "cache": {
+ "Queued": 1,
+ "Complete": 1,
+ "Failed": 0,
+ "Running": 0,
+ "Starting": 0,
+ "Lost": 0
+ }
+ },
+ "Children": {
+ "Pending": 0,
+ "Running": 0,
+ "Dead": 0
+ },
+ "CreateIndex": 52,
+ "ModifyIndex": 96
+ },
+ "CreateIndex": 52,
+ "ModifyIndex": 93,
+ "JobModifyIndex": 52
+ }
+]
+```
+
+## Create Job
+
+This endpoint creates (aka "registers") a new job in the system.
+
+| Method | Path | Produces |
+| ------ | ---------- | ------------------ |
+| `POST` | `/v1/jobs` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------------------------------------------------------------- |
+| `NO` | `namespace:submit-job`
`namespace:sentinel-override` if `PolicyOverride` set |
+
+### Parameters
+
+- `Job` `(Job: )` - Specifies the JSON definition of the job.
+
+- `EnforceIndex` `(bool: false)` - If set, the job will only be registered if the
+ passed `JobModifyIndex` matches the current job's index. If the index is zero,
+ the register only occurs if the job is new. This paradigm allows check-and-set
+ style job updating.
+
+- `JobModifyIndex` `(int: 0)` - Specifies the `JobModifyIndex` to enforce the
+ current job is at.
+
+- `PolicyOverride` `(bool: false)` - If set, any soft mandatory Sentinel policies
+ will be overridden. This allows a job to be registered when it would be denied
+ by policy.
+
+### Sample Payload
+
+```json
+{
+ "Job": {
+ "ID": "example",
+ "Name": "example",
+ "Type": "service",
+ "Priority": 50,
+ "Datacenters": ["dc1"],
+ "TaskGroups": [
+ {
+ "Name": "cache",
+ "Count": 1,
+ "Tasks": [
+ {
+ "Name": "redis",
+ "Driver": "docker",
+ "User": "",
+ "Config": {
+ "image": "redis:3.2",
+ "port_map": [
+ {
+ "db": 6379
+ }
+ ]
+ },
+ "Services": [
+ {
+ "Id": "",
+ "Name": "redis-cache",
+ "Tags": ["global", "cache"],
+ "Meta": {
+ "meta": "for my service"
+ },
+ "PortLabel": "db",
+ "AddressMode": "",
+ "Checks": [
+ {
+ "Id": "",
+ "Name": "alive",
+ "Type": "tcp",
+ "Command": "",
+ "Args": null,
+ "Path": "",
+ "Protocol": "",
+ "PortLabel": "",
+ "Interval": 10000000000,
+ "Timeout": 2000000000,
+ "InitialStatus": "",
+ "TLSSkipVerify": false
+ }
+ ]
+ }
+ ],
+ "Resources": {
+ "CPU": 500,
+ "MemoryMB": 256,
+ "Networks": [
+ {
+ "Device": "",
+ "CIDR": "",
+ "IP": "",
+ "MBits": 10,
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 0
+ }
+ ]
+ }
+ ]
+ },
+ "Leader": false
+ }
+ ],
+ "RestartPolicy": {
+ "Interval": 300000000000,
+ "Attempts": 10,
+ "Delay": 25000000000,
+ "Mode": "delay"
+ },
+ "ReschedulePolicy": {
+ "Attempts": 10,
+ "Delay": 30000000000,
+ "DelayFunction": "exponential",
+ "Interval": 36000000000000,
+ "MaxDelay": 3600000000000,
+ "Unlimited": false
+ },
+ "EphemeralDisk": {
+ "SizeMB": 300
+ }
+ }
+ ],
+ "Update": {
+ "MaxParallel": 1,
+ "MinHealthyTime": 10000000000,
+ "HealthyDeadline": 180000000000,
+ "AutoRevert": false,
+ "Canary": 0
+ }
+ }
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/jobs
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "",
+ "EvalCreateIndex": 0,
+ "JobModifyIndex": 109,
+ "Warnings": "",
+ "Index": 0,
+ "LastContact": 0,
+ "KnownLeader": false
+}
+```
+
+## Parse Job
+
+This endpoint will parse a HCL jobspec and produce the equivalent JSON encoded
+job.
+
+| Method | Path | Produces |
+| ------ | ---------------- | ------------------ |
+| `POST` | `/v1/jobs/parse` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Parameters
+
+- `JobHCL` `(string: )` - Specifies the HCL definition of the job
+ encoded in a JSON string.
+- `Canonicalize` `(bool: false)` - Flag to enable setting any unset fields to
+ their default values.
+
+## Sample Payload
+
+```json
+{
+ "JobHCL": "job \"example\" { type = \"service\" group \"cache\" {} }",
+ "Canonicalize": true
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/jobs/parse
+```
+
+### Sample Response
+
+```json
+{
+ "AllAtOnce": false,
+ "Constraints": null,
+ "Affinities": null,
+ "CreateIndex": 0,
+ "Datacenters": null,
+ "ID": "my-job",
+ "JobModifyIndex": 0,
+ "Meta": null,
+ "Migrate": null,
+ "ModifyIndex": 0,
+ "Name": "my-job",
+ "Namespace": "default",
+ "ParameterizedJob": null,
+ "ParentID": "",
+ "Payload": null,
+ "Periodic": null,
+ "Priority": 50,
+ "Region": "global",
+ "Reschedule": null,
+ "Stable": false,
+ "Status": "",
+ "StatusDescription": "",
+ "Stop": false,
+ "SubmitTime": null,
+ "TaskGroups": null,
+ "Type": "service",
+ "Update": null,
+ "VaultToken": "",
+ "Version": 0
+}
+```
+
+## Read Job
+
+This endpoint reads information about a single job for its specification and
+status.
+
+| Method | Path | Produces |
+| ------ | ----------------- | ------------------ |
+| `GET` | `/v1/job/:job_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job
+```
+
+### Sample Response
+
+```json
+{
+ "Region": "global",
+ "ID": "example",
+ "ParentID": "",
+ "Name": "example",
+ "Type": "batch",
+ "Priority": 50,
+ "AllAtOnce": false,
+ "Datacenters": ["dc1"],
+ "Constraints": [
+ {
+ "LTarget": "${attr.kernel.name}",
+ "RTarget": "linux",
+ "Operand": "="
+ }
+ ],
+ "TaskGroups": [
+ {
+ "Name": "cache",
+ "Count": 1,
+ "Constraints": [
+ {
+ "LTarget": "${attr.os.signals}",
+ "RTarget": "SIGUSR1",
+ "Operand": "set_contains"
+ }
+ ],
+ "Affinities": [
+ {
+ "LTarget": "${meta.datacenter}",
+ "RTarget": "dc1",
+ "Operand": "=",
+ "Weight": 50
+ }
+ ],
+ "RestartPolicy": {
+ "Attempts": 10,
+ "Interval": 300000000000,
+ "Delay": 25000000000,
+ "Mode": "delay"
+ },
+ "Tasks": [
+ {
+ "Name": "redis",
+ "Driver": "docker",
+ "User": "foo-user",
+ "Config": {
+ "image": "redis:latest",
+ "port_map": [
+ {
+ "db": 6379
+ }
+ ]
+ },
+ "Env": {
+ "foo": "bar",
+ "baz": "pipe"
+ },
+ "Services": [
+ {
+ "Name": "cache-redis",
+ "PortLabel": "db",
+ "Tags": ["global", "cache"],
+ "Checks": [
+ {
+ "Name": "alive",
+ "Type": "tcp",
+ "Command": "",
+ "Args": null,
+ "Path": "",
+ "Protocol": "",
+ "PortLabel": "",
+ "Interval": 10000000000,
+ "Timeout": 2000000000,
+ "InitialStatus": ""
+ }
+ ]
+ }
+ ],
+ "Vault": null,
+ "Templates": [
+ {
+ "SourcePath": "local/config.conf.tpl",
+ "DestPath": "local/config.conf",
+ "EmbeddedTmpl": "",
+ "ChangeMode": "signal",
+ "ChangeSignal": "SIGUSR1",
+ "Splay": 5000000000,
+ "Perms": ""
+ }
+ ],
+ "Constraints": null,
+ "Affinities": null,
+ "Resources": {
+ "CPU": 500,
+ "MemoryMB": 256,
+ "DiskMB": 0,
+ "Networks": [
+ {
+ "Device": "",
+ "CIDR": "",
+ "IP": "",
+ "MBits": 10,
+ "ReservedPorts": [
+ {
+ "Label": "rpc",
+ "Value": 25566
+ }
+ ],
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 0
+ }
+ ]
+ }
+ ]
+ },
+ "DispatchPayload": {
+ "File": "config.json"
+ },
+ "Meta": {
+ "foo": "bar",
+ "baz": "pipe"
+ },
+ "KillTimeout": 5000000000,
+ "LogConfig": {
+ "MaxFiles": 10,
+ "MaxFileSizeMB": 10
+ },
+ "Artifacts": [
+ {
+ "GetterSource": "http://foo.com/artifact.tar.gz",
+ "GetterOptions": {
+ "checksum": "md5:c4aa853ad2215426eb7d70a21922e794"
+ },
+ "RelativeDest": "local/"
+ }
+ ],
+ "Leader": false
+ }
+ ],
+ "EphemeralDisk": {
+ "Sticky": false,
+ "SizeMB": 300,
+ "Migrate": false
+ },
+ "Meta": {
+ "foo": "bar",
+ "baz": "pipe"
+ }
+ }
+ ],
+ "Update": {
+ "Stagger": 10000000000,
+ "MaxParallel": 1
+ },
+ "Periodic": {
+ "Enabled": true,
+ "Spec": "* * * * *",
+ "SpecType": "cron",
+ "ProhibitOverlap": true
+ },
+ "ParameterizedJob": {
+ "Payload": "required",
+ "MetaRequired": ["foo"],
+ "MetaOptional": ["bar"]
+ },
+ "Payload": null,
+ "Meta": {
+ "foo": "bar",
+ "baz": "pipe"
+ },
+ "VaultToken": "",
+ "Status": "running",
+ "StatusDescription": "",
+ "CreateIndex": 7,
+ "ModifyIndex": 7,
+ "JobModifyIndex": 7
+}
+```
+
+## List Job Versions
+
+This endpoint reads information about all versions of a job.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | ------------------ |
+| `GET` | `/v1/job/:job_id/versions` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job/versions
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "Stop": false,
+ "Region": "global",
+ "ID": "example",
+ "ParentID": "",
+ "Name": "example",
+ "Type": "service",
+ "Priority": 50,
+ "AllAtOnce": false,
+ "Datacenters": ["dc1"],
+ "Constraints": null,
+ "Affinities": null,
+ "TaskGroups": [
+ {
+ "Name": "cache",
+ "Count": 1,
+ "Update": {
+ "Stagger": 0,
+ "MaxParallel": 1,
+ "HealthCheck": "checks",
+ "MinHealthyTime": 10000000000,
+ "HealthyDeadline": 300000000000,
+ "AutoRevert": false,
+ "Canary": 0
+ },
+ "Constraints": null,
+ "Affinities": null,
+ "RestartPolicy": {
+ "Attempts": 10,
+ "Interval": 300000000000,
+ "Delay": 25000000000,
+ "Mode": "delay"
+ },
+ "Spreads": [
+ {
+ "Attribute": "${node.datacenter}",
+ "SpreadTarget": null,
+ "Weight": 100
+ }
+ ],
+ "Tasks": [
+ {
+ "Name": "redis",
+ "Driver": "docker",
+ "User": "",
+ "Config": {
+ "image": "redis:3.2",
+ "port_map": [
+ {
+ "db": 6379
+ }
+ ]
+ },
+ "Env": null,
+ "Services": [
+ {
+ "Name": "redis-cache",
+ "PortLabel": "db",
+ "Tags": ["global", "cache"],
+ "Checks": [
+ {
+ "Name": "alive",
+ "Type": "tcp",
+ "Command": "",
+ "Args": null,
+ "Path": "",
+ "Protocol": "",
+ "PortLabel": "",
+ "Interval": 10000000000,
+ "Timeout": 2000000000,
+ "InitialStatus": "",
+ "TLSSkipVerify": false
+ }
+ ]
+ }
+ ],
+ "Vault": null,
+ "Templates": null,
+ "Constraints": null,
+ "Affinities": null,
+ "Spreads": null,
+ "Resources": {
+ "CPU": 500,
+ "MemoryMB": 256,
+ "DiskMB": 0,
+ "Networks": [
+ {
+ "Device": "",
+ "CIDR": "",
+ "IP": "",
+ "MBits": 10,
+ "ReservedPorts": null,
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 0
+ }
+ ]
+ }
+ ]
+ },
+ "DispatchPayload": null,
+ "Meta": null,
+ "KillTimeout": 5000000000,
+ "LogConfig": {
+ "MaxFiles": 10,
+ "MaxFileSizeMB": 10
+ },
+ "Artifacts": null,
+ "Leader": false
+ }
+ ],
+ "EphemeralDisk": {
+ "Sticky": false,
+ "SizeMB": 300,
+ "Migrate": false
+ },
+ "Meta": null
+ }
+ ],
+ "Update": {
+ "Stagger": 10000000000,
+ "MaxParallel": 1,
+ "HealthCheck": "",
+ "MinHealthyTime": 0,
+ "HealthyDeadline": 0,
+ "AutoRevert": false,
+ "Canary": 0
+ },
+ "Periodic": null,
+ "ParameterizedJob": null,
+ "Payload": null,
+ "Meta": null,
+ "VaultToken": "",
+ "Spreads": null,
+ "Status": "pending",
+ "StatusDescription": "",
+ "Stable": false,
+ "Version": 0,
+ "CreateIndex": 7,
+ "ModifyIndex": 7,
+ "JobModifyIndex": 7
+ }
+]
+```
+
+## List Job Allocations
+
+This endpoint reads information about a single job's allocations.
+
+| Method | Path | Produces |
+| ------ | ----------------------------- | ------------------ |
+| `GET` | `/v1/job/:job_id/allocations` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+- `all` `(bool: false)` - Specifies whether the list of allocations should
+ include allocations from a previously registered job with the same ID. This is
+ possible if the job is deregistered and reregistered.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job/allocations
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "ed344e0a-7290-d117-41d3-a64f853ca3c2",
+ "EvalID": "a9c5effc-2242-51b2-f1fe-054ee11ab189",
+ "Name": "example.cache[0]",
+ "NodeID": "cb1f6030-a220-4f92-57dc-7baaabdc3823",
+ "PreviousAllocation": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "NextAllocation": "cd13d9b9-4f97-7184-c88b-7b451981616b",
+ "RescheduleTracker": {
+ "Events": [
+ {
+ "PrevAllocID": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "PrevNodeID": "9230cd3b-3bda-9a3f-82f9-b2ea8dedb20e",
+ "RescheduleTime": 1517434161192946200,
+ "Delay": 5000000000
+ }
+ ]
+ },
+ "JobID": "example",
+ "TaskGroup": "cache",
+ "DesiredStatus": "run",
+ "DesiredDescription": "",
+ "ClientStatus": "running",
+ "ClientDescription": "",
+ "TaskStates": {
+ "redis": {
+ "State": "running",
+ "Failed": false,
+ "StartedAt": "2017-05-25T23:41:23.240184101Z",
+ "FinishedAt": "0001-01-01T00:00:00Z",
+ "Events": [
+ {
+ "Type": "Received",
+ "Time": 1495755675956923000,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Task Setup",
+ "Time": 1495755675957466400,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "Building Task Directory",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Driver",
+ "Time": 1495755675970286800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": "Downloading image redis:3.2"
+ },
+ {
+ "Type": "Started",
+ "Time": 1495755683227522000,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ }
+ ]
+ }
+ },
+ "CreateIndex": 9,
+ "ModifyIndex": 13,
+ "CreateTime": 1495755675944527600,
+ "ModifyTime": 1495755675944527600
+ }
+]
+```
+
+## List Job Evaluations
+
+This endpoint reads information about a single job's evaluations
+
+| Method | Path | Produces |
+| ------ | ----------------------------- | ------------------ |
+| `GET` | `/v1/job/:job_id/evaluations` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job/evaluations
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "a9c5effc-2242-51b2-f1fe-054ee11ab189",
+ "Priority": 50,
+ "Type": "service",
+ "TriggeredBy": "job-register",
+ "JobID": "example",
+ "JobModifyIndex": 7,
+ "NodeID": "",
+ "NodeModifyIndex": 0,
+ "Status": "complete",
+ "StatusDescription": "",
+ "Wait": 0,
+ "NextEval": "",
+ "PreviousEval": "",
+ "BlockedEval": "",
+ "FailedTGAllocs": null,
+ "ClassEligibility": null,
+ "EscapedComputedClass": false,
+ "AnnotatePlan": false,
+ "QueuedAllocations": {
+ "cache": 0
+ },
+ "SnapshotIndex": 8,
+ "CreateIndex": 8,
+ "ModifyIndex": 10
+ }
+]
+```
+
+## List Job Deployments
+
+This endpoint lists a single job's deployments
+
+| Method | Path | Produces |
+| ------ | ----------------------------- | ------------------ |
+| `GET` | `/v1/job/:job_id/deployments` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+- `all` `(bool: false)` - Specifies whether the list of deployments should
+ include deployments from a previously registered job with the same ID. This is
+ possible if the job is deregistered and reregistered.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job/deployments
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "85ee4a9a-339f-a921-a9ef-0550d20b2c61",
+ "JobID": "my-job",
+ "JobVersion": 1,
+ "JobModifyIndex": 19,
+ "JobCreateIndex": 7,
+ "TaskGroups": {
+ "cache": {
+ "AutoRevert": true,
+ "Promoted": false,
+ "PlacedCanaries": [
+ "d0ad0808-2765-abf6-1e15-79fb7fe5a416",
+ "38c70cd8-81f2-1489-a328-87bb29ec0e0f"
+ ],
+ "DesiredCanaries": 2,
+ "DesiredTotal": 3,
+ "PlacedAllocs": 2,
+ "HealthyAllocs": 2,
+ "UnhealthyAllocs": 0
+ }
+ },
+ "Status": "running",
+ "StatusDescription": "Deployment is running",
+ "CreateIndex": 21,
+ "ModifyIndex": 25
+ },
+ {
+ "ID": "fb6070fb-4a44-e255-4e6f-8213eba3871a",
+ "JobID": "my-job",
+ "JobVersion": 0,
+ "JobModifyIndex": 7,
+ "JobCreateIndex": 7,
+ "TaskGroups": {
+ "cache": {
+ "AutoRevert": true,
+ "Promoted": false,
+ "PlacedCanaries": null,
+ "DesiredCanaries": 0,
+ "DesiredTotal": 3,
+ "PlacedAllocs": 3,
+ "HealthyAllocs": 3,
+ "UnhealthyAllocs": 0
+ }
+ },
+ "Status": "successful",
+ "StatusDescription": "Deployment completed successfully",
+ "CreateIndex": 9,
+ "ModifyIndex": 17
+ }
+]
+```
+
+## Read Job's Most Recent Deployment
+
+This endpoint returns a single job's most recent deployment.
+
+| Method | Path | Produces |
+| ------ | ---------------------------- | ------------------ |
+| `GET` | `/v1/job/:job_id/deployment` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job/deployment
+```
+
+### Sample Response
+
+```json
+{
+ "ID": "85ee4a9a-339f-a921-a9ef-0550d20b2c61",
+ "JobID": "my-job",
+ "JobVersion": 1,
+ "JobModifyIndex": 19,
+ "JobCreateIndex": 7,
+ "TaskGroups": {
+ "cache": {
+ "AutoRevert": true,
+ "Promoted": false,
+ "PlacedCanaries": [
+ "d0ad0808-2765-abf6-1e15-79fb7fe5a416",
+ "38c70cd8-81f2-1489-a328-87bb29ec0e0f"
+ ],
+ "DesiredCanaries": 2,
+ "DesiredTotal": 3,
+ "PlacedAllocs": 2,
+ "HealthyAllocs": 2,
+ "UnhealthyAllocs": 0
+ }
+ },
+ "Status": "running",
+ "StatusDescription": "Deployment is running",
+ "CreateIndex": 21,
+ "ModifyIndex": 25
+}
+```
+
+## Read Job Summary
+
+This endpoint reads summary information about a job.
+
+| Method | Path | Produces |
+| ------ | ------------------------- | ------------------ |
+| `GET` | `/v1/job/:job_id/summary` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `YES` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job/summary
+```
+
+### Sample Response
+
+```json
+{
+ "JobID": "example",
+ "Summary": {
+ "cache": {
+ "Queued": 0,
+ "Complete": 0,
+ "Failed": 0,
+ "Running": 1,
+ "Starting": 0,
+ "Lost": 0
+ }
+ },
+ "Children": {
+ "Pending": 0,
+ "Running": 0,
+ "Dead": 0
+ },
+ "CreateIndex": 7,
+ "ModifyIndex": 13
+}
+```
+
+## Update Existing Job
+
+This endpoint registers a new job or updates an existing job.
+
+| Method | Path | Produces |
+| ------ | ----------------- | ------------------ |
+| `POST` | `/v1/job/:job_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------------------------------------------------------------- |
+| `NO` | `namespace:submit-job`
`namespace:sentinel-override` if `PolicyOverride` set |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+- `Job` `(Job: )` - Specifies the JSON definition of the job.
+
+- `EnforceIndex` `(bool: false)` - If set, the job will only be registered if the
+ passed `JobModifyIndex` matches the current job's index. If the index is zero,
+ the register only occurs if the job is new. This paradigm allows check-and-set
+ style job updating.
+
+- `JobModifyIndex` `(int: 0)` - Specifies the `JobModifyIndex` to enforce the
+ current job is at.
+
+- `PolicyOverride` `(bool: false)` - If set, any soft mandatory Sentinel policies
+ will be overridden. This allows a job to be registered when it would be denied
+ by policy.
+
+### Sample Payload
+
+```javascript
+{
+ "Job": {
+ // ...
+ },
+ "EnforceIndex": true,
+ "JobModifyIndex": 4
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/job/my-job
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "d092fdc0-e1fd-2536-67d8-43af8ca798ac",
+ "EvalCreateIndex": 35,
+ "JobModifyIndex": 34
+}
+```
+
+## Dispatch Job
+
+This endpoint dispatches a new instance of a parameterized job.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | ------------------ |
+| `POST` | `/v1/job/:job_id/dispatch` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------------------ |
+| `NO` | `namespace:dispatch-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified
+ in the job file during submission). This is specified as part of the path.
+
+- `Payload` `(string: "")` - Specifies a base64 encoded string containing the
+ payload. This is limited to 15 KB.
+
+- `Meta` `(meta: nil)` - Specifies arbitrary metadata to pass to
+ the job.
+
+### Sample Payload
+
+```json
+{
+ "Payload": "A28C3==",
+ "Meta": {
+ "key": "Value"
+ }
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/job/my-job/dispatch
+```
+
+### Sample Response
+
+```json
+{
+ "Index": 13,
+ "JobCreateIndex": 12,
+ "EvalCreateIndex": 13,
+ "EvalID": "e5f55fac-bc69-119d-528a-1fc7ade5e02c",
+ "DispatchedJobID": "example/dispatch-1485408778-81644024"
+}
+```
+
+## Revert to older Job Version
+
+This endpoint reverts the job to an older version.
+
+| Method | Path | Produces |
+| ------ | ------------------------ | ------------------ |
+| `POST` | `/v1/job/:job_id/revert` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `JobID` `(string: )` - Specifies the ID of the job (as specified
+ in the job file during submission). This is specified as part of the path.
+
+- `JobVersion` `(integer: 0)` - Specifies the job version to revert to.
+
+- `EnforcePriorVersion` `(integer: nil)` - Optional value specifying the current
+ job's version. This is checked and acts as a check-and-set value before
+ reverting to the specified job.
+
+- `ConsulToken` `(string:"")` - Optional value specifying the [consul token](/docs/commands/job/revert)
+ used for Consul [service identity polity authentication checking](/docs/configuration/consul#allow_unauthenticated).
+
+- `VaultToken` `(string: "")` - Optional value specifying the [vault token](/docs/commands/job/revert)
+ used for Vault [policy authentication checking](/docs/configuration/vault#allow_unauthenticated).
+
+### Sample Payload
+
+```json
+{
+ "JobID": "my-job",
+ "JobVersion": 2
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/job/my-job/revert
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "d092fdc0-e1fd-2536-67d8-43af8ca798ac",
+ "EvalCreateIndex": 35,
+ "JobModifyIndex": 34
+}
+```
+
+## Set Job Stability
+
+This endpoint sets the job's stability.
+
+| Method | Path | Produces |
+| ------ | ------------------------ | ------------------ |
+| `POST` | `/v1/job/:job_id/stable` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `JobID` `(string: )` - Specifies the ID of the job (as specified
+ in the job file during submission). This is specified as part of the path.
+
+- `JobVersion` `(integer: 0)` - Specifies the job version to set the stability on.
+
+- `Stable` `(bool: false)` - Specifies whether the job should be marked as
+ stable or not.
+
+### Sample Payload
+
+```json
+{
+ "JobID": "my-job",
+ "JobVersion": 2,
+ "Stable": true
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/job/my-job/stable
+```
+
+### Sample Response
+
+```json
+{
+ "JobModifyIndex": 34
+}
+```
+
+## Create Job Evaluation
+
+This endpoint creates a new evaluation for the given job. This can be used to
+force run the scheduling logic if necessary. Since Nomad 0.8.4, this endpoint
+supports a JSON payload with additional options. Support for calling this end point
+without a JSON payload will be removed in Nomad 0.9.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | ------------------ |
+| `POST` | `/v1/job/:job_id/evaluate` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `NO` | `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+- `JobID` `(string: )` - Specify the ID of the job in the JSON payload
+
+- `EvalOptions` `()` - Specify additional options to be used during the forced evaluation.
+ - `ForceReschedule` `(bool: false)` - If set, failed allocations of the job are rescheduled
+ immediately. This is useful for operators to force immediate placement even if the failed allocations are past
+ their reschedule limit, or are delayed by several hours because the allocation's reschedule policy has exponential delay.
+
+### Sample Payload
+
+```json
+{
+ "JobID": "my-job",
+ "EvalOptions": {
+ "ForceReschedule": true
+ }
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ -d @sample.json \
+ https://localhost:4646/v1/job/my-job/evaluate
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "d092fdc0-e1fd-2536-67d8-43af8ca798ac",
+ "EvalCreateIndex": 35,
+ "JobModifyIndex": 34
+}
+```
+
+## Create Job Plan
+
+This endpoint invokes a dry-run of the scheduler for the job.
+
+| Method | Path | Produces |
+| ------ | ---------------------- | ------------------ |
+| `POST` | `/v1/job/:job_id/plan` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------------------------------------------------------------- |
+| `NO` | `namespace:submit-job`
`namespace:sentinel-override` if `PolicyOverride` set |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+- the job file during submission). This is specified as part of the path.
+
+- `Job` `(string: )` - Specifies the JSON definition of the job.
+
+- `Diff` `(bool: false)` - Specifies whether the diff structure between the
+ submitted and server side version of the job should be included in the
+ response.
+
+- `PolicyOverride` `(bool: false)` - If set, any soft mandatory Sentinel policies
+ will be overridden. This allows a job to be registered when it would be denied
+ by policy.
+
+### Sample Payload
+
+```json
+{
+ "Job": "...",
+ "Diff": true,
+ "PolicyOverride": false
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/job/my-job/plan
+```
+
+### Sample Response
+
+```json
+{
+ "Index": 0,
+ "NextPeriodicLaunch": "0001-01-01T00:00:00Z",
+ "Warnings": "",
+ "Diff": {
+ "Type": "Added",
+ "TaskGroups": [
+ {
+ "Updates": {
+ "create": 1
+ },
+ "Type": "Added",
+ "Tasks": [
+ {
+ "Type": "Added",
+ "Objects": ["..."],
+ "Name": "redis",
+ "Fields": [
+ {
+ "Type": "Added",
+ "Old": "",
+ "New": "docker",
+ "Name": "Driver",
+ "Annotations": null
+ },
+ {
+ "Type": "Added",
+ "Old": "",
+ "New": "5000000000",
+ "Name": "KillTimeout",
+ "Annotations": null
+ }
+ ],
+ "Annotations": ["forces create"]
+ }
+ ],
+ "Objects": ["..."],
+ "Name": "cache",
+ "Fields": ["..."]
+ }
+ ],
+ "Objects": [
+ {
+ "Type": "Added",
+ "Objects": null,
+ "Name": "Datacenters",
+ "Fields": ["..."]
+ },
+ {
+ "Type": "Added",
+ "Objects": null,
+ "Name": "Constraint",
+ "Fields": ["..."]
+ },
+ {
+ "Type": "Added",
+ "Objects": null,
+ "Name": "Update",
+ "Fields": ["..."]
+ }
+ ],
+ "ID": "example",
+ "Fields": ["..."]
+ },
+ "CreatedEvals": [
+ {
+ "ModifyIndex": 0,
+ "CreateIndex": 0,
+ "SnapshotIndex": 0,
+ "AnnotatePlan": false,
+ "EscapedComputedClass": false,
+ "NodeModifyIndex": 0,
+ "NodeID": "",
+ "JobModifyIndex": 0,
+ "JobID": "example",
+ "TriggeredBy": "job-register",
+ "Type": "batch",
+ "Priority": 50,
+ "ID": "312e6a6d-8d01-0daf-9105-14919a66dba3",
+ "Status": "blocked",
+ "StatusDescription": "created to place remaining allocations",
+ "Wait": 0,
+ "NextEval": "",
+ "PreviousEval": "80318ae4-7eda-e570-e59d-bc11df134817",
+ "BlockedEval": "",
+ "FailedTGAllocs": null,
+ "ClassEligibility": {
+ "v1:7968290453076422024": true
+ }
+ }
+ ],
+ "JobModifyIndex": 0,
+ "FailedTGAllocs": {
+ "cache": {
+ "CoalescedFailures": 3,
+ "AllocationTime": 46415,
+ "Scores": null,
+ "NodesEvaluated": 1,
+ "NodesFiltered": 0,
+ "NodesAvailable": {
+ "dc1": 1
+ },
+ "ClassFiltered": null,
+ "ConstraintFiltered": null,
+ "NodesExhausted": 1,
+ "ClassExhausted": null,
+ "DimensionExhausted": {
+ "cpu": 1
+ }
+ }
+ },
+ "Annotations": {
+ "DesiredTGUpdates": {
+ "cache": {
+ "DestructiveUpdate": 0,
+ "InPlaceUpdate": 0,
+ "Stop": 0,
+ "Migrate": 0,
+ "Place": 11,
+ "Ignore": 0
+ }
+ }
+ }
+}
+```
+
+#### Field Reference
+
+- `Diff` - A diff structure between the submitted job and the server side
+ version. The top-level object is a Job Diff which contains Task Group Diffs,
+ which in turn contain Task Diffs. Each of these objects then has Object and
+ Field Diff structures embedded.
+
+- `NextPeriodicLaunch` - If the job being planned is periodic, this field will
+ include the next launch time for the job.
+
+- `CreatedEvals` - A set of evaluations that were created as a result of the
+ dry-run. These evaluations can signify a follow-up rolling update evaluation
+ or a blocked evaluation.
+
+- `JobModifyIndex` - The `JobModifyIndex` of the server side version of this job.
+
+- `FailedTGAllocs` - A set of metrics to understand any allocation failures that
+ occurred for the Task Group.
+
+- `Annotations` - Annotations include the `DesiredTGUpdates`, which tracks what
+- the scheduler would do given enough resources for each Task Group.
+
+## Force New Periodic Instance
+
+This endpoint forces a new instance of the periodic job. A new instance will be
+created even if it violates the job's
+[`prohibit_overlap`](/docs/job-specification/periodic#prohibit_overlap)
+settings. As such, this should be only used to immediately run a periodic job.
+
+| Method | Path | Produces |
+| ------ | -------------------------------- | ------------------ |
+| `POST` | `/v1/job/:job_id/periodic/force` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ https://localhost:4646/v1/job/my-job/periodic/force
+```
+
+### Sample Response
+
+```json
+{
+ "EvalCreateIndex": 7,
+ "EvalID": "57983ddd-7fcf-3e3a-fd24-f699ccfb36f4"
+}
+```
+
+## Stop a Job
+
+This endpoint deregisters a job, and stops all allocations part of it.
+
+| Method | Path | Produces |
+| -------- | ----------------- | ------------------ |
+| `DELETE` | `/v1/job/:job_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------- |
+| `NO` | `namespace:submit-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+- `purge` `(bool: false)` - Specifies that the job should stopped and purged
+ immediately. This means the job will not be queryable after being stopped. If
+ not set, the job will be purged by the garbage collector.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ https://localhost:4646/v1/job/my-job?purge=true
+```
+
+### Sample Response
+
+```json
+{
+ "EvalID": "d092fdc0-e1fd-2536-67d8-43af8ca798ac",
+ "EvalCreateIndex": 35,
+ "JobModifyIndex": 34
+}
+```
+
+## Read Job Scale Status Beta
+
+This endpoint reads scale information about a job.
+
+| Method | Path | Produces |
+| ------ | ----------------------- | ------------------ |
+| `GET` | `/v1/job/:job_id/scale` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------------------------------------- |
+| `YES` | `namespace:read-job-scaling` or `namespace:read-job` |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/job/my-job/scale
+```
+
+### Sample Response
+
+```json
+{
+ "JobCreateIndex": 10,
+ "JobID": "example",
+ "JobModifyIndex": 18,
+ "JobStopped": false,
+ "TaskGroups": {
+ "cache": {
+ "Desired": 1,
+ "Events": null,
+ "Healthy": 1,
+ "Placed": 1,
+ "Running": 0,
+ "Unhealthy": 0
+ }
+ }
+}
+```
+
+## Scale Task Group Beta
+
+This endpoint performs a scaling action against a job.
+Currently, this endpoint supports scaling the count for a task group.
+
+| Method | Path | Produces |
+| ------ | ----------------------- | ------------------ |
+| `POST` | `/v1/job/:job_id/scale` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------------------------------------------------------------------------------------------- |
+| `NO` | `namespace:scale-job` or `namespace:submit-job`
`namespace:sentinel-override` if `PolicyOverride` set |
+
+### Parameters
+
+- `:job_id` `(string: )` - Specifies the ID of the job (as specified in
+ the job file during submission). This is specified as part of the path.
+
+- `Count` `(int: )` - Specifies the new task group count.
+
+- `Target` `(json: required)` - JSON map containing the target of the scaling operation.
+ Must contain a field `Group` with the name of the task group that is the target of this scaling action.
+
+- `Reason` `(string: )` - Description of the scale action, persisted as part of the scaling event.
+ Indicates information or reason for scaling; one of `Reason` or `Error` must be provided.
+
+- `Error` `(string: )` - Description of the scale action, persisted as part of the scaling event.
+ Indicates an error state preventing scaling; one of `Reason` or `Error` must be provided.
+
+- `Meta` `(json: )` - JSON block that is persisted as part of the scaling event.
+
+- `PolicyOverride` `(bool: false)` - If set, any soft mandatory Sentinel policies
+ will be overridden. This allows a job to be scaled when it would be denied
+ by policy.
+
+### Sample Payload
+
+```javascript
+{
+ "Count": 5,
+ "Meta": {
+ "metrics": [
+ "cpu",
+ "memory"
+ ]
+ },
+ "Reason": "metric did not satisfy SLA",
+ "Target": {
+ "Group": "cache"
+ }
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/job/example/scale
+```
+
+### Sample Response
+
+This is the same payload as returned by job update.
+`EvalCreateIndex` and `EvalID` will only be present if the scaling operation resulted in the creation of an evaluation.
+
+```json
+{
+ "EvalCreateIndex": 45,
+ "EvalID": "116f3ede-f6a5-f6e7-2d0e-1fda136390f0",
+ "Index": 45,
+ "JobModifyIndex": 44,
+ "KnownLeader": false,
+ "LastContact": 0,
+ "Warnings": ""
+}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/json-jobs.mdx b/content/nomad/v0.11.x/content/api-docs/json-jobs.mdx
new file mode 100644
index 0000000000..36d454696d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/json-jobs.mdx
@@ -0,0 +1,1064 @@
+---
+layout: api
+page_title: JSON Job Specification - HTTP API
+sidebar_title: JSON Jobs
+description: |-
+ Jobs can also be specified via the HTTP API using a JSON format. This guide
+ discusses the job specification in JSON format.
+---
+
+# JSON Job Specification
+
+This guide covers the JSON syntax for submitting jobs to Nomad. A useful command
+for generating valid JSON versions of HCL jobs is:
+
+```shell-session
+$ nomad job run -output my-job.nomad
+```
+
+## Syntax
+
+Below is the JSON representation of the job outputted by `$ nomad init`:
+
+```json
+{
+ "Job": {
+ "ID": "example",
+ "Name": "example",
+ "Type": "service",
+ "Priority": 50,
+ "Datacenters": ["dc1"],
+ "TaskGroups": [
+ {
+ "Name": "cache",
+ "Count": 1,
+ "Migrate": {
+ "HealthCheck": "checks",
+ "HealthyDeadline": 300000000000,
+ "MaxParallel": 1,
+ "MinHealthyTime": 10000000000
+ },
+ "Tasks": [
+ {
+ "Name": "redis",
+ "Driver": "docker",
+ "User": "",
+ "Config": {
+ "image": "redis:3.2",
+ "port_map": [
+ {
+ "db": 6379
+ }
+ ]
+ },
+ "Services": [
+ {
+ "Id": "",
+ "Name": "redis-cache",
+ "Tags": ["global", "cache"],
+ "Meta": {
+ "meta": "for my service"
+ },
+ "PortLabel": "db",
+ "AddressMode": "",
+ "Checks": [
+ {
+ "Id": "",
+ "Name": "alive",
+ "Type": "tcp",
+ "Command": "",
+ "Args": null,
+ "Header": {},
+ "Method": "",
+ "Path": "",
+ "Protocol": "",
+ "PortLabel": "",
+ "Interval": 10000000000,
+ "Timeout": 2000000000,
+ "InitialStatus": "",
+ "TLSSkipVerify": false,
+ "CheckRestart": {
+ "Limit": 3,
+ "Grace": 30000000000,
+ "IgnoreWarnings": false
+ }
+ }
+ ]
+ }
+ ],
+ "Resources": {
+ "CPU": 500,
+ "MemoryMB": 256,
+ "Networks": [
+ {
+ "Device": "",
+ "CIDR": "",
+ "IP": "",
+ "MBits": 10,
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 0
+ }
+ ]
+ }
+ ]
+ },
+ "Leader": false
+ }
+ ],
+ "RestartPolicy": {
+ "Interval": 1800000000000,
+ "Attempts": 2,
+ "Delay": 15000000000,
+ "Mode": "fail"
+ },
+ "ReschedulePolicy": {
+ "Attempts": 10,
+ "Delay": 30000000000,
+ "DelayFunction": "exponential",
+ "Interval": 0,
+ "MaxDelay": 3600000000000,
+ "Unlimited": true
+ },
+ "EphemeralDisk": {
+ "SizeMB": 300
+ }
+ }
+ ],
+ "Update": {
+ "MaxParallel": 1,
+ "MinHealthyTime": 10000000000,
+ "HealthyDeadline": 180000000000,
+ "AutoRevert": false,
+ "Canary": 0
+ }
+ }
+}
+```
+
+The example JSON could be submitted as a job using the following:
+
+```shell-session
+$ curl -XPUT -d @example.json http://127.0.0.1:4646/v1/job/example
+{
+ "EvalID": "5d6ded54-0b2a-8858-6583-be5f476dec9d",
+ "EvalCreateIndex": 12,
+ "JobModifyIndex": 11,
+ "Warnings": "",
+ "Index": 12,
+ "LastContact": 0,
+ "KnownLeader": false
+}
+```
+
+## Syntax Reference
+
+Following is a syntax reference for the possible keys that are supported and
+their default values if any for each type of object.
+
+### Job
+
+The `Job` object supports the following keys:
+
+- `AllAtOnce` - Controls whether the scheduler can make partial placements if
+ optimistic scheduling resulted in an oversubscribed node. This does not
+ control whether all allocations for the job, where all would be the desired
+ count for each task group, must be placed atomically. This should only be
+ used for special circumstances. Defaults to `false`.
+
+- `Constraints` - A list to define additional constraints where a job can be
+ run. See the constraint reference for more details.
+
+- `Affinities` - A list to define placement preferences on nodes where a job can be
+ run. See the affinity reference for more details.
+
+- `Spreads` - A list to define allocation spread across attributes. See the spread reference
+ for more details.
+
+- `Datacenters` - A list of datacenters in the region which are eligible
+ for task placement. This must be provided, and does not have a default.
+
+- `TaskGroups` - A list to define additional task groups. See the task group
+ reference for more details.
+
+- `Meta` - Annotates the job with opaque metadata.
+
+- `Namespace` - The namespace to execute the job in, defaults to "default".
+ Values other than default are not allowed in non-Enterprise versions of Nomad.
+
+- `ParameterizedJob` - Specifies the job as a parameterized job such that it can
+ be dispatched against. The `ParameterizedJob` object supports the following
+ attributes:
+
+ - `MetaOptional` - Specifies the set of metadata keys that may be provided
+ when dispatching against the job as a string array.
+
+ - `MetaRequired` - Specifies the set of metadata keys that must be provided
+ when dispatching against the job as a string array.
+
+ - `Payload` - Specifies the requirement of providing a payload when
+ dispatching against the parameterized job. The options for this field are
+ "optional", "required" and "forbidden". The default value is "optional".
+
+- `Payload` - The payload may not be set when submitting a job but may appear in
+ a dispatched job. The `Payload` will be a base64 encoded string containing the
+ payload that the job was dispatched with. The `payload` has a **maximum size
+ of 16 KiB**.
+
+- `Priority` - Specifies the job priority which is used to prioritize
+ scheduling and access to resources. Must be between 1 and 100 inclusively,
+ and defaults to 50.
+
+- `Region` - The region to run the job in, defaults to "global".
+
+- `Type` - Specifies the job type and switches which scheduler
+ is used. Nomad provides the `service`, `system` and `batch` schedulers,
+ and defaults to `service`. To learn more about each scheduler type visit
+ [here](/docs/schedulers)
+
+- `Update` - Specifies an update strategy to be applied to all task groups
+ within the job. When specified both at the job level and the task group level,
+ the update blocks are merged with the task group's taking precedence. For more
+ details on the update stanza, please see below.
+
+- `Periodic` - `Periodic` allows the job to be scheduled at fixed times, dates
+ or intervals. The periodic expression is always evaluated in the UTC
+ timezone to ensure consistent evaluation when Nomad Servers span multiple
+ time zones. The `Periodic` object is optional and supports the following attributes:
+
+ - `Enabled` - `Enabled` determines whether the periodic job will spawn child
+ jobs.
+
+ - `TimeZone` - Specifies the time zone to evaluate the next launch interval
+ against. This is useful when wanting to account for day light savings in
+ various time zones. The time zone must be parsable by Golang's
+ [LoadLocation](https://golang.org/pkg/time/#LoadLocation). The default is
+ UTC.
+
+ - `SpecType` - `SpecType` determines how Nomad is going to interpret the
+ periodic expression. `cron` is the only supported `SpecType` currently.
+
+ - `Spec` - A cron expression configuring the interval the job is launched
+ at. Supports predefined expressions such as "@daily" and "@weekly" See
+ [here](https://github.com/gorhill/cronexpr#implementation) for full
+ documentation of supported cron specs and the predefined expressions.
+
+ - `ProhibitOverlap` - `ProhibitOverlap` can be set
+ to true to enforce that the periodic job doesn't spawn a new instance of the
+ job if any of the previous jobs are still running. It is defaulted to false.
+
+ An example `periodic` block:
+
+ ```json
+ {
+ "Periodic": {
+ "Spec": "*/15 - *",
+ "TimeZone": "Europe/Berlin",
+ "SpecType": "cron",
+ "Enabled": true,
+ "ProhibitOverlap": true
+ }
+ }
+ ```
+
+- `ReschedulePolicy` - Specifies a reschedule policy to be applied to all task groups
+ within the job. When specified both at the job level and the task group level,
+ the reschedule blocks are merged, with the task group's taking precedence. For more
+ details on `ReschedulePolicy`, please see below.
+
+### Task Group
+
+`TaskGroups` is a list of `TaskGroup` objects, each supports the following
+attributes:
+
+- `Constraints` - This is a list of `Constraint` objects. See the constraint
+ reference for more details.
+
+- `Affinities` - This is a list of `Affinity` objects. See the affinity
+ reference for more details.
+
+- `Spreads` - This is a list of `Spread` objects. See the spread
+ reference for more details.
+
+- `Count` - Specifies the number of the task groups that should
+ be running. Must be non-negative, defaults to one.
+
+- `Meta` - A key-value map that annotates the task group with opaque metadata.
+
+- `Migrate` - Specifies a migration strategy to be applied during [node
+ drains][drain].
+
+ - `HealthCheck` - One of `checks` or `task_states`. Indicates how task health
+ should be determined: either via Consul health checks or whether the task
+ was able to run successfully.
+
+ - `HealthyDeadline` - Specifies duration a task must become healthy within
+ before it is considered unhealthy.
+
+ - `MaxParallel` - Specifies how many allocations may be migrated at once.
+
+ - `MinHealthyTime` - Specifies duration a task must be considered healthy
+ before the migration is considered healthy.
+
+- `Name` - The name of the task group. Must be specified.
+
+- `RestartPolicy` - Specifies the restart policy to be applied to tasks in this group.
+ If omitted, a default policy for batch and non-batch jobs is used based on the
+ job type. See the [restart policy reference](#restart_policy) for more details.
+
+- `ReschedulePolicy` - Specifies the reschedule policy to be applied to tasks in this group.
+ If omitted, a default policy is used for batch and service jobs. System jobs are not eligible
+ for rescheduling. See the [reschedule policy reference](#reschedule_policy) for more details.
+
+- `Scaling` - Specifies the autoscaling policy for the task group. This is primarily for supporting
+ external autoscalers. See the [scaling policy reference](#scaling_policy) for more details.
+
+- `EphemeralDisk` - Specifies the group's ephemeral disk requirements. See the
+ [ephemeral disk reference](#ephemeral_disk) for more details.
+
+- `Update` - Specifies an update strategy to be applied to all task groups
+ within the job. When specified both at the job level and the task group level,
+ the update blocks are merged with the task group's taking precedence. For more
+ details on the update stanza, please see below.
+
+- `Tasks` - A list of `Task` object that are part of the task group.
+
+### Task
+
+The `Task` object supports the following keys:
+
+- `Artifacts` - `Artifacts` is a list of `Artifact` objects which define
+ artifacts to be downloaded before the task is run. See the artifacts
+ reference for more details.
+
+- `Config` - A map of key-value configuration passed into the driver
+ to start the task. The details of configurations are specific to
+ each driver.
+
+- `Constraints` - This is a list of `Constraint` objects. See the constraint
+ reference for more details.
+
+- `Affinities` - This is a list of `Affinity` objects. See the affinity
+ reference for more details.
+
+- `Spreads` - This is a list of `Spread` objects. See the spread
+ reference for more details.
+
+- `DispatchPayload` - Configures the task to have access to dispatch payloads.
+ The `DispatchPayload` object supports the following attributes:
+
+ - `File` - Specifies the file name to write the content of dispatch payload
+ to. The file is written relative to the task's local directory.
+
+- `Driver` - Specifies the task driver that should be used to run the
+ task. See the [driver documentation](/docs/drivers) for what
+ is available. Examples include `docker`, `qemu`, `java`, and `exec`.
+
+- `Env` - A map of key-value representing environment variables that
+ will be passed along to the running process. Nomad variables are
+ interpreted when set in the environment variable values. See the table of
+ interpreted variables [here](/docs/runtime/interpolation).
+
+ For example the below environment map will be reinterpreted:
+
+ ```json
+ {
+ "Env": {
+ "NODE_CLASS": "${nomad.class}"
+ }
+ }
+ ```
+
+- `KillSignal` - Specifies a configurable kill signal for a task, where the
+ default is SIGINT. Note that this is only supported for drivers which accept
+ sending signals (currently `docker`, `exec`, `raw_exec`, and `java` drivers).
+
+- `KillTimeout` - `KillTimeout` is a time duration in nanoseconds. It can be
+ used to configure the time between signaling a task it will be killed and
+ actually killing it. Drivers first sends a task the `SIGINT` signal and then
+ sends `SIGTERM` if the task doesn't die after the `KillTimeout` duration has
+ elapsed. The default `KillTimeout` is 5 seconds.
+
+- `Leader` - Specifies whether the task is the leader task of the task group. If
+ set to true, when the leader task completes, all other tasks within the task
+ group will be gracefully shutdown.
+
+- `LogConfig` - This allows configuring log rotation for the `stdout` and `stderr`
+ buffers of a Task. See the log rotation reference below for more details.
+
+- `Meta` - Annotates the task group with opaque metadata.
+
+- `Name` - The name of the task. This field is required.
+
+- `Resources` - Provides the resource requirements of the task.
+ See the resources reference for more details.
+
+- `RestartPolicy` - Specifies the task-specific restart policy.
+ If omitted, the restart policy from the encapsulating task group is used. If both
+ are present, they are merged. See the [restart policy reference](#restart_policy)
+ for more details.
+
+- `Services` - `Services` is a list of `Service` objects. Nomad integrates with
+ Consul for service discovery. A `Service` object represents a routable and
+ discoverable service on the network. Nomad automatically registers when a task
+ is started and de-registers it when the task transitions to the dead state.
+ [Click here](/docs/integrations/consul-integration#service-discovery) to learn more about
+ services. Below is the fields in the `Service` object:
+
+ - `Name`: An explicit name for the Service. Nomad will replace `${JOB}`,
+ `${TASKGROUP}` and `${TASK}` by the name of the job, task group or task,
+ respectively. `${BASE}` expands to the equivalent of
+ `${JOB}-${TASKGROUP}-${TASK}`, and is the default name for a Service.
+ Each service defined for a given task must have a distinct name, so if
+ a task has multiple services only one of them can use the default name
+ and the others must be explicitly named. Names must adhere to
+ [RFC-1123 §2.1](https://tools.ietf.org/html/rfc1123#section-2) and are
+ limited to alphanumeric and hyphen characters (i.e. `[a-z0-9\-]`), and be
+ less than 64 characters in length.
+
+ - `Tags`: A list of string tags associated with this Service. String
+ interpolation is supported in tags.
+
+ - `Meta`: A key-value map that annotates the Consul service with
+ user-defined metadata. String interpolation is supported in meta.
+
+ - `CanaryTags`: A list of string tags associated with this Service while it
+ is a canary. Once the canary is promoted, the registered tags will be
+ updated to the set defined in the `Tags` field. String interpolation is
+ supported in tags.
+
+ - `CanaryMeta`: A key-value map that annotates this Service while it
+ is a canary. Once the canary is promoted, the registered meta will be
+ updated to the set defined in the `Meta` field or removed if the `Meta`
+ field is not set. String interpolation is supported in meta keys and
+ values.
+
+ - `PortLabel`: `PortLabel` is an optional string and is used to associate
+ a port with the service. If specified, the port label must match one
+ defined in the resources block. This could be a label of either a
+ dynamic or a static port.
+
+ - `AddressMode`: Specifies what address (host or driver-specific) this
+ service should advertise. This setting is supported in Docker since
+ Nomad 0.6 and rkt since Nomad 0.7. Valid options are:
+
+ - `auto` - Allows the driver to determine whether the host or driver
+ address should be used. Defaults to `host` and only implemented by
+ Docker. If you use a Docker network plugin such as weave, Docker will
+ automatically use its address.
+
+ - `driver` - Use the IP specified by the driver, and the port specified
+ in a port map. A numeric port may be specified since port maps aren't
+ required by all network plugins. Useful for advertising SDN and
+ overlay network addresses. Task will fail if driver network cannot be
+ determined. Only implemented for Docker and rkt.
+
+ - `host` - Use the host IP and port.
+
+ - `Checks`: `Checks` is an array of check objects. A check object defines a
+ health check associated with the service. Nomad supports the `script`,
+ `http` and `tcp` Consul Checks. Script checks are not supported for the
+ qemu driver since the Nomad client doesn't have access to the file system
+ of a task using the Qemu driver.
+
+ - `Type`: This indicates the check types supported by Nomad. Valid
+ options are currently `script`, `http` and `tcp`.
+
+ - `Name`: The name of the health check.
+
+ - `AddressMode`: Same as `AddressMode` on `Service`. Unlike services,
+ checks do not have an `auto` address mode as there's no way for
+ Nomad to know which is the best address to use for checks. Consul
+ needs access to the address for any HTTP or TCP checks. Added in
+ Nomad 0.7.1. Unlike `PortLabel`, this setting is _not_ inherited
+ from the `Service`.
+
+ - `PortLabel`: Specifies the label of the port on which the check will
+ be performed. Note this is the _label_ of the port and not the port
+ number unless `AddressMode: "driver"`. The port label must match one
+ defined in the Network stanza. If a port value was declared on the
+ `Service`, this will inherit from that value if not supplied. If
+ supplied, this value takes precedence over the `Service.PortLabel`
+ value. This is useful for services which operate on multiple ports.
+ `http` and `tcp` checks require a port while `script` checks do not.
+ Checks will use the host IP and ports by default. In Nomad 0.7.1 or
+ later numeric ports may be used if `AddressMode: "driver"` is set on
+ the check.
+
+ - `Header`: Headers for HTTP checks. Should be an object where the values are an
+ array of values. Headers will be written once for each value.
+
+ - `Interval`: This indicates the frequency of the health checks that
+ Consul will perform.
+
+ - `Timeout`: This indicates how long Consul will wait for a health
+ check query to succeed.
+
+ - `Method`: The HTTP method to use for HTTP checks. Defaults to GET.
+
+ - `Path`: The path of the HTTP endpoint which Consul will query to query
+ the health of a service if the type of the check is `http`. Nomad
+ will add the IP of the service and the port, users are only required
+ to add the relative URL of the health check endpoint. Absolute paths
+ are not allowed.
+
+ - `Protocol`: This indicates the protocol for the HTTP checks. Valid
+ options are `http` and `https`. We default it to `http`.
+
+ - `Command`: This is the command that the Nomad client runs for doing
+ script based health check.
+
+ - `Args`: Additional arguments to the `command` for script based health
+ checks.
+
+ - `TLSSkipVerify`: If true, Consul will not attempt to verify the
+ certificate when performing HTTPS checks. Requires Consul >= 0.7.2.
+
+ - `CheckRestart`: `CheckRestart` is an object which enables
+ restarting of tasks based upon Consul health checks.
+
+ - `Limit`: The number of unhealthy checks allowed before the
+ service is restarted. Defaults to `0` which disables health-based restarts.
+
+ - `Grace`: The duration to wait after a task starts or restarts
+ before counting unhealthy checks count against the limit. Defaults to "1s".
+
+ - `IgnoreWarnings`: Treat checks that are warning as passing.
+ Defaults to false which means warnings are considered unhealthy.
+
+- `ShutdownDelay` - Specifies the duration to wait when killing a task between
+ removing it from Consul and sending it a shutdown signal. Ideally services
+ would fail healthchecks once they receive a shutdown signal. Alternatively
+ `ShutdownDelay` may be set to give in flight requests time to complete before
+ shutting down.
+
+- `Templates` - Specifies the set of [`Template`](#template) objects to render for the task.
+ Templates can be used to inject both static and dynamic configuration with
+ data populated from environment variables, Consul and Vault.
+
+- `User` - Set the user that will run the task. It defaults to the same user
+ the Nomad client is being run as. This can only be set on Linux platforms.
+
+### Resources
+
+The `Resources` object supports the following keys:
+
+- `CPU` - The CPU required in MHz.
+
+- `MemoryMB` - The memory required in MB.
+
+- `Networks` - A list of network objects.
+
+- `Devices` - A list of device objects.
+
+The Network object supports the following keys:
+
+- `MBits` - The number of MBits in bandwidth required.
+
+Nomad can allocate two types of ports to a task - Dynamic and Static/Reserved
+ports. A network object allows the user to specify a list of `DynamicPorts` and
+`ReservedPorts`. Each object supports the following attributes:
+
+- `Value` - The port number for static ports. If the port is dynamic, then this
+ attribute is ignored.
+- `Label` - The label to annotate a port so that it can be referred in the
+ service discovery block or environment variables.
+
+The Device object supports the following keys:
+
+- `Name` - Specifies the device required. The following inputs are valid:
+
+ - ``: If a single value is given, it is assumed to be the device
+ type, such as "gpu", or "fpga".
+
+ - `/`: If two values are given separated by a `/`, the
+ given device type will be selected, constraining on the provided vendor.
+ Examples include "nvidia/gpu" or "amd/gpu".
+
+ - `//`: If three values are given separated by a `/`, the
+ given device type will be selected, constraining on the provided vendor, and
+ model name. Examples include "nvidia/gpu/1080ti" or "nvidia/gpu/2080ti".
+
+* `Count` - The count of devices being requested per task. Defaults to 1.
+
+* `Constraints` - A list to define constraints on which device can satisfy the
+ request. See the constraint reference for more details.
+
+* `Affinities` - A list to define preferences for which device should be
+ chosen. See the affinity reference for more details.
+
+
+
+### Ephemeral Disk
+
+The `EphemeralDisk` object supports the following keys:
+
+- `Migrate` - Specifies that the Nomad client should make a best-effort attempt
+ to migrate the data from a remote machine if placement cannot be made on the
+ original node. During data migration, the task will block starting until the
+ data migration has completed. Value is a boolean and the default is false.
+
+- `SizeMB` - Specifies the size of the ephemeral disk in MB. Default is 300.
+
+- `Sticky` - Specifies that Nomad should make a best-effort attempt to place the
+ updated allocation on the same machine. This will move the `local/` and
+ `alloc/data` directories to the new allocation. Value is a boolean and the
+ default is false.
+
+
+
+### Reschedule Policy
+
+The `ReschedulePolicy` object supports the following keys:
+
+- `Attempts` - `Attempts` is the number of reschedule attempts allowed
+ in an `Interval`.
+
+- `Interval` - `Interval` is a time duration that is specified in nanoseconds.
+ The `Interval` is a sliding window within which at most `Attempts` number
+ of reschedule attempts are permitted.
+
+- `Delay` - A duration to wait before attempting rescheduling. It is specified in
+ nanoseconds.
+
+- `DelayFunction` - Specifies the function that is used to calculate subsequent reschedule delays.
+ The initial delay is specified by the `Delay` parameter. Allowed values for `DelayFunction` are listed below:
+
+ - `constant` - The delay between reschedule attempts stays at the `Delay` value.
+ - `exponential` - The delay between reschedule attempts doubles.
+ - `fibonacci` - The delay between reschedule attempts is calculated by adding the two most recent
+ delays applied. For example if `Delay` is set to 5 seconds, the next five reschedule attempts will be
+ delayed by 5 seconds, 5 seconds, 10 seconds, 15 seconds, and 25 seconds respectively.
+
+- `MaxDelay` - `MaxDelay` is an upper bound on the delay beyond which it will not increase. This parameter is used when
+ `DelayFunction` is `exponential` or `fibonacci`, and is ignored when `constant` delay is used.
+
+- `Unlimited` - `Unlimited` enables unlimited reschedule attempts. If this is set to true
+ the `Attempts` and `Interval` fields are not used.
+
+
+
+### Restart Policy
+
+The `RestartPolicy` object supports the following keys:
+
+- `Attempts` - `Attempts` is the number of restarts allowed in an `Interval`.
+
+- `Interval` - `Interval` is a time duration that is specified in nanoseconds.
+ The `Interval` begins when the first task starts and ensures that only
+ `Attempts` number of restarts happens within it. If more than `Attempts`
+ number of failures happen, behavior is controlled by `Mode`.
+
+- `Delay` - A duration to wait before restarting a task. It is specified in
+ nanoseconds. A random jitter of up to 25% is added to the delay.
+
+- `Mode` - `Mode` is given as a string and controls the behavior when the task
+ fails more than `Attempts` times in an `Interval`. Possible values are listed
+ below:
+
+ - `delay` - `delay` will delay the next restart until the next `Interval` is
+ reached.
+
+ - `fail` - `fail` will not restart the task again.
+
+### Update
+
+Specifies the task group update strategy. When omitted, rolling updates are
+disabled. The update stanza can be specified at the job or task group level.
+When specified at the job, the update stanza is inherited by all task groups.
+When specified in both the job and in a task group, the stanzas are merged with
+the task group's taking precedence. The `Update` object supports the following
+attributes:
+
+- `MaxParallel` - `MaxParallel` is given as an integer value and specifies
+ the number of tasks that can be updated at the same time.
+
+- `HealthCheck` - Specifies the mechanism in which allocations health is
+ determined. The potential values are:
+
+ - "checks" - Specifies that the allocation should be considered healthy when
+ all of its tasks are running and their associated checks are healthy,
+ and unhealthy if any of the tasks fail or not all checks become healthy.
+ This is a superset of "task_states" mode.
+
+ - "task_states" - Specifies that the allocation should be considered healthy
+ when all its tasks are running and unhealthy if tasks fail.
+
+ - "manual" - Specifies that Nomad should not automatically determine health
+ and that the operator will specify allocation health using the [HTTP
+ API](/api-docs/deployments#set-allocation-health-in-deployment).
+
+- `MinHealthyTime` - Specifies the minimum time the allocation must be in the
+ healthy state before it is marked as healthy and unblocks further allocations
+ from being updated.
+
+- `HealthyDeadline` - Specifies the deadline in which the allocation must be
+ marked as healthy after which the allocation is automatically transitioned to
+ unhealthy.
+
+- `ProgressDeadline` - Specifies the deadline in which an allocation must be
+ marked as healthy. The deadline begins when the first allocation for the
+ deployment is created and is reset whenever an allocation as part of the
+ deployment transitions to a healthy state. If no allocation transitions to the
+ healthy state before the progress deadline, the deployment is marked as
+ failed. If the `progress_deadline` is set to `0`, the first allocation to be
+ marked as unhealthy causes the deployment to fail.
+
+- `AutoRevert` - Specifies if the job should auto-revert to the last stable job
+ on deployment failure. A job is marked as stable if all the allocations as
+ part of its deployment were marked healthy.
+
+- `Canary` - Specifies that changes to the job that would result in destructive
+ updates should create the specified number of canaries without stopping any
+ previous allocations. Once the operator determines the canaries are healthy,
+ they can be promoted which unblocks a rolling update of the remaining
+ allocations at a rate of `max_parallel`.
+
+- `AutoPromote` - Specifies if the job should automatically promote to
+ the new deployment if all canaries become healthy.
+
+- `Stagger` - Specifies the delay between migrating allocations off nodes marked
+ for draining.
+
+An example `Update` block:
+
+```json
+{
+ "Update": {
+ "MaxParallel": 3,
+ "HealthCheck": "checks",
+ "MinHealthyTime": 15000000000,
+ "HealthyDeadline": 180000000000,
+ "AutoRevert": false,
+ "AutoPromote": false,
+ "Canary": 1
+ }
+}
+```
+
+### Constraint
+
+The `Constraint` object supports the following keys:
+
+- `LTarget` - Specifies the attribute to examine for the
+ constraint. See the table of attributes [here](/docs/runtime/interpolation#interpreted_node_vars).
+
+- `RTarget` - Specifies the value to compare the attribute against.
+ This can be a literal value, another attribute or a regular expression if
+ the `Operator` is in "regexp" mode.
+
+- `Operand` - Specifies the test to be performed on the two targets. It takes on the
+ following values:
+
+ - `regexp` - Allows the `RTarget` to be a regular expression to be matched.
+
+ - `set_contains` - Allows the `RTarget` to be a comma separated list of values
+ that should be contained in the LTarget's value.
+
+ - `distinct_hosts` - If set, the scheduler will not co-locate any task groups on the same
+ machine. This can be specified as a job constraint which applies the
+ constraint to all task groups in the job, or as a task group constraint which
+ scopes the effect to just that group. The constraint may not be
+ specified at the task level.
+
+ Placing the constraint at both the job level and at the task group level is
+ redundant since when placed at the job level, the constraint will be applied
+ to all task groups. When specified, `LTarget` and `RTarget` should be
+ omitted.
+
+ - `distinct_property` - If set, the scheduler selects nodes that have a
+ distinct value of the specified property. The `RTarget` specifies how
+ many allocations are allowed to share the value of a property. The
+ `RTarget` must be 1 or greater and if omitted, defaults to 1. This can
+ be specified as a job constraint which applies the constraint to all
+ task groups in the job, or as a task group constraint which scopes the
+ effect to just that group. The constraint may not be specified at the
+ task level.
+
+ Placing the constraint at both the job level and at the task group level is
+ redundant since when placed at the job level, the constraint will be applied
+ to all task groups. When specified, `LTarget` should be the property
+ that should be distinct and `RTarget` should be omitted.
+
+ - Comparison Operators - `=`, `==`, `is`, `!=`, `not`, `>`, `>=`, `<`, `<=`. The
+ ordering is compared lexically.
+
+### Affinity
+
+Affinities allow operators to express placement preferences. More details on how they work
+are described in [affinities](/docs/job-specification/affinity)
+
+The `Affinity` object supports the following keys:
+
+- `LTarget` - Specifies the attribute to examine for the
+ affinity. See the table of attributes [here](/docs/runtime/interpolation#interpreted_node_vars).
+
+- `RTarget` - Specifies the value to compare the attribute against.
+ This can be a literal value, another attribute or a regular expression if
+ the `Operator` is in "regexp" mode.
+
+- `Operand` - Specifies the test to be performed on the two targets. It takes on the
+ following values:
+
+ - `regexp` - Allows the `RTarget` to be a regular expression to be matched.
+
+ - `set_contains_all` - Allows the `RTarget` to be a comma separated list of values
+ that should be contained in the LTarget's value.
+
+ - `set_contains_any` - Allows the `RTarget` to be a comma separated list of values
+ any of which should be contained in the LTarget's value.
+
+ - Comparison Operators - `=`, `==`, `is`, `!=`, `not`, `>`, `>=`, `<`, `<=`. The
+ ordering is compared lexically.
+
+- `Weight` - A non zero weight, valid values are from -100 to 100. Used to express
+ relative preference when there is more than one affinity.
+
+### Log Rotation
+
+The `LogConfig` object configures the log rotation policy for a task's `stdout` and
+`stderr`. The `LogConfig` object supports the following attributes:
+
+- `MaxFiles` - The maximum number of rotated files Nomad will retain for
+ `stdout` and `stderr`, each tracked individually.
+
+- `MaxFileSizeMB` - The size of each rotated file. The size is specified in
+ `MB`.
+
+If the amount of disk resource requested for the task is less than the total
+amount of disk space needed to retain the rotated set of files, Nomad will return
+a validation error when a job is submitted.
+
+```json
+{
+ "LogConfig": {
+ "MaxFiles": 3,
+ "MaxFileSizeMB": 10
+ }
+}
+```
+
+In the above example we have asked Nomad to retain 3 rotated files for both
+`stderr` and `stdout` and size of each file is 10 MB. The minimum disk space that
+would be required for the task would be 60 MB.
+
+### Artifact
+
+Nomad downloads artifacts using
+[`go-getter`](https://github.com/hashicorp/go-getter). The `go-getter` library
+allows downloading of artifacts from various sources using a URL as the input
+source. The key-value pairs given in the `options` block map directly to
+parameters appended to the supplied `source` URL. These are then used by
+`go-getter` to appropriately download the artifact. `go-getter` also has a CLI
+tool to validate its URL and can be used to check if the Nomad `artifact` is
+valid.
+
+Nomad allows downloading `http`, `https`, and `S3` artifacts. If these artifacts
+are archives (zip, tar.gz, bz2, etc.), these will be unarchived before the task
+is started.
+
+The `Artifact` object supports the following keys:
+
+- `GetterSource` - The path to the artifact to download.
+
+- `RelativeDest` - An optional path to download the artifact into relative to the
+ root of the task's directory. If omitted, it will default to `local/`.
+
+- `GetterOptions` - A `map[string]string` block of options for `go-getter`.
+ Full documentation of supported options are available
+ [here](https://github.com/hashicorp/go-getter/tree/ef5edd3d8f6f482b775199be2f3734fd20e04d4a#protocol-specific-options-1).
+ An example is given below:
+
+```json
+{
+ "GetterOptions": {
+ "checksum": "md5:c4aa853ad2215426eb7d70a21922e794",
+
+ "aws_access_key_id": "",
+ "aws_access_key_secret": "",
+ "aws_access_token": ""
+ }
+}
+```
+
+An example of downloading and unzipping an archive is as simple as:
+
+```json
+{
+ "Artifacts": [
+ {
+ "GetterSource": "https://example.com/my.zip",
+ "GetterOptions": {
+ "checksum": "md5:7f4b3e3b4dd5150d4e5aaaa5efada4c3"
+ }
+ }
+ ]
+}
+```
+
+#### S3 examples
+
+S3 has several different types of addressing and more detail can be found
+[here](http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro)
+
+S3 region specific endpoints can be found
+[here](http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
+
+Path based style:
+
+```json
+{
+ "Artifacts": [
+ {
+ "GetterSource": "https://my-bucket-example.s3-us-west-2.amazonaws.com/my_app.tar.gz"
+ }
+ ]
+}
+```
+
+or to override automatic detection in the URL, use the S3-specific syntax
+
+```json
+{
+ "Artifacts": [
+ {
+ "GetterSource": "s3::https://my-bucket-example.s3-eu-west-1.amazonaws.com/my_app.tar.gz"
+ }
+ ]
+}
+```
+
+Virtual hosted based style
+
+```json
+{
+ "Artifacts": [
+ {
+ "GetterSource": "my-bucket-example.s3-eu-west-1.amazonaws.com/my_app.tar.gz"
+ }
+ ]
+}
+```
+
+### Template
+
+The `Template` block instantiates an instance of a template renderer. This
+creates a convenient way to ship configuration files that are populated from
+environment variables, Consul data, Vault secrets, or just general
+configurations within a Nomad task.
+
+Nomad utilizes a tool called [Consul Template][ct]. Since Nomad v0.5.3, the
+template can reference [Nomad's runtime environment variables][env]. For a full
+list of the API template functions, please refer to the [Consul Template
+README][ct].
+
+`Template` object supports following attributes:
+
+- `ChangeMode` - Specifies the behavior Nomad should take if the rendered
+ template changes. The default value is `"restart"`. The possible values are:
+
+ - `"noop"` - take no action (continue running the task)
+ - `"restart"` - restart the task
+ - `"signal"` - send a configurable signal to the task
+
+- `ChangeSignal` - Specifies the signal to send to the task as a string like
+ "SIGUSR1" or "SIGINT". This option is required if the `ChangeMode` is
+ `signal`.
+
+- `DestPath` - Specifies the location where the resulting template should be
+ rendered, relative to the task directory.
+
+- `EmbeddedTmpl` - Specifies the raw template to execute. One of `SourcePath`
+ or `EmbeddedTmpl` must be specified, but not both. This is useful for smaller
+ templates, but we recommend using `SourcePath` for larger templates.
+
+- `Envvars` - Specifies the template should be read back as environment
+ variables for the task.
+
+- `LeftDelim` - Specifies the left delimiter to use in the template. The default
+ is "{{" for some templates, it may be easier to use a different delimiter that
+ does not conflict with the output file itself.
+
+- `Perms` - Specifies the rendered template's permissions. File permissions are
+ given as octal of the Unix file permissions `rwxrwxrwx`.
+
+- `RightDelim` - Specifies the right delimiter to use in the template. The default
+ is "}}" for some templates, it may be easier to use a different delimiter that
+ does not conflict with the output file itself.
+
+- `SourcePath` - Specifies the path to the template to be rendered. `SourcePath`
+ is mutually exclusive with `EmbeddedTmpl` attribute. The source can be fetched
+ using an [`Artifact`](#artifact) resource. The template must exist on the
+ machine prior to starting the task; it is not possible to reference a template
+ inside of a Docker container, for example.
+
+- `Splay` - Specifies a random amount of time to wait between 0 ms and the given
+ splay value before invoking the change mode. Should be specified in
+ nanoseconds.
+
+- `VaultGrace` - [Deprecated](https://github.com/hashicorp/consul-template/issues/1268)
+
+```json
+{
+ "Templates": [
+ {
+ "SourcePath": "local/config.conf.tpl",
+ "DestPath": "local/config.conf",
+ "EmbeddedTmpl": "",
+ "ChangeMode": "signal",
+ "ChangeSignal": "SIGUSR1",
+ "Splay": 5000000000
+ }
+ ]
+}
+```
+
+### Spread
+
+Spread allow operators to target specific percentages of allocations based on
+any node attribute or metadata. More details on how they work are described
+in [spread](/docs/job-specification/spread).
+
+The `Spread` object supports the following keys:
+
+- `Attribute` - Specifies the attribute to examine for the
+ spread. See the [table of attributes](/docs/runtime/interpolation#interpreted_node_vars) for examples.
+
+- `SpreadTarget` - Specifies a list of attribute values and percentages. This is an optional field, when
+ left empty Nomad will evenly spread allocations across values of the attribute.
+
+ - `Value` - The value of a specific target attribute, like "dc1" for `${node.datacenter}`.
+ - `Percent` - Desired percentage of allocations for this attribute value. The sum of
+ all spread target percentages must add up to 100.
+
+- `Weight` - A non zero weight, valid values are from -100 to 100. Used to express
+ relative preference when there is more than one spread or affinity.
+
+
+
+### Scaling
+
+Scaling policies allow operators to attach autoscaling configuration to a task group. This information
+can be queried by [external autoscalers](https://github.com/hashicorp/nomad-autoscaler).
+
+The `Scaling` object supports the following keys:
+
+- `Min` - The minimum allowable count for the task group. This is optional; if absent, the default
+ is the `Count` specified in the task group. Attempts to set the task group `Count` below `Min` will
+ result in a 400 error during job registration.
+
+- `Max` - The maximum allowable count for the task group. This is required if a scaling policy is provided.
+ This must be larger than `Min`. Attempts to set the task group `Count` above `Max` wil result in a 400
+ error during job registration.
+
+- `Enabled` - An optional boolean (default: `true`). This indicates to the autoscaler that this
+ scaling policy should be ignored. It is intended to allow autoscaling to be temporarily disabled
+ for a task group.
+
+- `Policy` - An optional JSON block. This is opaque to Nomad; see the documentation for the external
+ autoscaler (e.g., [nomad-autoscaler](https://github.com/hashicorp/nomad-autoscaler)).
+
+[ct]: https://github.com/hashicorp/consul-template 'Consul Template by HashiCorp'
+[drain]: /docs/commands/node/drain
+[env]: /docs/runtime/environment 'Nomad Runtime Environment'
diff --git a/content/nomad/v0.11.x/content/api-docs/libraries-and-sdks.mdx b/content/nomad/v0.11.x/content/api-docs/libraries-and-sdks.mdx
new file mode 100644
index 0000000000..b708c4e1da
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/libraries-and-sdks.mdx
@@ -0,0 +1,36 @@
+---
+layout: api
+page_title: Libraries and SDKs - HTTP API
+sidebar_title: Libraries & SDKs
+description: |-
+ There are many third-party libraries for interacting with Nomad's HTTP API.
+ This page lists the HashiCorp and community-maintained Nomad HTTP API client
+ libraries.
+---
+
+# Client Libraries & SDKs
+
+The programming libraries listed on this page can be used to consume the API
+more conveniently. Some are officially maintained while others are provided by
+the community.
+
+## Official Libraries
+
+- [`api`](https://github.com/hashicorp/nomad/tree/master/api) - Official Golang
+ client for the Nomad HTTP API
+
+- [`nomad-java-sdk`](https://github.com/hashicorp/nomad-java-sdk) - Official
+ Java client for the Nomad HTTP API.
+
+- [`nomad-ruby`](https://github.com/hashicorp/nomad-ruby) - Official Ruby client
+ for the Nomad HTTP API
+
+- [`nomad-scala-sdk`](https://github.com/hashicorp/nomad-scala-sdk) - Official
+ Scala client for the Nomad HTTP API.
+
+## Third-Party Libraries
+
+- [`python-nomad`](https://github.com/jrxfive/python-nomad) - Python client
+ for the Nomad HTTP API.
+
+_Want to see your library here? [Submit a Pull Request](https://github.com/hashicorp/nomad)._
diff --git a/content/nomad/v0.11.x/content/api-docs/metrics.mdx b/content/nomad/v0.11.x/content/api-docs/metrics.mdx
new file mode 100644
index 0000000000..d2d5407732
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/metrics.mdx
@@ -0,0 +1,97 @@
+---
+layout: api
+page_title: Metrics - HTTP API
+sidebar_title: Metrics
+description: The /metrics endpoint is used to view metrics for Nomad
+---
+
+# Metrics HTTP API
+
+The `/metrics` endpoint returns metrics for the current Nomad process.
+
+| Method | Path | Produces |
+| ------ | ------------- | ------------------ |
+| `GET` | `/v1/metrics` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Parameters
+
+- `format` `(string: "")` - Specifies the metrics format to be other than the
+ JSON default. Currently, only `prometheus` is supported as an alternative
+ format. This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl https://localhost:4646/v1/metrics
+```
+
+```shell-session
+$ curl https://localhost:4646/v1/metrics?format=prometheus
+```
+
+### Sample Response
+
+```json
+{
+ "Counters": [
+ {
+ "Count": 11,
+ "Labels": {},
+ "Max": 1.0,
+ "Mean": 1.0,
+ "Min": 1.0,
+ "Name": "nomad.nomad.rpc.query",
+ "Stddev": 0.0,
+ "Sum": 11.0
+ }
+ ],
+ "Gauges": [
+ {
+ "Labels": {
+ "node_id": "cd7c3e0c-0174-29dd-17ba-ea4609e0fd1f",
+ "datacenter": "dc1"
+ },
+ "Name": "nomad.client.allocations.blocked",
+ "Value": 0.0
+ },
+ {
+ "Labels": {
+ "datacenter": "dc1",
+ "node_id": "cd7c3e0c-0174-29dd-17ba-ea4609e0fd1f"
+ },
+ "Name": "nomad.client.allocations.migrating",
+ "Value": 0.0
+ }
+ ],
+ "Samples": [
+ {
+ "Count": 20,
+ "Labels": {},
+ "Max": 0.03544100001454353,
+ "Mean": 0.023678050097078084,
+ "Min": 0.00956599973142147,
+ "Name": "nomad.memberlist.gossip",
+ "Stddev": 0.005445327799243976,
+ "Sum": 0.4735610019415617
+ },
+ {
+ "Count": 1,
+ "Labels": {},
+ "Max": 0.0964059978723526,
+ "Mean": 0.0964059978723526,
+ "Min": 0.0964059978723526,
+ "Name": "nomad.nomad.client.update_status",
+ "Stddev": 0.0,
+ "Sum": 0.0964059978723526
+ }
+ ]
+}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/namespaces.mdx b/content/nomad/v0.11.x/content/api-docs/namespaces.mdx
new file mode 100644
index 0000000000..8173ddb14c
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/namespaces.mdx
@@ -0,0 +1,187 @@
+---
+layout: api
+page_title: Namespace - HTTP API
+sidebar_title: Namespaces
+description: The /namespace endpoints are used to query for and interact with namespaces.
+---
+
+# Namespace HTTP API
+
+The `/namespace` endpoints are used to query for and interact with namespaces.
+
+~> **Enterprise Only!** This API endpoint and functionality only exists in
+Nomad Enterprise. This is not present in the open source version of Nomad.
+
+## List Namespaces
+
+This endpoint lists all namespaces.
+
+| Method | Path | Produces |
+| ------ | ---------------- | ------------------ |
+| `GET` | `/v1/namespaces` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------------------------------------------------------------- |
+| `YES` | `namespace:*`
Any capability on the namespace authorizes the endpoint |
+
+### Parameters
+
+- `prefix` `(string: "")`- Specifies a string to filter namespaces on based on
+ an index prefix. This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/namespaces
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/namespaces?prefix=prod
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "CreateIndex": 31,
+ "Description": "Production API Servers",
+ "ModifyIndex": 31,
+ "Name": "api-prod",
+ "Quota": ""
+ },
+ {
+ "CreateIndex": 5,
+ "Description": "Default shared namespace",
+ "ModifyIndex": 5,
+ "Name": "default",
+ "Quota": ""
+ }
+]
+```
+
+## Read Namespace
+
+This endpoint reads information about a specific namespace.
+
+| Method | Path | Produces |
+| ------ | -------------------------- | ------------------ |
+| `GET` | `/v1/namespace/:namespace` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------------------------------------------------------------- |
+| `YES` | `namespace:*`
Any capability on the namespace authorizes the endpoint |
+
+### Parameters
+
+- `:namespace` `(string: )`- Specifies the namespace to query.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/namespace/api-prod
+```
+
+### Sample Response
+
+```json
+{
+ "CreateIndex": 31,
+ "Description": "Production API Servers",
+ "Quota": "",
+ "Hash": "N8WvePwqkp6J354eLJMKyhvsFdPELAos0VuBfMoVKoU=",
+ "ModifyIndex": 31,
+ "Name": "api-prod"
+}
+```
+
+## Create or Update Namespace
+
+This endpoint is used to create or update a namespace.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------------------- | ------------------ |
+| `POST` | `/v1/namespace/:namespace`
`/v1/namespace` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `Name` `(string: )`- Specifies the namespace to create or
+ update.
+
+- `Description` `(string: "")` - Specifies an optional human-readable
+ description of the namespace.
+
+- `Quota` `(string: "")` - Specifies an quota to attach to the namespace.
+
+### Sample Payload
+
+```javascript
+{
+ "Name": "api-prod",
+ "Description": "Production API Servers",
+ "Quota": "prod-quota"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @namespace.json \
+ https://localhost:4646/v1/namespace/api-prod
+```
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @namespace.json \
+ https://localhost:4646/v1/namespace
+```
+
+## Delete Namespace
+
+This endpoint is used to delete a namespace.
+
+| Method | Path | Produces |
+| -------- | -------------------------- | ------------------ |
+| `DELETE` | `/v1/namespace/:namespace` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `:namespace` `(string: )`- Specifies the namespace to delete.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ https://localhost:4646/v1/namespace/api-prod
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/nodes.mdx b/content/nomad/v0.11.x/content/api-docs/nodes.mdx
new file mode 100644
index 0000000000..3ff11dd0b7
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/nodes.mdx
@@ -0,0 +1,1018 @@
+---
+layout: api
+page_title: Nodes - HTTP API
+sidebar_title: Nodes
+description: The /node endpoints are used to query for and interact with client nodes.
+---
+
+# Nodes HTTP API
+
+The `/node` endpoints are used to query for and interact with client nodes.
+
+## List Nodes
+
+This endpoint lists all nodes registered with Nomad.
+
+| Method | Path | Produces |
+| ------ | ----------- | ------------------ |
+| `GET` | `/v1/nodes` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `YES` | `node:read` |
+
+### Parameters
+
+- `prefix` `(string: "")`- Specifies a string to filter nodes based on an ID
+ prefix. Because the value is decoded to bytes, the prefix must have an even
+ number of hexadecimal characters (0-9a-f). This is specified as a query
+ string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ http://localhost:4646/v1/nodes
+```
+
+```shell-session
+$ curl \
+ http://localhost:4646/v1/nodes?prefix=f7476465
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "Address": "10.138.0.5",
+ "CreateIndex": 6,
+ "Datacenter": "dc1",
+ "Drain": false,
+ "Drivers": {
+ "java": {
+ "Attributes": {
+ "driver.java.runtime": "OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1~deb9u1-b12)",
+ "driver.java.vm": "OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)",
+ "driver.java.version": "openjdk version \"1.8.0_162"
+ },
+ "Detected": true,
+ "HealthDescription": "",
+ "Healthy": true,
+ "UpdateTime": "2018-04-11T23:33:48.781948669Z"
+ },
+ "qemu": {
+ "Attributes": null,
+ "Detected": false,
+ "HealthDescription": "",
+ "Healthy": false,
+ "UpdateTime": "2018-04-11T23:33:48.7819898Z"
+ },
+ "rkt": {
+ "Attributes": {
+ "driver.rkt.appc.version": "0.8.11",
+ "driver.rkt.volumes.enabled": "1",
+ "driver.rkt.version": "1.29.0"
+ },
+ "Detected": true,
+ "HealthDescription": "Driver rkt is detected: true",
+ "Healthy": true,
+ "UpdateTime": "2018-04-11T23:34:48.81079772Z"
+ },
+ "docker": {
+ "Attributes": {
+ "driver.docker.bridge_ip": "172.17.0.1",
+ "driver.docker.version": "18.03.0-ce",
+ "driver.docker.volumes.enabled": "1"
+ },
+ "Detected": true,
+ "HealthDescription": "Driver is available and responsive",
+ "Healthy": true,
+ "UpdateTime": "2018-04-11T23:34:48.713720323Z"
+ },
+ "exec": {
+ "Attributes": {},
+ "Detected": true,
+ "HealthDescription": "Driver exec is detected: true",
+ "Healthy": true,
+ "UpdateTime": "2018-04-11T23:34:48.711026521Z"
+ },
+ "raw_exec": {
+ "Attributes": {},
+ "Detected": true,
+ "HealthDescription": "",
+ "Healthy": true,
+ "UpdateTime": "2018-04-11T23:33:48.710448534Z"
+ }
+ },
+ "ID": "f7476465-4d6e-c0de-26d0-e383c49be941",
+ "ModifyIndex": 2526,
+ "Name": "nomad-4",
+ "NodeClass": "",
+ "SchedulingEligibility": "eligible",
+ "Status": "ready",
+ "StatusDescription": "",
+ "Version": "0.8.0-rc1"
+ }
+]
+```
+
+## Read Node
+
+This endpoint queries the status of a client node.
+
+| Method | Path | Produces |
+| ------ | ------------------- | ------------------ |
+| `GET` | `/v1/node/:node_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `YES` | `node:read` |
+
+### Parameters
+
+- `:node_id` `(string: )`- Specifies the ID of the node. This must be
+ the full UUID, not the short 8-character one. This is specified as part of the
+ path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ http://localhost:4646/v1/node/f7476465-4d6e-c0de-26d0-e383c49be941
+```
+
+### Sample Response
+
+```json
+{
+ "Attributes": {
+ "consul.datacenter": "dc1",
+ "consul.revision": "d2adfc0bd",
+ "consul.server": "true",
+ "consul.version": "1.5.2",
+ "cpu.arch": "amd64",
+ "cpu.frequency": "4000",
+ "cpu.modelname": "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
+ "cpu.numcores": "8",
+ "cpu.totalcompute": "32000",
+ "driver.docker": "1",
+ "driver.docker.bridge_ip": "172.17.0.1",
+ "driver.docker.os_type": "linux",
+ "driver.docker.runtimes": "runc",
+ "driver.docker.version": "18.09.6",
+ "driver.docker.volumes.enabled": "true",
+ "driver.mock": "true",
+ "driver.mock_driver": "1",
+ "driver.raw_exec": "1",
+ "kernel.name": "linux",
+ "kernel.version": "4.19.56",
+ "memory.totalbytes": "16571674624",
+ "nomad.advertise.address": "127.0.0.1:4646",
+ "nomad.revision": "30da2b8f6c3aa860113c9d313c695a05eff5bb97+CHANGES",
+ "nomad.version": "0.10.0-dev",
+ "os.name": "nixos",
+ "os.signals": "SIGTTOU,SIGTTIN,SIGSTOP,SIGSYS,SIGXCPU,SIGBUS,SIGKILL,SIGTERM,SIGIOT,SIGILL,SIGIO,SIGQUIT,SIGSEGV,SIGUSR1,SIGXFSZ,SIGCHLD,SIGUSR2,SIGURG,SIGFPE,SIGHUP,SIGINT,SIGPROF,SIGCONT,SIGALRM,SIGPIPE,SIGTRAP,SIGTSTP,SIGWINCH,SIGABRT",
+ "os.version": "\"19.03.173017.85f820d6e41 (Koi)\"",
+ "unique.cgroup.mountpoint": "/sys/fs/cgroup",
+ "unique.consul.name": "mew",
+ "unique.hostname": "mew",
+ "unique.network.ip-address": "127.0.0.1",
+ "unique.storage.bytesfree": "8273698816",
+ "unique.storage.bytestotal": "8285835264",
+ "unique.storage.volume": "tmpfs"
+ },
+ "ComputedClass": "v1:390058673753570317",
+ "CreateIndex": 6,
+ "Datacenter": "dc1",
+ "Drain": false,
+ "DrainStrategy": null,
+ "Drivers": {
+ "docker": {
+ "Attributes": {
+ "driver.docker": "true",
+ "driver.docker.bridge_ip": "172.17.0.1",
+ "driver.docker.os_type": "linux",
+ "driver.docker.runtimes": "runc",
+ "driver.docker.version": "18.09.6",
+ "driver.docker.volumes.enabled": "true"
+ },
+ "Detected": true,
+ "HealthDescription": "Healthy",
+ "Healthy": true,
+ "UpdateTime": "2019-08-26T12:22:50.762716458+02:00"
+ },
+ "exec": {
+ "Attributes": null,
+ "Detected": false,
+ "HealthDescription": "Driver must run as root",
+ "Healthy": false,
+ "UpdateTime": "2019-08-26T12:22:50.6873373+02:00"
+ },
+ "java": {
+ "Attributes": null,
+ "Detected": false,
+ "HealthDescription": "Driver must run as root",
+ "Healthy": false,
+ "UpdateTime": "2019-08-26T12:22:50.687274359+02:00"
+ },
+ "mock_driver": {
+ "Attributes": {
+ "driver.mock": "true"
+ },
+ "Detected": true,
+ "HealthDescription": "Healthy",
+ "Healthy": true,
+ "UpdateTime": "2019-08-26T12:22:50.687978919+02:00"
+ },
+ "qemu": {
+ "Attributes": null,
+ "Detected": false,
+ "HealthDescription": "",
+ "Healthy": false,
+ "UpdateTime": "2019-08-26T12:22:50.688023782+02:00"
+ },
+ "raw_exec": {
+ "Attributes": {
+ "driver.raw_exec": "true"
+ },
+ "Detected": true,
+ "HealthDescription": "Healthy",
+ "Healthy": true,
+ "UpdateTime": "2019-08-26T12:22:50.687733347+02:00"
+ },
+ "rkt": {
+ "Attributes": null,
+ "Detected": false,
+ "HealthDescription": "Driver must run as root",
+ "Healthy": false,
+ "UpdateTime": "2019-08-26T12:22:50.68796043+02:00"
+ }
+ },
+ "Events": [
+ {
+ "CreateIndex": 0,
+ "Details": null,
+ "Message": "Node registered",
+ "Subsystem": "Cluster",
+ "Timestamp": "2019-08-26T12:22:50+02:00"
+ }
+ ],
+ "HTTPAddr": "127.0.0.1:4646",
+ "HostVolumes": {
+ "certificates": {
+ "Name": "certificates",
+ "Path": "/etc/ssl/certs",
+ "ReadOnly": true
+ },
+ "prod-mysql-a": {
+ "Name": "prod-mysql-a",
+ "Path": "/data/mysql",
+ "ReadOnly": false
+ }
+ },
+ "ID": "1ac61e33-a465-2ace-f63f-cffa1285e7eb",
+ "Links": {
+ "consul": "dc1.mew"
+ },
+ "Meta": {
+ "connect.log_level": "info",
+ "connect.sidecar_image": "envoyproxy/envoy:v1.11.1"
+ },
+ "ModifyIndex": 9,
+ "Name": "mew",
+ "NodeClass": "",
+ "NodeResources": {
+ "Cpu": {
+ "CpuShares": 32000
+ },
+ "Devices": null,
+ "Disk": {
+ "DiskMB": 7890
+ },
+ "Memory": {
+ "MemoryMB": 15803
+ },
+ "Networks": [
+ {
+ "CIDR": "127.0.0.1/32",
+ "Device": "lo",
+ "DynamicPorts": null,
+ "IP": "127.0.0.1",
+ "MBits": 1000,
+ "Mode": "",
+ "ReservedPorts": null
+ },
+ {
+ "CIDR": "::1/128",
+ "Device": "lo",
+ "DynamicPorts": null,
+ "IP": "::1",
+ "MBits": 1000,
+ "Mode": "",
+ "ReservedPorts": null
+ }
+ ]
+ },
+ "Reserved": {
+ "CPU": 0,
+ "Devices": null,
+ "DiskMB": 0,
+ "IOPS": 0,
+ "MemoryMB": 0,
+ "Networks": null
+ },
+ "ReservedResources": {
+ "Cpu": {
+ "CpuShares": 0
+ },
+ "Disk": {
+ "DiskMB": 0
+ },
+ "Memory": {
+ "MemoryMB": 0
+ },
+ "Networks": {
+ "ReservedHostPorts": ""
+ }
+ },
+ "Resources": {
+ "CPU": 32000,
+ "Devices": null,
+ "DiskMB": 7890,
+ "IOPS": 0,
+ "MemoryMB": 15803,
+ "Networks": [
+ {
+ "CIDR": "127.0.0.1/32",
+ "Device": "lo",
+ "DynamicPorts": null,
+ "IP": "127.0.0.1",
+ "MBits": 1000,
+ "Mode": "",
+ "ReservedPorts": null
+ },
+ {
+ "CIDR": "::1/128",
+ "Device": "lo",
+ "DynamicPorts": null,
+ "IP": "::1",
+ "MBits": 1000,
+ "Mode": "",
+ "ReservedPorts": null
+ }
+ ]
+ },
+ "SchedulingEligibility": "eligible",
+ "SecretID": "",
+ "Status": "ready",
+ "StatusDescription": "",
+ "StatusUpdatedAt": 1566814982,
+ "TLSEnabled": false
+}
+```
+
+## List Node Allocations
+
+This endpoint lists all of the allocations for the given node. This can be used to
+determine what allocations have been scheduled on the node, their current status,
+and the values of dynamically assigned resources, like ports.
+
+| Method | Path | Produces |
+| ------ | ------------------------------- | ------------------ |
+| `GET` | `/v1/node/:node_id/allocations` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------------------------ |
+| `YES` | `node:read,namespace:read-job` |
+
+### Parameters
+
+- `:node_id` `(string: )`- Specifies the UUID of the node. This must
+ be the full UUID, not the short 8-character one. This is specified as part of
+ the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ http://localhost:4646/v1/node/e02b6169-83bd-9df6-69bd-832765f333eb/allocations
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "AllocModifyIndex": 2555,
+ "ClientDescription": "",
+ "ClientStatus": "running",
+ "CreateIndex": 2555,
+ "CreateTime": 1523490066575461000,
+ "DeploymentID": "",
+ "DeploymentStatus": {
+ "Healthy": true,
+ "ModifyIndex": 0
+ },
+ "DesiredDescription": "",
+ "DesiredStatus": "run",
+ "DesiredTransition": {
+ "Migrate": null
+ },
+ "EvalID": "5129bc74-9785-c39a-08da-bddc8aa778b1",
+ "FollowupEvalID": "",
+ "ID": "fefe81d0-08b2-4eca-fae6-6560cde46d31",
+ "Job": {
+ "AllAtOnce": false,
+ "Constraints": null,
+ "CreateIndex": 2553,
+ "Datacenters": ["dc1"],
+ "ID": "webapp",
+ "JobModifyIndex": 2553,
+ "Meta": null,
+ "ModifyIndex": 2554,
+ "Name": "webapp",
+ "Namespace": "default",
+ "ParameterizedJob": null,
+ "ParentID": "",
+ "Payload": null,
+ "Periodic": null,
+ "Priority": 50,
+ "Region": "global",
+ "Stable": false,
+ "Status": "pending",
+ "StatusDescription": "",
+ "Stop": false,
+ "SubmitTime": 1523490066563405000,
+ "TaskGroups": [
+ {
+ "Constraints": null,
+ "Count": 9,
+ "EphemeralDisk": {
+ "Migrate": false,
+ "SizeMB": 300,
+ "Sticky": false
+ },
+ "Meta": null,
+ "Migrate": {
+ "HealthCheck": "checks",
+ "HealthyDeadline": 300000000000,
+ "MaxParallel": 2,
+ "MinHealthyTime": 15000000000
+ },
+ "Name": "webapp",
+ "ReschedulePolicy": {
+ "Attempts": 0,
+ "Delay": 30000000000,
+ "DelayFunction": "exponential",
+ "Interval": 0,
+ "MaxDelay": 3600000000000,
+ "Unlimited": true
+ },
+ "RestartPolicy": {
+ "Attempts": 2,
+ "Delay": 15000000000,
+ "Interval": 1800000000000,
+ "Mode": "fail"
+ },
+ "Tasks": [
+ {
+ "Artifacts": null,
+ "Config": {
+ "args": ["-text", "ok4"],
+ "image": "hashicorp/http-echo:0.2.3",
+ "port_map": [
+ {
+ "http": 5678
+ }
+ ]
+ },
+ "Constraints": null,
+ "DispatchPayload": null,
+ "Driver": "docker",
+ "Env": null,
+ "KillSignal": "",
+ "KillTimeout": 5000000000,
+ "Leader": false,
+ "LogConfig": {
+ "MaxFileSizeMB": 10,
+ "MaxFiles": 10
+ },
+ "Meta": null,
+ "Name": "webapp",
+ "Resources": {
+ "CPU": 100,
+ "DiskMB": 0,
+ "MemoryMB": 300,
+ "Networks": [
+ {
+ "CIDR": "",
+ "Device": "",
+ "DynamicPorts": [
+ {
+ "Label": "http",
+ "Value": 0
+ }
+ ],
+ "IP": "",
+ "MBits": 10,
+ "ReservedPorts": null
+ }
+ ]
+ },
+ "Services": [
+ {
+ "AddressMode": "auto",
+ "Checks": [
+ {
+ "AddressMode": "",
+ "Args": null,
+ "CheckRestart": null,
+ "Command": "",
+ "Header": null,
+ "InitialStatus": "",
+ "Interval": 10000000000,
+ "Method": "",
+ "Name": "http-ok",
+ "Path": "/",
+ "PortLabel": "",
+ "Protocol": "",
+ "TLSSkipVerify": false,
+ "Timeout": 2000000000,
+ "Type": "http"
+ }
+ ],
+ "Name": "webapp",
+ "PortLabel": "http",
+ "Tags": null
+ }
+ ],
+ "ShutdownDelay": 0,
+ "Templates": null,
+ "User": "",
+ "Vault": null
+ }
+ ],
+ "Update": null
+ }
+ ],
+ "Type": "service",
+ "Update": {
+ "AutoRevert": false,
+ "Canary": 0,
+ "HealthCheck": "",
+ "HealthyDeadline": 0,
+ "MaxParallel": 0,
+ "MinHealthyTime": 0,
+ "Stagger": 0
+ },
+ "VaultToken": "",
+ "Version": 0
+ },
+ "JobID": "webapp",
+ "Metrics": {
+ "AllocationTime": 63337,
+ "ClassExhausted": null,
+ "ClassFiltered": null,
+ "CoalescedFailures": 0,
+ "ConstraintFiltered": null,
+ "DimensionExhausted": null,
+ "NodesAvailable": {
+ "dc1": 2
+ },
+ "NodesEvaluated": 2,
+ "NodesExhausted": 0,
+ "NodesFiltered": 0,
+ "QuotaExhausted": null,
+ "Scores": {
+ "46f1c6c4-a0e5-21f6-fd5c-d76c3d84e806.binpack": 2.6950883117541586,
+ "f7476465-4d6e-c0de-26d0-e383c49be941.binpack": 2.6950883117541586
+ }
+ },
+ "ModifyIndex": 2567,
+ "ModifyTime": 1523490089807324000,
+ "Name": "webapp.webapp[0]",
+ "Namespace": "default",
+ "NextAllocation": "",
+ "NodeID": "f7476465-4d6e-c0de-26d0-e383c49be941",
+ "PreviousAllocation": "",
+ "RescheduleTracker": null,
+ "Resources": {
+ "CPU": 100,
+ "DiskMB": 300,
+ "MemoryMB": 300,
+ "Networks": [
+ {
+ "CIDR": "",
+ "Device": "eth0",
+ "DynamicPorts": [
+ {
+ "Label": "http",
+ "Value": 25920
+ }
+ ],
+ "IP": "10.138.0.5",
+ "MBits": 10,
+ "ReservedPorts": null
+ }
+ ]
+ },
+ "SharedResources": {
+ "CPU": 0,
+ "DiskMB": 300,
+ "MemoryMB": 0,
+ "Networks": null
+ },
+ "TaskGroup": "webapp",
+ "TaskResources": {
+ "webapp": {
+ "CPU": 100,
+ "DiskMB": 0,
+ "MemoryMB": 300,
+ "Networks": [
+ {
+ "CIDR": "",
+ "Device": "eth0",
+ "DynamicPorts": [
+ {
+ "Label": "http",
+ "Value": 25920
+ }
+ ],
+ "IP": "10.138.0.5",
+ "MBits": 10,
+ "ReservedPorts": null
+ }
+ ]
+ }
+ },
+ "TaskStates": {
+ "webapp": {
+ "Events": [
+ {
+ "Details": {},
+ "DiskLimit": 0,
+ "DisplayMessage": "Task received by client",
+ "DownloadError": "",
+ "DriverError": "",
+ "DriverMessage": "",
+ "ExitCode": 0,
+ "FailedSibling": "",
+ "FailsTask": false,
+ "GenericSource": "",
+ "KillError": "",
+ "KillReason": "",
+ "KillTimeout": 0,
+ "Message": "",
+ "RestartReason": "",
+ "SetupError": "",
+ "Signal": 0,
+ "StartDelay": 0,
+ "TaskSignal": "",
+ "TaskSignalReason": "",
+ "Time": 1523490066712543500,
+ "Type": "Received",
+ "ValidationError": "",
+ "VaultError": ""
+ },
+ {
+ "Details": {
+ "message": "Building Task Directory"
+ },
+ "DiskLimit": 0,
+ "DisplayMessage": "Building Task Directory",
+ "DownloadError": "",
+ "DriverError": "",
+ "DriverMessage": "",
+ "ExitCode": 0,
+ "FailedSibling": "",
+ "FailsTask": false,
+ "GenericSource": "",
+ "KillError": "",
+ "KillReason": "",
+ "KillTimeout": 0,
+ "Message": "Building Task Directory",
+ "RestartReason": "",
+ "SetupError": "",
+ "Signal": 0,
+ "StartDelay": 0,
+ "TaskSignal": "",
+ "TaskSignalReason": "",
+ "Time": 1523490066715208000,
+ "Type": "Task Setup",
+ "ValidationError": "",
+ "VaultError": ""
+ },
+ {
+ "Details": {},
+ "DiskLimit": 0,
+ "DisplayMessage": "Task started by client",
+ "DownloadError": "",
+ "DriverError": "",
+ "DriverMessage": "",
+ "ExitCode": 0,
+ "FailedSibling": "",
+ "FailsTask": false,
+ "GenericSource": "",
+ "KillError": "",
+ "KillReason": "",
+ "KillTimeout": 0,
+ "Message": "",
+ "RestartReason": "",
+ "SetupError": "",
+ "Signal": 0,
+ "StartDelay": 0,
+ "TaskSignal": "",
+ "TaskSignalReason": "",
+ "Time": 1523490068433051100,
+ "Type": "Started",
+ "ValidationError": "",
+ "VaultError": ""
+ }
+ ],
+ "Failed": false,
+ "FinishedAt": "0001-01-01T00:00:00Z",
+ "LastRestart": "0001-01-01T00:00:00Z",
+ "Restarts": 0,
+ "StartedAt": "2018-04-11T23:41:08.445128764Z",
+ "State": "running"
+ }
+ }
+ }
+]
+```
+
+## Create Node Evaluation
+
+This endpoint creates a new evaluation for the given node. This can be used to
+force a run of the scheduling logic.
+
+| Method | Path | Produces |
+| ------ | ---------------------------- | ------------------ |
+| `POST` | `/v1/node/:node_id/evaluate` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `node:write` |
+
+### Parameters
+
+- `:node_id` `(string: )`- Specifies the UUID of the node. This must
+ be the full UUID, not the short 8-character one. This is specified as part of
+ the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ http://localhost:4646/v1/node/fb2170a8-257d-3c64-b14d-bc06cc94e34c/evaluate
+```
+
+### Sample Response
+
+```json
+{
+ "EvalCreateIndex": 3671,
+ "EvalIDs": ["4dfc2db7-b481-c53b-3072-14479aa44be3"],
+ "HeartbeatTTL": 0,
+ "Index": 3671,
+ "KnownLeader": false,
+ "LastContact": 0,
+ "LeaderRPCAddr": "10.138.0.2:4647",
+ "NodeModifyIndex": 0,
+ "NumNodes": 3,
+ "Servers": [
+ {
+ "Datacenter": "dc1",
+ "RPCAdvertiseAddr": "10.138.0.2:4647",
+ "RPCMajorVersion": 1,
+ "RPCMinorVersion": 1
+ },
+ {
+ "Datacenter": "dc1",
+ "RPCAdvertiseAddr": "10.138.0.3:4647",
+ "RPCMajorVersion": 1,
+ "RPCMinorVersion": 1
+ },
+ {
+ "Datacenter": "dc1",
+ "RPCAdvertiseAddr": "10.138.0.4:4647",
+ "RPCMajorVersion": 1,
+ "RPCMinorVersion": 1
+ }
+ ]
+}
+```
+
+## Drain Node
+
+This endpoint toggles the drain mode of the node. When draining is enabled, no
+further allocations will be assigned to this node, and existing allocations will
+be migrated to new nodes. See the [Workload Migration
+Guide](https://learn.hashicorp.com/nomad/operating-nomad/node-draining) for suggested usage.
+
+| Method | Path | Produces |
+| ------ | ------------------------- | ------------------ |
+| `POST` | `/v1/node/:node_id/drain` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `node:write` |
+
+### Parameters
+
+- `:node_id` `(string: )`- Specifies the UUID of the node. This must
+ be the full UUID, not the short 8-character one. This is specified as part of
+ the path.
+
+- `DrainSpec` `(object: )` - Specifies if drain mode should be
+ enabled. A missing or null value disables an existing drain.
+
+ - `Deadline` `(int: )` - Specifies how long to wait in nanoseconds
+ for allocations to finish migrating before they are force stopped. This is
+ also how long batch jobs are given to complete before being migrated.
+
+ - `IgnoreSystemJobs` `(bool: false)` - Specifies whether or not to stop system
+ jobs as part of a drain. By default system jobs will be stopped after all
+ other allocations have migrated or the deadline is reached. Setting this to
+ `true` means system jobs are always left running.
+
+- `MarkEligible` `(bool: false)` - Specifies whether to mark a node as eligible
+ for scheduling again when _disabling_ a drain.
+
+### Sample Payload
+
+```json
+{
+ "DrainSpec": {
+ "Deadline": 3600000000000,
+ "IgnoreSystemJobs": true
+ }
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ -XPOST \
+ --data @drain.json \
+ http://localhost:4646/v1/node/fb2170a8-257d-3c64-b14d-bc06cc94e34c/drain
+```
+
+### Sample Response
+
+```json
+{
+ "EvalCreateIndex": 0,
+ "EvalIDs": null,
+ "Index": 3742,
+ "NodeModifyIndex": 3742
+}
+```
+
+## Purge Node
+
+This endpoint purges a node from the system. Nodes can still join the cluster if
+they are alive.
+
+| Method | Path | Produces |
+| ------ | ------------------------- | ------------------ |
+| `POST` | `/v1/node/:node_id/purge` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `node:write` |
+
+### Parameters
+
+- `:node_id` `(string: )`- Specifies the UUID of the node. This must
+ be the full UUID, not the short 8-character one. This is specified as part of
+ the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ -XPOST http://localhost:4646/v1/node/f7476465-4d6e-c0de-26d0-e383c49be941/purge
+```
+
+### Sample Response
+
+```json
+{
+ "EvalCreateIndex": 3817,
+ "EvalIDs": ["71bad787-5ab1-9939-be02-4809441583cd"],
+ "HeartbeatTTL": 0,
+ "Index": 3816,
+ "KnownLeader": false,
+ "LastContact": 0,
+ "LeaderRPCAddr": "",
+ "NodeModifyIndex": 3816,
+ "NumNodes": 0,
+ "Servers": null
+}
+```
+
+## Toggle Node Eligibility
+
+This endpoint toggles the scheduling eligibility of the node.
+
+| Method | Path | Produces |
+| ------ | ------------------------------- | ------------------ |
+| `POST` | `/v1/node/:node_id/eligibility` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `node:write` |
+
+### Parameters
+
+- `:node_id` `(string: )`- Specifies the UUID of the node. This must
+ be the full UUID, not the short 8-character one. This is specified as part of
+ the path.
+
+- `Eligibility` `(string: )` - Either `eligible` or `ineligible`.
+
+### Sample Payload
+
+```json
+{
+ "Eligibility": "ineligible"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ -XPOST \
+ --data @eligibility.json \
+ http://localhost:4646/v1/node/fb2170a8-257d-3c64-b14d-bc06cc94e34c/eligibility
+```
+
+### Sample Response
+
+```json
+{
+ "EvalCreateIndex": 0,
+ "EvalIDs": null,
+ "Index": 3742,
+ "NodeModifyIndex": 3742
+}
+```
+
+#### Field Reference
+
+- Events - A list of the last 10 node events for this node. A node event is a
+ high level concept of noteworthy events for a node.
+
+ Each node event has the following fields:
+
+ - `Message` - The specific message for the event, detailing what occurred.
+
+ - `Subsystem` - The subsystem where the node event took place. Subsystems
+ include:
+
+ - `Drain` - The Nomad server draining subsystem.
+
+ - `Driver` - The Nomad client driver subsystem.
+
+ - `Heartbeat` - Either Nomad client or server heartbeating subsystem.
+
+ - `Cluster` - Nomad server cluster management subsystem.
+
+ - `Details` - Any further details about the event, formatted as a key/value
+ pair.
+
+ - `Timestamp` - Each node event has an ISO 8601 timestamp.
+
+ - `CreateIndex` - The Raft index at which the event was committed.
diff --git a/content/nomad/v0.11.x/content/api-docs/operator.mdx b/content/nomad/v0.11.x/content/api-docs/operator.mdx
new file mode 100644
index 0000000000..eb5fd9dea8
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/operator.mdx
@@ -0,0 +1,473 @@
+---
+layout: api
+page_title: Operator - HTTP API
+sidebar_title: Operator
+description: |-
+ The /operator endpoints provides cluster-level tools for Nomad operators, such
+ as interacting with the Raft subsystem.
+---
+
+# /v1/operator
+
+The `/operator` endpoint provides cluster-level tools for Nomad operators, such
+as interacting with the Raft subsystem.
+
+~> Use this interface with extreme caution, as improper use could lead to a
+Nomad outage and even loss of data.
+
+See the [Outage Recovery](https://learn.hashicorp.com/nomad/operating-nomad/outage) guide for some examples of how
+these capabilities are used. For a CLI to perform these operations manually,
+please see the documentation for the
+[`nomad operator`](/docs/commands/operator) command.
+
+## Read Raft Configuration
+
+This endpoint queries the status of a client node registered with Nomad.
+
+| Method | Path | Produces |
+| ------ | --------------------------------- | ------------------ |
+| `GET` | `/v1/operator/raft/configuration` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `stale` - Specifies if the cluster should respond without an active leader.
+ This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/operator/raft/configuration
+```
+
+### Sample Response
+
+```json
+{
+ "Index": 1,
+ "Servers": [
+ {
+ "Address": "127.0.0.1:4647",
+ "ID": "127.0.0.1:4647",
+ "Leader": true,
+ "Node": "bacon-mac.global",
+ "RaftProtocol": 2,
+ "Voter": true
+ }
+ ]
+}
+```
+
+#### Field Reference
+
+- `Index` `(int)` - The `Index` value is the Raft corresponding to this
+ configuration. The latest configuration may not yet be committed if changes
+ are in flight.
+
+- `Servers` `(array: Server)` - The returned `Servers` array has information
+ about the servers in the Raft peer configuration.
+
+ - `ID` `(string)` - The ID of the server. This is the same as the `Address`
+ but may be upgraded to a GUID in a future version of Nomad.
+
+ - `Node` `(string)` - The node name of the server, as known to Nomad, or
+ `"(unknown)"` if the node is stale and not known.
+
+ - `Address` `(string)` - The `ip:port` for the server.
+
+ - `Leader` `(bool)` - is either "true" or "false" depending on the server's
+ role in the Raft configuration.
+
+ - `Voter` `(bool)` - is "true" or "false", indicating if the server has a vote
+ in the Raft configuration. Future versions of Nomad may add support for
+ non-voting servers.
+
+## Remove Raft Peer
+
+This endpoint removes a Nomad server with given address from the Raft
+configuration. The return code signifies success or failure.
+
+| Method | Path | Produces |
+| -------- | ------------------------ | ------------------ |
+| `DELETE` | `/v1/operator/raft/peer` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `address` `(string: )` - Specifies the server to remove as
+ `ip:port`. This cannot be provided along with the `id` parameter.
+
+- `id` `(string: )` - Specifies the server to remove as
+ `id`. This cannot be provided along with the `address` parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ https://localhost:4646/v1/operator/raft/peer?address=1.2.3.4
+```
+
+## Read Autopilot Configuration
+
+This endpoint retrieves its latest Autopilot configuration.
+
+| Method | Path | Produces |
+| ------ | -------------------------------------- | ------------------ |
+| `GET` | `/v1/operator/autopilot/configuration` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------- |
+| `NO` | `operator:read` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/operator/autopilot/configuration
+```
+
+### Sample Response
+
+```json
+{
+ "CleanupDeadServers": true,
+ "LastContactThreshold": "200ms",
+ "MaxTrailingLogs": 250,
+ "ServerStabilizationTime": "10s",
+ "EnableRedundancyZones": false,
+ "DisableUpgradeMigration": false,
+ "EnableCustomUpgrades": false,
+ "CreateIndex": 4,
+ "ModifyIndex": 4
+}
+```
+
+For more information about the Autopilot configuration options, see the
+[agent configuration section](/docs/configuration/autopilot).
+
+## Update Autopilot Configuration
+
+This endpoint updates the Autopilot configuration of the cluster.
+
+| Method | Path | Produces |
+| ------ | -------------------------------------- | ------------------ |
+| `PUT` | `/v1/operator/autopilot/configuration` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------- |
+| `NO` | `operator:write` |
+
+### Parameters
+
+- `cas` `(int: 0)` - Specifies to use a Check-And-Set operation. The update will
+ only happen if the given index matches the `ModifyIndex` of the configuration
+ at the time of writing.
+
+### Sample Payload
+
+```json
+{
+ "CleanupDeadServers": true,
+ "LastContactThreshold": "200ms",
+ "MaxTrailingLogs": 250,
+ "ServerStabilizationTime": "10s",
+ "EnableRedundancyZones": false,
+ "DisableUpgradeMigration": false,
+ "EnableCustomUpgrades": false,
+ "CreateIndex": 4,
+ "ModifyIndex": 4
+}
+```
+
+- `CleanupDeadServers` `(bool: true)` - Specifies automatic removal of dead
+ server nodes periodically and whenever a new server is added to the cluster.
+
+- `LastContactThreshold` `(string: "200ms")` - Specifies the maximum amount of
+ time a server can go without contact from the leader before being considered
+ unhealthy. Must be a duration value such as `10s`.
+
+- `MaxTrailingLogs` `(int: 250)` specifies the maximum number of log entries
+ that a server can trail the leader by before being considered unhealthy.
+
+- `ServerStabilizationTime` `(string: "10s")` - Specifies the minimum amount of
+ time a server must be stable in the 'healthy' state before being added to the
+ cluster. Only takes effect if all servers are running Raft protocol version 3
+ or higher. Must be a duration value such as `30s`.
+
+- `EnableRedundancyZones` `(bool: false)` - (Enterprise-only) Specifies whether
+ to enable redundancy zones.
+
+- `DisableUpgradeMigration` `(bool: false)` - (Enterprise-only) Disables Autopilot's
+ upgrade migration strategy in Nomad Enterprise of waiting until enough
+ newer-versioned servers have been added to the cluster before promoting any of
+ them to voters.
+
+- `EnableCustomUpgrades` `(bool: false)` - (Enterprise-only) Specifies whether to
+ enable using custom upgrade versions when performing migrations.
+
+## Read Health
+
+This endpoint queries the health of the autopilot status.
+
+| Method | Path | Produces |
+| ------ | ------------------------------- | ------------------ |
+| `GET` | `/v1/operator/autopilot/health` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------- |
+| `NO` | `operator:read` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/operator/autopilot/health
+```
+
+### Sample response
+
+```json
+{
+ "Healthy": true,
+ "FailureTolerance": 0,
+ "Servers": [
+ {
+ "ID": "e349749b-3303-3ddf-959c-b5885a0e1f6e",
+ "Name": "node1",
+ "Address": "127.0.0.1:8300",
+ "SerfStatus": "alive",
+ "Version": "0.8.0",
+ "Leader": true,
+ "LastContact": "0s",
+ "LastTerm": 2,
+ "LastIndex": 46,
+ "Healthy": true,
+ "Voter": true,
+ "StableSince": "2017-03-06T22:07:51Z"
+ },
+ {
+ "ID": "e36ee410-cc3c-0a0c-c724-63817ab30303",
+ "Name": "node2",
+ "Address": "127.0.0.1:8205",
+ "SerfStatus": "alive",
+ "Version": "0.8.0",
+ "Leader": false,
+ "LastContact": "27.291304ms",
+ "LastTerm": 2,
+ "LastIndex": 46,
+ "Healthy": true,
+ "Voter": false,
+ "StableSince": "2017-03-06T22:18:26Z"
+ }
+ ]
+}
+```
+
+- `Healthy` is whether all the servers are currently healthy.
+
+- `FailureTolerance` is the number of redundant healthy servers that could be
+ fail without causing an outage (this would be 2 in a healthy cluster of 5
+ servers).
+
+- `Servers` holds detailed health information on each server:
+
+ - `ID` is the Raft ID of the server.
+
+ - `Name` is the node name of the server.
+
+ - `Address` is the address of the server.
+
+ - `SerfStatus` is the SerfHealth check status for the server.
+
+ - `Version` is the Nomad version of the server.
+
+ - `Leader` is whether this server is currently the leader.
+
+ - `LastContact` is the time elapsed since this server's last contact with the leader.
+
+ - `LastTerm` is the server's last known Raft leader term.
+
+ - `LastIndex` is the index of the server's last committed Raft log entry.
+
+ - `Healthy` is whether the server is healthy according to the current Autopilot configuration.
+
+ - `Voter` is whether the server is a voting member of the Raft cluster.
+
+ - `StableSince` is the time this server has been in its current `Healthy` state.
+
+ The HTTP status code will indicate the health of the cluster. If `Healthy` is true, then a
+ status of 200 will be returned. If `Healthy` is false, then a status of 429 will be returned.
+
+## Read Scheduler Configuration
+
+This endpoint retrieves the latest Scheduler configuration. This API was introduced in
+Nomad 0.9 and currently supports enabling/disabling preemption. More options may be added in
+the future.
+
+| Method | Path | Produces |
+| ------ | -------------------------------------- | ------------------ |
+| `GET` | `/v1/operator/scheduler/configuration` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------- |
+| `NO` | `operator:read` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/operator/scheduler/configuration
+```
+
+### Sample Response
+
+```json
+{
+ "Index": 5,
+ "KnownLeader": true,
+ "LastContact": 0,
+ "SchedulerConfig": {
+ "CreateIndex": 5,
+ "ModifyIndex": 5,
+ "SchedulerAlgorithm": "spread",
+ "PreemptionConfig": {
+ "SystemSchedulerEnabled": true,
+ "BatchSchedulerEnabled": false,
+ "ServiceSchedulerEnabled": false
+ }
+ }
+}
+```
+
+#### Field Reference
+
+- `Index` `(int)` - The `Index` value is the Raft commit index corresponding to this
+ configuration.
+
+- `SchedulerConfig` `(SchedulerConfig)` - The returned `SchedulerConfig` object has configuration
+ settings mentioned below.
+
+ - `SchedulerAlgorithm` `(string: "binpack")` - Specifies whether scheduler binpacks or spreads allocations on available nodes.
+
+ - `PreemptionConfig` `(PreemptionConfig)` - Options to enable preemption for various schedulers.
+
+ - `SystemSchedulerEnabled` `(bool: true)` - Specifies whether preemption for system jobs is enabled. Note that
+ this defaults to true.
+
+ - `BatchSchedulerEnabled` `(bool: false)` (Enterprise Only) - Specifies whether preemption for batch jobs is enabled. Note that
+ this defaults to false and must be explicitly enabled.
+
+ - `ServiceSchedulerEnabled` `(bool: false)` (Enterprise Only) - Specifies whether preemption for service jobs is enabled. Note that
+ this defaults to false and must be explicitly enabled.
+
+ - `CreateIndex` - The Raft index at which the config was created.
+ - `ModifyIndex` - The Raft index at which the config was modified.
+
+## Update Scheduler Configuration
+
+This endpoint updates the scheduler configuration of the cluster.
+
+| Method | Path | Produces |
+| ------------- | -------------------------------------- | ------------------ |
+| `PUT`, `POST` | `/v1/operator/scheduler/configuration` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------- |
+| `NO` | `operator:write` |
+
+### Bootstrap Configuration Element
+
+The [`default_scheduler_config`][] attribute of the server stanza will provide a
+starting value for this configuration. Once bootstrapped, the value in the
+server state is authoritative.
+
+### Parameters
+
+- `cas` `(int: 0)` - Specifies to use a Check-And-Set operation. The update will
+ only happen if the given index matches the `ModifyIndex` of the configuration
+ at the time of writing.
+
+### Sample Payload
+
+```json
+{
+ "SchedulerAlgorithm": "spread",
+ "PreemptionConfig": {
+ "SystemSchedulerEnabled": true,
+ "BatchSchedulerEnabled": false,
+ "ServiceSchedulerEnabled": true
+ }
+}
+```
+
+- `SchedulerAlgorithm` `(string: "binpack")` - Specifies whether scheduler
+ binpacks or spreads allocations on available nodes. Possible values are
+ `"binpack"` and `"spread"`
+
+- `PreemptionConfig` `(PreemptionConfig)` - Options to enable preemption for
+ various schedulers.
+
+- `SystemSchedulerEnabled` `(bool: true)` - Specifies whether preemption for
+ system jobs is enabled. Note that if this is set to true, then system jobs
+ can preempt any other jobs.
+
+- `BatchSchedulerEnabled` `(bool: false)` (Enterprise Only) - Specifies
+ whether preemption for batch jobs is enabled. Note that if this is set to
+ true, then batch jobs can preempt any other jobs.
+
+- `ServiceSchedulerEnabled` `(bool: false)` (Enterprise Only) - Specifies
+ whether preemption for service jobs is enabled. Note that if this is set to
+ true, then service jobs can preempt any other jobs.
+
+### Sample Response
+
+```json
+{
+ "Updated": false,
+ "Index": 15
+}
+```
+
+- `Updated` - Indicates that the configuration was updated when a `cas` value is
+ provided. For non-CAS requests, this field will be false even though the
+ update is applied.
+
+- `Index` - Current Raft index when the request was received.
+
+[`default_scheduler_config`]: /docs/configuration/server#default_scheduler_config
diff --git a/content/nomad/v0.11.x/content/api-docs/plugins.mdx b/content/nomad/v0.11.x/content/api-docs/plugins.mdx
new file mode 100644
index 0000000000..1d717995fd
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/plugins.mdx
@@ -0,0 +1,141 @@
+---
+layout: api
+page_title: Plugins - HTTP API
+sidebar_title: Plugins
+description: The `/plugin` endpoints are used to query for and interact with dynamic plugins.
+---
+
+# Plugins HTTP API
+
+The `/plugin` endpoints are used to query for and interact with
+dynamic plugins. Currently only Container Storage Interface (CSI)
+plugins are dynamic.
+
+## List Plugins
+
+This endpoint lists all dynamic plugins.
+
+| Method | Path | Produces |
+| ------ | ------------- | ------------------ |
+| `GET` | `/v1/plugins` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------- |
+| `YES` | `namespace:csi-list-plugin` |
+
+### Parameters
+
+- `type` `(string: "")`- Specifies the type of plugin to
+ query. Currently only supports `csi`. This is specified as a query
+ string parameter. Returns an empty list if omitted.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/plugins?type=csi
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "example",
+ "Provider": "aws.ebs",
+ "ControllerRequired": true,
+ "ControllersHealthy": 2,
+ "ControllersExpected": 3,
+ "NodesHealthy": 14,
+ "NodesExpected": 16,
+ "CreateIndex": 52,
+ "ModifyIndex": 93
+ }
+]
+```
+
+## Read Plugin
+
+Get details of a single plugin, including information about the
+plugin's job and client fingerprint data.
+
+| Method | Path | Produces |
+| ------ | --------------------------- | ------------------ |
+| `GET` | `/v1/plugin/csi/:plugin_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------- |
+| `YES` | `namespace:csi-read-plugin` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/plugin/csi/example_plugin_id
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "example_plugin_id",
+ "Topologies": [
+ {"key": "val"},
+ {"key": "val2"}
+ ],
+ "Provider": "aws.ebs",
+ "Version": "1.0.1",
+ "ControllersRequired": true,
+ "ControllersHealthy": 1,
+ "Controllers": {
+ "example_node_id": {
+ "PluginID": "example_plugin_id",
+ "Provider": "aws.ebs",
+ "ProviderVersion": "1.0.1",
+ "AllocID": "alloc-id",
+ "Healthy": true,
+ "HealthDescription": "healthy",
+ "UpdateTime": "2020-01-31T00:00:00.000Z",
+ "RequiresControllerPlugin": true,
+ "RequiresTopologies": true,
+ "ControllerInfo": {
+ "SupportsReadOnlyAttach": true,
+ "SupportsAttachDetach": true,
+ "SupportsListVolumes": true,
+ "SupportsListVolumesAttachedNodes": false
+ }
+ },
+ "NodesHealthy": 1,
+ "Nodes": {
+ "example_node_id": {
+ "PluginID": "example_plugin_id",
+ "Provider": "aws.ebs",
+ "ProviderVersion": "1.0.1",
+ "AllocID": "alloc-id",
+ "Healthy": true,
+ "HealthDescription": "healthy",
+ "UpdateTime": "2020-01-30T00:00:00.000Z",
+ "RequiresControllerPlugin": true,
+ "RequiresTopologies": true,
+ "NodeInfo": {
+ "ID": "example_node_id",
+ "MaxVolumes": 51,
+ "AccessibleTopology": {
+ "key": "val2"
+ },
+ "RequiresNodeStageVolume": true
+ }
+ }
+ }
+ }
+]
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/quotas.mdx b/content/nomad/v0.11.x/content/api-docs/quotas.mdx
new file mode 100644
index 0000000000..a9e2febd42
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/quotas.mdx
@@ -0,0 +1,351 @@
+---
+layout: api
+page_title: Quotas - HTTP API
+sidebar_title: Quotas
+description: The /quota endpoints are used to query for and interact with quotas.
+---
+
+# Quota HTTP API
+
+The `/quota` endpoints are used to query for and interact with quotas.
+
+~> **Enterprise Only!** This API endpoint and functionality only exists in
+Nomad Enterprise. This is not present in the open source version of Nomad.
+
+## List Quota Specifications
+
+This endpoint lists all quota specifications.
+
+| Method | Path | Produces |
+| ------ | ------------ | ------------------ |
+| `GET` | `/v1/quotas` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------------------------------------------- |
+| `YES` | `quota:read`
`namespace:*` if namespace has quota attached |
+
+### Parameters
+
+- `prefix` `(string: "")`- Specifies a string to filter quota specifications on
+ based on an index prefix. This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/quotas
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/quotas?prefix=sha
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "CreateIndex": 8,
+ "Description": "Limit the shared default namespace",
+ "Hash": "SgDCH7L5ZDqNSi2NmJlqdvczt/Q6mjyVwVJC0XjWglQ=",
+ "Limits": [
+ {
+ "Hash": "NLOoV2WBU8ieJIrYXXx8NRb5C2xU61pVVWRDLEIMxlU=",
+ "Region": "global",
+ "RegionLimit": {
+ "CPU": 2500,
+ "DiskMB": 0,
+ "MemoryMB": 2000,
+ "Networks": [
+ {
+ "CIDR": "",
+ "Device": "",
+ "DynamicPorts": null,
+ "IP": "",
+ "MBits": 50,
+ "Mode": "",
+ "ReservedPorts": null
+ }
+ ]
+ }
+ }
+ ],
+ "ModifyIndex": 56,
+ "Name": "shared-quota"
+ }
+]
+```
+
+## Read Quota Specification
+
+This endpoint reads information about a specific quota specification.
+
+| Method | Path | Produces |
+| ------ | ------------------ | ------------------ |
+| `GET` | `/v1/quota/:quota` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------------------------------------------- |
+| `YES` | `quota:read`
`namespace:*` if namespace has quota attached |
+
+### Parameters
+
+- `:quota` `(string: )`- Specifies the quota specification to query
+ where the identifier is the quota's name.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/quota/shared-quota
+```
+
+### Sample Response
+
+```json
+{
+ "CreateIndex": 8,
+ "Description": "Limit the shared default namespace",
+ "Hash": "SgDCH7L5ZDqNSi2NmJlqdvczt/Q6mjyVwVJC0XjWglQ=",
+ "Limits": [
+ {
+ "Hash": "NLOoV2WBU8ieJIrYXXx8NRb5C2xU61pVVWRDLEIMxlU=",
+ "Region": "global",
+ "RegionLimit": {
+ "CPU": 2500,
+ "DiskMB": 0,
+ "MemoryMB": 2000,
+ "Networks": [
+ {
+ "CIDR": "",
+ "Device": "",
+ "DynamicPorts": null,
+ "IP": "",
+ "MBits": 50,
+ "Mode": "",
+ "ReservedPorts": null
+ }
+ ]
+ }
+ }
+ ],
+ "ModifyIndex": 56,
+ "Name": "shared-quota"
+}
+```
+
+## Create or Update Quota Specification
+
+This endpoint is used to create or update a quota specification.
+
+| Method | Path | Produces |
+| ------ | ------------------------------------- | ------------------ |
+| `POST` | `/v1/quota/:quota`
`/v1/quota` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------- |
+| `NO` | `quota:write` |
+
+### Body
+
+The request body contains a valid, JSON quota specification. View the api
+package to see the definition of a [`QuotaSpec`
+object](https://github.com/hashicorp/nomad/blob/master/api/quota.go#L100-L131).
+
+### Sample Payload
+
+```javascript
+{
+ "Name": "shared-quota",
+ "Description": "Limit the shared default namespace",
+ "Limits": [
+ {
+ "Region": "global",
+ "RegionLimit": {
+ "CPU": 2500,
+ "MemoryMB": 1000,
+ "Networks": [
+ {
+ "Mbits": 50
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @spec.json \
+ https://localhost:4646/v1/quota/shared-quota
+```
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @spec.json \
+ https://localhost:4646/v1/quota
+```
+
+## Delete Quota Specification
+
+This endpoint is used to delete a quota specification.
+
+| Method | Path | Produces |
+| -------- | ------------------ | ------------------ |
+| `DELETE` | `/v1/quota/:quota` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------- |
+| `NO` | `quota:write` |
+
+### Parameters
+
+- `:quota` `(string: )`- Specifies the quota specification to delete
+ where the identifier is the quota's name.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ https://localhost:4646/v1/quota/shared-quota
+```
+
+## List Quota Usages
+
+This endpoint lists all quota usages.
+
+| Method | Path | Produces |
+| ------ | ------------------ | ------------------ |
+| `GET` | `/v1/quota-usages` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------------------------------------------- |
+| `YES` | `quota:read`
`namespace:*` if namespace has quota attached |
+
+### Parameters
+
+- `prefix` `(string: "")`- Specifies a string to filter quota specifications on
+ based on an index prefix. This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/quota-usages
+```
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/quota-usages?prefix=sha
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "Used": {
+ "NLOoV2WBU8ieJIrYXXx8NRb5C2xU61pVVWRDLEIMxlU=": {
+ "Region": "global",
+ "RegionLimit": {
+ "CPU": 500,
+ "MemoryMB": 256,
+ "DiskMB": 0,
+ "Networks": null
+ },
+ "Hash": "NLOoV2WBU8ieJIrYXXx8NRb5C2xU61pVVWRDLEIMxlU="
+ }
+ },
+ "Name": "default",
+ "CreateIndex": 8,
+ "ModifyIndex": 56
+ }
+]
+```
+
+## Read Quota Usage
+
+This endpoint reads information about a specific quota usage.
+
+| Method | Path | Produces |
+| ------ | ------------------------ | ------------------ |
+| `GET` | `/v1/quota/usage/:quota` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------------------------------------------- |
+| `YES` | `quota:read`
`namespace:*` if namespace has quota attached |
+
+### Parameters
+
+- `:quota` `(string: )`- Specifies the quota specification to query
+ where the identifier is the quota's name.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/quota/shared-quota
+```
+
+### Sample Response
+
+```json
+{
+ "Used": {
+ "NLOoV2WBU8ieJIrYXXx8NRb5C2xU61pVVWRDLEIMxlU=": {
+ "Region": "global",
+ "RegionLimit": {
+ "CPU": 500,
+ "MemoryMB": 256,
+ "DiskMB": 0,
+ "Networks": [
+ {
+ "CIDR": "",
+ "Device": "",
+ "DynamicPorts": null,
+ "IP": "",
+ "MBits": 50,
+ "Mode": "",
+ "ReservedPorts": null
+ }
+ ]
+ },
+ "Hash": "NLOoV2WBU8ieJIrYXXx8NRb5C2xU61pVVWRDLEIMxlU="
+ }
+ },
+ "Name": "default",
+ "CreateIndex": 8,
+ "ModifyIndex": 56
+}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/regions.mdx b/content/nomad/v0.11.x/content/api-docs/regions.mdx
new file mode 100644
index 0000000000..dd0559f09d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/regions.mdx
@@ -0,0 +1,37 @@
+---
+layout: api
+page_title: Regions - HTTP API
+sidebar_title: Regions
+description: The /regions endpoints list all known regions.
+---
+
+# Regions HTTP API
+
+The `/regions` endpoints list all known regions.
+
+## List Regions
+
+| Method | Path | Produces |
+| ------ | ---------- | ------------------ |
+| `GET` | `/regions` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/regions
+```
+
+### Sample Response
+
+```json
+["region1", "region2"]
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/scaling-policies.mdx b/content/nomad/v0.11.x/content/api-docs/scaling-policies.mdx
new file mode 100644
index 0000000000..626c6986f3
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/scaling-policies.mdx
@@ -0,0 +1,103 @@
+---
+layout: api
+page_title: Scaling Policies - HTTP API
+sidebar_title: Scaling Policies Beta
+description: The /scaling/policy endpoints are used to list and view scaling policies.
+---
+
+# Scaling Policies HTTP API
+
+The `/scaling/policies` and `/scaling/policy/` endpoints are used to list and view scaling policies.
+
+## List Scaling Policies Beta
+
+This endpoint returns the scaling policies from all jobs.
+
+| Method | Path | Produces |
+| ------ | ------------------- | ------------------ |
+| `GET` | `/scaling/policies` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | --------------------------------- |
+| `YES` | `all` | `namespace:list-scaling-policies` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/scaling/policies
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "CreateIndex": 10,
+ "Enabled": true,
+ "ID": "5e9f9ef2-5223-6d35-bac1-be0f3cb974ad",
+ "ModifyIndex": 10,
+ "Target": {
+ "Group": "cache",
+ "Job": "example",
+ "Namespace": "default"
+ }
+ }
+]
+```
+
+## Read Scaling Policy Beta
+
+This endpoint reads a specific scaling policy.
+
+| Method | Path | Produces |
+| ------ | ---------------------------- | ------------------ |
+| `GET` | `/scaling/policy/:policy_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | ------------------------------- |
+| `YES` | `all` | `namespace:read-scaling-policy` |
+
+### Parameters
+
+- `:policy_id` `(string: )` - Specifies the ID of the scaling policy (as returned
+ by the scaling policy list endpoint). This is specified as part of the path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/scaling/policy/5e9f9ef2-5223-6d35-bac1-be0f3cb974ad
+```
+
+### Sample Response
+
+```json
+{
+ "CreateIndex": 10,
+ "Enabled": true,
+ "ID": "5e9f9ef2-5223-6d35-bac1-be0f3cb974ad",
+ "Max": 10,
+ "Min": 0,
+ "ModifyIndex": 10,
+ "Policy": {
+ "engage": true,
+ "foo": "bar",
+ "howdy": "doody",
+ "value": 6.0
+ },
+ "Target": {
+ "Group": "cache",
+ "Job": "example",
+ "Namespace": "default"
+ }
+}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/search.mdx b/content/nomad/v0.11.x/content/api-docs/search.mdx
new file mode 100644
index 0000000000..cac8ff3821
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/search.mdx
@@ -0,0 +1,120 @@
+---
+layout: api
+page_title: Search - HTTP API
+sidebar_title: Search
+description: The /search endpoint is used to search for Nomad objects
+---
+
+# Search HTTP API
+
+The `/search` endpoint returns matches for a given prefix and context, where a
+context can be jobs, allocations, evaluations, nodes, deployments, plugins,
+or volumes. When using Nomad Enterprise, the allowed contexts include quotas
+and namespaces. Additionally, a prefix can be searched for within every context.
+
+| Method | Path | Produces |
+| ------ | ------------ | ------------------ |
+| `POST` | `/v1/search` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------------------- |
+| `NO` | `node:read, namespace:read-jobs` |
+
+When ACLs are enabled, requests must have a token valid for `node:read` or
+`namespace:read-jobs` roles. If the token is only valid for `node:read`, then
+job related results will not be returned. If the token is only valid for
+`namespace:read-jobs`, then node results will not be returned.
+
+### Parameters
+
+- `Prefix` `(string: )` - Specifies the identifier against which
+ matches will be found. For example, if the given prefix were "a", potential
+ matches might be "abcd", or "aabb".
+- `Context` `(string: )` - Defines the scope in which a search for a
+ prefix operates. Contexts can be: "jobs", "evals", "allocs", "nodes",
+ "deployment", "plugins", "volumes" or "all", where "all" means every
+ context will be searched.
+
+### Sample Payload (for all contexts)
+
+```javascript
+{
+ "Prefix": "abc",
+ "Context": "all"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/search
+```
+
+### Sample Response
+
+```json
+{
+ "Matches": {
+ "allocs": null,
+ "deployment": null,
+ "evals": ["abc2fdc0-e1fd-2536-67d8-43af8ca798ac"],
+ "jobs": ["abcde"],
+ "nodes": null,
+ "plugins": null,
+ "volumes": null
+ },
+ "Truncations": {
+ "allocs": "false",
+ "deployment": "false",
+ "evals": "false",
+ "jobs": "false",
+ "nodes": "false",
+ "plugins": "false",
+ "volumes": "false"
+ }
+}
+```
+
+#### Field Reference
+
+- `Matches` - A map of contexts to matching arrays of identifiers.
+
+- `Truncations` - Search results are capped at 20; if more matches were found for a particular context, it will be `true`.
+
+### Sample Payload (for a specific context)
+
+```javascript
+{
+ "Prefix": "abc",
+ "Context": "evals"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/search
+```
+
+### Sample Response
+
+```json
+{
+ "Matches": {
+ "evals": ["abc2fdc0-e1fd-2536-67d8-43af8ca798ac"]
+ },
+ "Truncations": {
+ "evals": "false"
+ }
+}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/sentinel-policies.mdx b/content/nomad/v0.11.x/content/api-docs/sentinel-policies.mdx
new file mode 100644
index 0000000000..455a050100
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/sentinel-policies.mdx
@@ -0,0 +1,178 @@
+---
+layout: api
+page_title: Sentinel Policies - HTTP API
+sidebar_title: Sentinel Policies
+description: >-
+ The /sentinel/policy/ endpoints are used to configure and manage Sentinel
+ policies.
+---
+
+# Sentinel Policies HTTP API
+
+The `/sentinel/policies` and `/sentinel/policy/` endpoints are used to manage Sentinel policies.
+For more details about Sentinel policies, please see the [Sentinel Policy Guide](https://learn.hashicorp.com/nomad/governance-and-policy/sentinel).
+
+Sentinel endpoints are only available when ACLs are enabled. For more details about ACLs, please see the [ACL Guide](https://learn.hashicorp.com/nomad?track=acls#operations-and-development).
+
+~> **Enterprise Only!** This API endpoint and functionality only exists in
+Nomad Enterprise. This is not present in the open source version of Nomad.
+
+## List Policies
+
+This endpoint lists all Sentinel policies. This lists the policies that have been replicated
+to the region, and may lag behind the authoritative region.
+
+| Method | Path | Produces |
+| ------ | -------------------- | ------------------ |
+| `GET` | `/sentinel/policies` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | ------------ |
+| `YES` | `all` | `management` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/sentinel/policies
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "Name": "foo",
+ "Description": "test policy",
+ "Scope": "submit-job",
+ "EnforcementLevel": "advisory",
+ "Hash": "CIs8aNX5OfFvo4D7ihWcQSexEJpHp+Za+dHSncVx5+8=",
+ "CreateIndex": 8,
+ "ModifyIndex": 8
+ }
+]
+```
+
+## Create or Update Policy
+
+This endpoint creates or updates an Sentinel Policy. This request is always forwarded to the
+authoritative region.
+
+| Method | Path | Produces |
+| ------ | ------------------------------- | -------------- |
+| `POST` | `/sentinel/policy/:policy_name` | `(empty body)` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `Name` `(string: )` - Specifies the name of the policy.
+ Creates the policy if the name does not exist, otherwise updates the existing policy.
+
+- `Description` `(string: )` - Specifies a human readable description.
+
+- `Scope` `(string: )` - Specifies the scope of when this policy applies. Only `submit-job` is currently supported.
+
+- `EnforcementLevel` `(string: )` - Specifies the enforcement level of the policy. Can be `advisory` which warns on failure,
+ `hard-mandatory` which prevents an operation on failure, and `soft-mandatory` which is like `hard-mandatory` but can be overridden.
+
+- `Policy` `(string: )` - Specifies the Sentinel policy itself.
+
+### Sample Payload
+
+```json
+{
+ "Name": "my-policy",
+ "Description": "This is a great policy",
+ "Scope": "submit-job",
+ "EnforcementLevel": "advisory",
+ "Policy": "main = rule { true }"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @payload.json \
+ https://localhost:4646/v1/sentinel/policy/my-policy
+```
+
+## Read Policy
+
+This endpoint reads a Sentinel policy with the given name. This queries the policy that have been
+replicated to the region, and may lag behind the authoritative region.
+
+| Method | Path | Produces |
+| ------ | ------------------------------- | ------------------ |
+| `GET` | `/sentinel/policy/:policy_name` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries), [consistency modes](/api-docs#consistency-modes) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | Consistency Modes | ACL Required |
+| ---------------- | ----------------- | ------------ |
+| `YES` | `all` | `management` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/sentinel/policy/foo
+```
+
+### Sample Response
+
+```json
+{
+ "Name": "foo",
+ "Description": "test policy",
+ "Scope": "submit-job",
+ "EnforcementLevel": "advisory",
+ "Policy": "main = rule { true }\n",
+ "Hash": "CIs8aNX5OfFvo4D7ihWcQSexEJpHp+Za+dHSncVx5+8=",
+ "CreateIndex": 8,
+ "ModifyIndex": 8
+}
+```
+
+## Delete Policy
+
+This endpoint deletes the named Sentinel policy. This request is always forwarded to the
+authoritative region.
+
+| Method | Path | Produces |
+| -------- | ------------------------------- | -------------- |
+| `DELETE` | `/sentinel/policy/:policy_name` | `(empty body)` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Parameters
+
+- `policy_name` `(string: )` - Specifies the policy name to delete.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ https://localhost:4646/v1/sentinel/policy/foo
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/status.mdx b/content/nomad/v0.11.x/content/api-docs/status.mdx
new file mode 100644
index 0000000000..f56e328ba7
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/status.mdx
@@ -0,0 +1,68 @@
+---
+layout: api
+page_title: Status - HTTP API
+sidebar_title: Status
+description: The /status endpoints query the Nomad system status.
+---
+
+# Status HTTP API
+
+The `/status` endpoints query the Nomad system status.
+
+## Read Leader
+
+This endpoint returns the address of the current leader in the region.
+
+| Method | Path | Produces |
+| ------ | ---------------- | ------------------ |
+| `GET` | `/status/leader` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/status/leader
+```
+
+### Sample Response
+
+```json
+"127.0.0.1:4647"
+```
+
+## List Peers
+
+This endpoint returns the set of raft peers in the region.
+
+| Method | Path | Produces |
+| ------ | --------------- | ------------------ |
+| `GET` | `/status/peers` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `none` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/status/peers
+```
+
+### Sample Response
+
+```json
+["127.0.0.1:4647"]
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/system.mdx b/content/nomad/v0.11.x/content/api-docs/system.mdx
new file mode 100644
index 0000000000..6a8d5e4e6b
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/system.mdx
@@ -0,0 +1,59 @@
+---
+layout: api
+page_title: System - HTTP API
+sidebar_title: System
+description: The /system endpoints are used for system maintenance.
+---
+
+# System HTTP API
+
+The `/system` endpoints are used to for system maintenance and should not be
+necessary for most users.
+
+## Force GC
+
+This endpoint initializes a garbage collection of jobs, evaluations, allocations, and
+nodes. This is an asynchronous operation.
+
+| Method | Path | Produces |
+| ------ | --------------- | ------------------ |
+| `PUT` | `/v1/system/gc` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request PUT \
+ https://localhost:4646/v1/system/gc
+```
+
+## Reconcile Summaries
+
+This endpoint reconciles the summaries of all registered jobs.
+
+| Method | Path | Produces |
+| ------ | -------------------------------- | ------------------ |
+| `PUT` | `/v1/system/reconcile/summaries` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ------------ |
+| `NO` | `management` |
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/system/reconcile/summaries
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/ui.mdx b/content/nomad/v0.11.x/content/api-docs/ui.mdx
new file mode 100644
index 0000000000..98b21f70a3
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/ui.mdx
@@ -0,0 +1,264 @@
+---
+layout: api
+page_title: UI
+sidebar_title: UI
+description: The /ui namespace is used to access the Nomad web user interface.
+---
+
+# Nomad Web UI
+
+Starting in v0.7, the Nomad UI is accessible at `/ui`. It is not namespaced by version. A request to `/`
+will also redirect to `/ui`.
+
+## List Jobs
+
+This page lists all known jobs in a paginated, searchable, and sortable table.
+
+| Path | Produces |
+| ---------- | ----------- |
+| `/ui/jobs` | `text/html` |
+
+### Parameters
+
+- `namespace` `(string: "")` - Specifies the namespace all jobs should be a member
+ of. This is specified as a query string parameter. Namespaces are an enterprise feature.
+
+- `sort` `(string: "")` - Specifies the property the list of jobs should be sorted by.
+ This is specified as a query string parameter.
+
+- `desc` `(boolean: false)` - Specifies whether or not the sort direction is descending
+ or ascending. This is specified as a query string parameter.
+
+- `search` `(string: "")` - Specifies a regular expression uses to filter the list of
+ visible jobs. This is specified as a query string parameter.
+
+- `page` `(int: 0)` - Specifies the page in the jobs list that should be visible. This
+ is specified as a query string parameter.
+
+## Job Detail
+
+This page shows an overview of a specific job. Details include name, status, type,
+priority, allocation statuses, and task groups. Additionally, if there is a running
+deployment for the job, it will be shown on the overview.
+
+This page shows an overview of a specific job. The exact information shown varies
+based on the type of job.
+
+- **Service Job** - Includes job metadata (name, status, priority, namespace), allocation
+ statuses, placement failures, active deployment, task groups, and evaluations.
+
+- **Batch Job** - Includes job metadata, allocation statuses, placement failures, task
+ groups, and evaluations.
+
+- **System Job** - Includes job metadata, allocation statuses, placement failures, task
+ groups, and evaluations.
+
+- **Periodic Job** - Includes job metadata, cron information force launch action, children statuses,
+ and children list.
+
+- **Parameterized Job** - Includes job metadata, children statuses, and children list.
+
+- **Periodic Child** - Includes job metadata, link to parent job, allocation statuses, placement
+ failures, task groups, and evaluations.
+
+- **Parameterized Child** - Includes job metadata, link to parent job, allocation statuses,
+ placement failures, task groups, evaluations, and dispatch payload.
+
+| Path | Produces |
+| ------------------ | ----------- |
+| `/ui/jobs/:job_id` | `text/html` |
+
+### Parameters
+
+- `sort` `(string: "")` - Specifies the property the list of task groups should be
+ sorted by. This is specified as a query string parameter.
+
+- `desc` `(boolean: false)` - Specifies whether or not the sort direction is descending
+ or ascending. This is specified as a query string parameter.
+
+- `page` `(int: 0)` - Specifies the page in the task groups list that should be visible. This
+ is specified as a query string parameter.
+
+### Job Definition
+
+This page shows the definition of a job as pretty-printed, syntax-highlighted, JSON.
+
+| Path | Produces |
+| ----------------------------- | ----------- |
+| `/ui/jobs/:job_id/definition` | `text/html` |
+
+### Job Versions
+
+This page lists all available versions for a job in a timeline view. Each version in
+the timeline can be expanded to show a pretty-printed, syntax-highlighted diff between
+job versions.
+
+| Path | Produces |
+| --------------------------- | ----------- |
+| `/ui/jobs/:job_id/versions` | `text/html` |
+
+### Job Deployments
+
+This page lists all available deployments for a job when the job has deployments. The
+deployments are listed in a timeline view. Each deployment shows pertinent information
+such as deployment ID, status, associated version, and submit time. Each deployment can
+also be expanded to show detail information regarding canary placements, allocation
+placements, healthy and unhealthy allocations, as well the current description for the
+status. A table of task groups is also present in the detail view, which shows allocation
+metrics by task group. Lastly, each expanded deployment lists all associated allocations
+in a table to drill into for task events.
+
+| Path | Produces |
+| ------------------------------ | ----------- |
+| `/ui/jobs/:job_id/deployments` | `text/html` |
+
+## Task Group Detail
+
+This page shows an overview of a specific task group. Details include the number of tasks, the aggregated amount of reserved CPU, memory, and disk, all associated allocations broken
+down by status, and a list of allocations. The list of allocations include details such as
+status, the node the allocation was placed on, and the current CPU and Memory usage of the
+allocations.
+
+| Path | Produces |
+| ----------------------------------- | ----------- |
+| `/ui/jobs/:job_id/:task_group_name` | `text/html` |
+
+### Parameters
+
+- `sort` `(string: "")` - Specifies the property the list of allocations should be sorted by.
+ This is specified as a query string parameter.
+
+- `desc` `(boolean: false)` - Specifies whether or not the sort direction is descending
+ or ascending. This is specified as a query string parameter.
+
+- `search` `(string: "")` - Specifies a regular expression uses to filter the list of
+ visible allocations. This is specified as a query string parameter.
+
+- `page` `(int: 0)` - Specifies the page in the allocations list that should be visible. This
+ is specified as a query string parameter.
+
+## Allocation Detail
+
+This page shows details and events for an allocation. Details include the job the allocation
+belongs to, the node the allocation is placed on, a list of all tasks, and lists of task
+events per task. Each task in the task list includes the task name, state, last event, time,
+and addresses. Each task event in a task history list includes the time, type, and
+description of the event.
+
+| Path | Produces |
+| --------------------------- | ----------- |
+| `/ui/allocations/:alloc_id` | `text/html` |
+
+### Parameters
+
+- `sort` `(string: "")` - Specifies the property the list of tasks should be sorted by.
+ This is specified as a query string parameter.
+
+- `desc` `(boolean: false)` - Specifies whether or not the sort direction is descending
+ or ascending. This is specified as a query string parameter.
+
+## Task Detail
+
+This page shows details and events for a specific task. Details include when the task started
+and stopped, all static and dynamic addresses, and all recent events.
+
+| Path | Produces |
+| -------------------------------------- | ----------- |
+| `/ui/allocations/:alloc_id/:task_name` | `text/html` |
+
+## Task Logs
+
+This page streams `stdout` and `stderr` logs for a task. By default, `stdout` is tailed, but
+there are available actions to see the head of the log, pause and play streaming, and switching
+to `stderr`.
+
+| Path | Produces |
+| ------------------------------------------- | ----------- |
+| `/ui/allocations/:alloc_id/:task_name/logs` | `text/html` |
+
+## Nodes List
+
+This page lists all nodes in the Nomad cluster in a sortable, searchable, paginated
+table.
+
+| Path | Produces |
+| ----------- | ----------- |
+| `/ui/nodes` | `text/html` |
+
+### Parameters
+
+- `sort` `(string: "")` - Specifies the property the list of client nodes should be sorted by.
+ This is specified as a query string parameter.
+
+- `desc` `(boolean: false)` - Specifies whether or not the sort direction is descending
+ or ascending. This is specified as a query string parameter.
+
+- `search` `(string: "")` - Specifies a regular expression uses to filter the list of
+ visible client nodes. This is specified as a query string parameter.
+
+- `page` `(int: 0)` - Specifies the page in the client nodes list that should be visible. This
+ is specified as a query string parameter.
+
+## Node Detail
+
+This page shows the details of a node, including the node name, status, full ID,
+address, port, datacenter, allocations, and attributes.
+
+| Path | Produces |
+| -------------------- | ----------- |
+| `/ui/nodes/:node_id` | `text/html` |
+
+### Parameters
+
+- `sort` `(string: "")` - Specifies the property the list of allocations should be sorted by.
+ This is specified as a query string parameter.
+
+- `desc` `(boolean: false)` - Specifies whether or not the sort direction is descending
+ or ascending. This is specified as a query string parameter.
+
+- `search` `(string: "")` - Specifies a regular expression uses to filter the list of
+ visible allocations. This is specified as a query string parameter.
+
+- `page` `(int: 0)` - Specifies the page in the allocations list that should be visible. This
+ is specified as a query string parameter.
+
+## Servers List
+
+This page lists all servers in the Nomad cluster in a sortable table. Details for each
+server include the server status, address, port, datacenter, and whether or not it is
+the leader.
+
+| Path | Produces |
+| ------------- | ----------- |
+| `/ui/servers` | `text/html` |
+
+### Parameters
+
+- `sort` `(string: "")` - Specifies the property the list of server agents should be sorted by.
+ This is specified as a query string parameter.
+
+- `desc` `(boolean: false)` - Specifies whether or not the sort direction is descending
+ or ascending. This is specified as a query string parameter.
+
+- `page` `(int: 0)` - Specifies the page in the server agents list that should be visible. This
+ is specified as a query string parameter.
+
+## Server Detail
+
+This page lists all tags associated with a server.
+
+| Path | Produces |
+| ------------------------ | ----------- |
+| `/ui/servers/:server_id` | `text/html` |
+
+## ACL Tokens
+
+This page lets you enter an ACL token (both accessor ID and secret ID) to use with the UI.
+If the cluster does not have ACLs enabled, this page is unnecessary. If the cluster has an
+anonymous policy that grants cluster-wide read access, this page is unnecessary. If the
+anonymous policy only grants partial read access, then providing an ACL Token will
+authenticate all future requests to allow read access to additional resources.
+
+| Path | Produces |
+| --------------------- | ----------- |
+| `/ui/settings/tokens` | `text/html` |
diff --git a/content/nomad/v0.11.x/content/api-docs/validate.mdx b/content/nomad/v0.11.x/content/api-docs/validate.mdx
new file mode 100644
index 0000000000..92f04330b5
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/validate.mdx
@@ -0,0 +1,65 @@
+---
+layout: api
+page_title: Validate - HTTP API
+sidebar_title: Validate
+description: |-
+ The /validate endpoints are used to validate object structs, fields, and
+ types.
+---
+
+# Validate HTTP API
+
+The `/validate` endpoints are used to validate object structs, fields, and
+types.
+
+## Validate Job
+
+This endpoint validates a Nomad job file. The local Nomad agent forwards the
+request to a server. In the event a server can't be reached the agent verifies
+the job file locally but skips validating driver configurations.
+
+~> This endpoint accepts a **JSON job file**, not an HCL job file.
+
+| Method | Path | Produces |
+| ------ | ------------------ | ------------------ |
+| `POST` | `/v1/validate/job` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | -------------------- |
+| `NO` | `namespace:read-job` |
+
+### Parameters
+
+There are no parameters, but the request _body_ contains the entire job file.
+
+### Sample Payload
+
+```text
+(any valid nomad job IN JSON FORMAT)
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request POST \
+ --data @my-job.nomad \
+ https://localhost:4646/v1/validate/job
+```
+
+### Sample Response
+
+```json
+{
+ "DriverConfigValidated": true,
+ "ValidationErrors": [
+ "Task group cache validation failed: 1 error(s) occurred:\n\n* Task redis validation failed: 1 error(s) occurred:\n\n* 1 error(s) occurred:\n\n* minimum CPU value is 20; got 1"
+ ],
+ "Warnings": "1 warning(s):\n\n* Group \"cache\" has warnings: 1 error(s) occurred:\n\n* Update max parallel count is greater than task group count (13 > 1). A destructive change would result in the simultaneous replacement of all allocations.",
+ "Error": "1 error(s) occurred:\n\n* Task group cache validation failed: 1 error(s) occurred:\n\n* Task redis validation failed: 1 error(s) occurred:\n\n* 1 error(s) occurred:\n\n* minimum CPU value is 20; got 1"
+}
+```
diff --git a/content/nomad/v0.11.x/content/api-docs/volumes.mdx b/content/nomad/v0.11.x/content/api-docs/volumes.mdx
new file mode 100644
index 0000000000..b4d8a85573
--- /dev/null
+++ b/content/nomad/v0.11.x/content/api-docs/volumes.mdx
@@ -0,0 +1,328 @@
+---
+layout: api
+page_title: Volumes - HTTP API
+sidebar_title: Volumes
+description: The `/volume` endpoints are used to query for and interact with volumes.
+---
+
+# Volumes HTTP API
+
+The `/volume` endpoints are used to query for and interact with volumes.
+
+## List Volumes
+
+This endpoint lists all volumes.
+
+| Method | Path | Produces |
+| ------ | ------------- | ------------------ |
+| `GET` | `/v1/volumes` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------- |
+| `YES` | `namespace:csi-list-volume` |
+
+### Parameters
+
+- `type` `(string: "")`- Specifies the type of volume to
+ query. Currently only supports `csi`. This is specified as a query
+ string parameter. Returns an empty list if omitted.
+
+- `node_id` `(string: "")` - Specifies a string to filter volumes
+ based on an Node ID prefix. Because the value is decoded to bytes,
+ the prefix must have an even number of hexadecimal characters
+ (0-9a-f). This is specified as a query string parameter.
+
+- `plugin_id` `(string: "")` - Specifies a string to filter volumes
+ based on a plugin ID prefix. Because the value is decoded to bytes,
+ the prefix must have an even number of hexadecimal characters
+ (0-9a-f). This is specified as a query string parameter.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/volumes?type=csi&node_id=foo&plugin_id=plugin-id1
+```
+
+### Sample Response
+
+```json
+[
+ {
+ "ID": "volume-id1",
+ "ExternalID": "volume-id1",
+ "Namespace": "default",
+ "Name": "volume id1",
+ "Topologies": [
+ {
+ "foo": "bar"
+ }
+ ],
+ "AccessMode": "multi-node-single-writer",
+ "AttachmentMode": "file-system",
+ "Schedulable": true,
+ "PluginID": "plugin-id1",
+ "Provider": "ebs",
+ "ControllerRequired": true,
+ "ControllersHealthy": 3,
+ "ControllersExpected": 3,
+ "NodesHealthy": 15,
+ "NodesExpected": 18,
+ "ResourceExhausted": 0,
+ "CreateIndex": 42,
+ "ModifyIndex": 64
+ }
+]
+```
+
+## Read Volume
+
+This endpoint reads information about a specific volume.
+
+| Method | Path | Produces |
+| ------ | --------------------------- | ------------------ |
+| `GET` | `/v1/volume/csi/:volume_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | --------------------------- |
+| `YES` | `namespace:csi-read-volume` |
+
+### Parameters
+
+- `:volume_id` `(string: )`- Specifies the ID of the
+ volume. This must be the full ID. This is specified as part of the
+ path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ https://localhost:4646/v1/volume/csi/volume-id1
+```
+
+### Sample Response
+
+```json
+{
+ "ID": "volume-id1",
+ "Name": "volume id1",
+ "Namespace": "default",
+ "ExternalID": "volume-id1",
+ "Topologies": [{ "foo": "bar" }],
+ "AccessMode": "multi-node-single-writer",
+ "AttachmentMode": "file-system",
+ "Allocations": [
+ {
+ "ID": "a8198d79-cfdb-6593-a999-1e9adabcba2e",
+ "EvalID": "5456bd7a-9fc0-c0dd-6131-cbee77f57577",
+ "Name": "example.cache[0]",
+ "NodeID": "fb2170a8-257d-3c64-b14d-bc06cc94e34c",
+ "PreviousAllocation": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "NextAllocation": "cd13d9b9-4f97-7184-c88b-7b451981616b",
+ "RescheduleTracker": {
+ "Events": [
+ {
+ "PrevAllocID": "516d2753-0513-cfc7-57ac-2d6fac18b9dc",
+ "PrevNodeID": "9230cd3b-3bda-9a3f-82f9-b2ea8dedb20e",
+ "RescheduleTime": 1517434161192946200,
+ "Delay": "5000000000"
+ }
+ ]
+ },
+ "JobID": "example",
+ "TaskGroup": "cache",
+ "DesiredStatus": "run",
+ "DesiredDescription": "",
+ "ClientStatus": "running",
+ "ClientDescription": "",
+ "TaskStates": {
+ "redis": {
+ "State": "running",
+ "FinishedAt": "0001-01-01T00:00:00Z",
+ "LastRestart": "0001-01-01T00:00:00Z",
+ "Restarts": 0,
+ "StartedAt": "2017-07-25T23:36:26.106431265Z",
+ "Failed": false,
+ "Events": [
+ {
+ "Type": "Received",
+ "Time": 1495747371795703800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ },
+ {
+ "Type": "Driver",
+ "Time": 1495747371798867200,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": "Downloading image redis:3.2"
+ },
+ {
+ "Type": "Started",
+ "Time": 1495747379525667800,
+ "FailsTask": false,
+ "RestartReason": "",
+ "SetupError": "",
+ "DriverError": "",
+ "ExitCode": 0,
+ "Signal": 0,
+ "Message": "",
+ "KillTimeout": 0,
+ "KillError": "",
+ "KillReason": "",
+ "StartDelay": 0,
+ "DownloadError": "",
+ "ValidationError": "",
+ "DiskLimit": 0,
+ "FailedSibling": "",
+ "VaultError": "",
+ "TaskSignalReason": "",
+ "TaskSignal": "",
+ "DriverMessage": ""
+ }
+ ]
+ }
+ },
+ "CreateIndex": 54,
+ "ModifyIndex": 57,
+ "CreateTime": 1495747371794276400,
+ "ModifyTime": 1495747371794276400
+ }
+ ],
+ "Schedulable": true,
+ "PluginID": "plugin-id1",
+ "Provider": "ebs",
+ "Version": "1.0.1",
+ "ControllerRequired": true,
+ "ControllersHealthy": 3,
+ "ControllersExpected": 3,
+ "NodesHealthy": 15,
+ "NodesExpected": 18,
+ "ResourceExhausted": 0,
+ "CreateIndex": 42,
+ "ModifyIndex": 64
+}
+```
+
+## Register Volume
+
+This endpoint registers an external volume with Nomad. It is an error
+to register an existing volume.
+
+| Method | Path | Produces |
+| ------ | --------------------------- | ------------------ |
+| `PUT` | `/v1/volume/csi/:volume_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------------- |
+| `NO` | `namespace:csi-write-volume` |
+
+### Parameters
+
+- `:volume_id` `(string: )`- Specifies the ID of the
+ volume. This must be the full ID. This is specified as part of the
+ path.
+
+### Sample Payload
+
+The payload must include a JSON document that described the volume's
+parameters.
+
+```json
+{
+ "ID": "volume-id1",
+ "Name": "volume id1",
+ "Namespace": "default",
+ "ExternalID": "volume-id1",
+ "Topologies": [{ "foo": "bar" }],
+ "AccessMode": "multi-node-single-writer",
+ "AttachmentMode": "file-system",
+ "PluginID": "plugin-id1"
+}
+```
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request PUT \
+ --data @payload.json \
+ https://localhost:4646/v1/volume/csi/volume-id1
+```
+
+## Delete Volume
+
+This endpoint deregisters an external volume with Nomad. It is an
+error to deregister a volume that is in use.
+
+| Method | Path | Produces |
+| ------- | --------------------------- | ------------------ |
+| `DELTE` | `/v1/volume/csi/:volume_id` | `application/json` |
+
+The table below shows this endpoint's support for
+[blocking queries](/api-docs#blocking-queries) and
+[required ACLs](/api-docs#acls).
+
+| Blocking Queries | ACL Required |
+| ---------------- | ---------------------------- |
+| `NO` | `namespace:csi-write-volume` |
+
+### Parameters
+
+- `:volume_id` `(string: )`- Specifies the ID of the
+ volume. This must be the full ID. This is specified as part of the
+ path.
+
+### Sample Request
+
+```shell-session
+$ curl \
+ --request DELETE \
+ --data @payload.json \
+ https://localhost:4646/v1/volume/csi/volume-id1
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/bootstrap.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/bootstrap.mdx
new file mode 100644
index 0000000000..836c720e09
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/bootstrap.mdx
@@ -0,0 +1,40 @@
+---
+layout: docs
+page_title: 'Commands: acl bootstrap'
+sidebar_title: bootstrap
+description: |
+ The bootstrap command is used to create the initial ACL token.
+---
+
+# Command: acl bootstrap
+
+The `acl bootstrap` command is used to bootstrap the initial ACL token.
+
+## Usage
+
+```plaintext
+nomad acl bootstrap [options]
+```
+
+The `acl bootstrap` command requires no arguments.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+Bootstrap the initial token:
+
+```shell-session
+$ nomad acl bootstrap
+Accessor ID = 5b7fd453-d3f7-6814-81dc-fcfe6daedea5
+Secret ID = 9184ec35-65d4-9258-61e3-0c066d0a45c5
+Name = Bootstrap Token
+Type = management
+Global = true
+Policies = n/a
+Create Time = 2017-09-11 17:38:10.999089612 +0000 UTC
+Create Index = 7
+Modify Index = 7
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/index.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/index.mdx
new file mode 100644
index 0000000000..9f83e24f31
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/index.mdx
@@ -0,0 +1,43 @@
+---
+layout: docs
+page_title: 'Commands: acl'
+sidebar_title: acl
+description: |
+ The acl command is used to interact with ACL policies and tokens.
+---
+
+# Command: acl
+
+The `acl` command is used to interact with ACL policies and tokens. Learn more
+about using Nomad's ACL system in the [Secure Nomad with Access Control
+guide][secure-guide].
+
+## Usage
+
+Usage: `nomad acl [options]`
+
+Run `nomad acl -h` for help on that subcommand. The following
+subcommands are available:
+
+- [`acl bootstrap`][bootstrap] - Bootstrap the initial ACL token
+- [`acl policy apply`][policyapply] - Create or update ACL policies
+- [`acl policy delete`][policydelete] - Delete an existing ACL policies
+- [`acl policy info`][policyinfo] - Fetch information on an existing ACL policy
+- [`acl policy list`][policylist] - List available ACL policies
+- [`acl token create`][tokencreate] - Create new ACL token
+- [`acl token delete`][tokendelete] - Delete an existing ACL token
+- [`acl token info`][tokeninfo] - Get info on an existing ACL token
+- [`acl token self`][tokenself] - Get info on self ACL token
+- [`acl token update`][tokenupdate] - Update existing ACL token
+
+[bootstrap]: /docs/commands/acl/bootstrap
+[policyapply]: /docs/commands/acl/policy-apply
+[policydelete]: /docs/commands/acl/policy-delete
+[policyinfo]: /docs/commands/acl/policy-info
+[policylist]: /docs/commands/acl/policy-list
+[tokencreate]: /docs/commands/acl/token-create
+[tokenupdate]: /docs/commands/acl/token-update
+[tokendelete]: /docs/commands/acl/token-delete
+[tokeninfo]: /docs/commands/acl/token-info
+[tokenself]: /docs/commands/acl/token-self
+[secure-guide]: https://learn.hashicorp.com/nomad/acls/fundamentals
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/policy-apply.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/policy-apply.mdx
new file mode 100644
index 0000000000..3f7c8d7cc3
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/policy-apply.mdx
@@ -0,0 +1,37 @@
+---
+layout: docs
+page_title: 'Commands: acl policy apply'
+sidebar_title: policy apply
+description: |
+ The policy apply command is used to create or update ACL policies.
+---
+
+# Command: acl policy apply
+
+The `acl policy apply` command is used to create or update ACL policies.
+
+## Usage
+
+```plaintext
+nomad acl policy apply [options]
+```
+
+The `acl policy apply` command requires two arguments, the policy name and path
+to file. The policy can be read from stdin by setting the path to "-".
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Apply Options
+
+- `-description`: Sets the human readable description for the ACL policy.
+
+## Examples
+
+Create a new ACL Policy:
+
+```shell-session
+$ nomad acl policy apply my-policy my-policy.json
+Successfully wrote 'my-policy' ACL policy!
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/policy-delete.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/policy-delete.mdx
new file mode 100644
index 0000000000..95d88b9710
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/policy-delete.mdx
@@ -0,0 +1,32 @@
+---
+layout: docs
+page_title: 'Commands: acl policy delete'
+sidebar_title: policy delete
+description: |
+ The policy delete command is used to delete an existing ACL policies.
+---
+
+# Command: acl policy delete
+
+The `acl policy delete` command is used to delete an existing ACL policies.
+
+## Usage
+
+```plaintext
+nomad acl policy delete
+```
+
+The `acl policy delete` command requires the policy name as an argument.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+Delete an ACL Policy:
+
+```shell-session
+$ nomad acl policy delete my-policy
+Successfully deleted 'my-policy' ACL policy!
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/policy-info.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/policy-info.mdx
new file mode 100644
index 0000000000..d2bf26165f
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/policy-info.mdx
@@ -0,0 +1,42 @@
+---
+layout: docs
+page_title: 'Commands: acl policy info'
+sidebar_title: policy info
+description: >
+ The policy info command is used to fetch information on an existing ACL
+ policy.
+---
+
+# Command: acl policy info
+
+The `acl policy info` command is used to fetch information on an existing ACL
+policy.
+
+## Usage
+
+```plaintext
+nomad acl policy info
+```
+
+The `acl policy info` command requires the policy name.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+Fetch information on an existing ACL Policy:
+
+```shell-session
+$ nomad acl policy info my-policy
+Name = my-policy
+Description =
+Rules = {
+ "Name": "my-policy",
+ "Description": "This is a great policy",
+ "Rules": "list_jobs"
+}
+CreateIndex = 749
+ModifyIndex = 758
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/policy-list.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/policy-list.mdx
new file mode 100644
index 0000000000..417e797b73
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/policy-list.mdx
@@ -0,0 +1,37 @@
+---
+layout: docs
+page_title: 'Commands: acl policy list'
+sidebar_title: policy list
+description: |
+ The policy list command is used to list available ACL policies.
+---
+
+# Command: acl policy list
+
+The `acl policy list` command is used to list available ACL policies.
+
+## Usage
+
+```plaintext
+nomad acl policy list
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## List Options
+
+- `-json` : Output the policies in their JSON format.
+- `-t` : Format and display the policies using a Go template.
+
+## Examples
+
+List all ACL policies:
+
+```shell-session
+$ nomad acl policy list
+Name Description
+policy-1 The first policy
+policy-2 The second policy
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/token-create.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/token-create.mdx
new file mode 100644
index 0000000000..678b9756b8
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/token-create.mdx
@@ -0,0 +1,53 @@
+---
+layout: docs
+page_title: 'Commands: acl token create'
+sidebar_title: token create
+description: |
+ The token create command is used to create new ACL tokens.
+---
+
+# Command: acl token create
+
+The `acl token create` command is used to create new ACL tokens.
+
+## Usage
+
+```plaintext
+nomad acl token create [options]
+```
+
+The `acl token create` command requires no arguments.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Create Options
+
+- `-name`: Sets the human readable name for the ACL token.
+
+- `-type`: Sets the type of token. Must be one of "client" (default), or
+ "management".
+
+- `-global`: Toggles the global mode of the token. Global tokens are replicated
+ to all regions. Defaults false.
+
+- `-policy`: Specifies a policy to associate with the token. Can be specified
+ multiple times, but only with client type tokens.
+
+## Examples
+
+Create a new ACL token:
+
+```shell-session
+$ nomad acl token create -name="my token" -policy=foo -policy=bar
+Accessor ID = d532c40a-30f1-695c-19e5-c35b882b0efd
+Secret ID = 85310d07-9afa-ef53-0933-0c043cd673c7
+Name = my token
+Type = client
+Global = false
+Policies = [foo bar]
+Create Time = 2017-09-15 05:04:41.814954949 +0000 UTC
+Create Index = 8
+Modify Index = 8
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/token-delete.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/token-delete.mdx
new file mode 100644
index 0000000000..6bd65565aa
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/token-delete.mdx
@@ -0,0 +1,33 @@
+---
+layout: docs
+page_title: 'Commands: acl token delete'
+sidebar_title: token delete
+description: |
+ The token create command is used to delete existing ACL tokens.
+---
+
+# Command: acl token delete
+
+The `acl token delete` command is used to delete existing ACL tokens.
+
+## Usage
+
+```plaintext
+nomad acl token delete
+```
+
+The `acl token delete` command requires an existing token's AccessorID.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+Delete an existing ACL token:
+
+```shell-session
+$ nomad acl token delete d532c40a-30f1-695c-19e5-c35b882b0efd
+
+Token d532c40a-30f1-695c-19e5-c35b882b0efd successfully deleted
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/token-info.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/token-info.mdx
new file mode 100644
index 0000000000..6adcb7d5b8
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/token-info.mdx
@@ -0,0 +1,41 @@
+---
+layout: docs
+page_title: 'Commands: acl token info'
+sidebar_title: token info
+description: >
+ The token info command is used to fetch information about an existing ACL
+ token.
+---
+
+# Command: acl token info
+
+The `acl token info` command is used to fetch information about an existing ACL token.
+
+## Usage
+
+```plaintext
+nomad acl token info
+```
+
+The `acl token info` command requires an existing token's AccessorID.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+Fetch information about an existing ACL token:
+
+```shell-session
+$ nomad acl token info d532c40a-30f1-695c-19e5-c35b882b0efd
+Accessor ID = d532c40a-30f1-695c-19e5-c35b882b0efd
+Secret ID = 85310d07-9afa-ef53-0933-0c043cd673c7
+Name = my token
+Type = client
+Global = false
+Policies = [foo bar]
+Create Time = 2017-09-15 05:04:41.814954949 +0000 UTC
+Create Index = 8
+Modify Index = 8
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/token-list.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/token-list.mdx
new file mode 100644
index 0000000000..1599643556
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/token-list.mdx
@@ -0,0 +1,37 @@
+---
+layout: docs
+page_title: 'Commands: acl token list'
+sidebar_title: token list
+description: |
+ The token list command is used to list existing ACL tokens.
+---
+
+# Command: acl token list
+
+The `acl token list` command is used to list existing ACL tokens.
+
+## Usage
+
+```plaintext
+nomad acl token list
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## List Options
+
+- `-json` : Output the tokens in their JSON format.
+- `-t` : Format and display the tokens using a Go template.
+
+## Examples
+
+List all ACL tokens:
+
+```shell-session
+$ nomad acl token list
+Name Type Global Accessor ID
+Bootstrap Token management true 32b61154-47f1-3694-1430-a5544bafcd3e
+ client false fcf2bf84-a257-8f39-9d16-a954ed25b5be
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/token-self.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/token-self.mdx
new file mode 100644
index 0000000000..a3544208d1
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/token-self.mdx
@@ -0,0 +1,42 @@
+---
+layout: docs
+page_title: 'Commands: acl token self'
+sidebar_title: token self
+description: >
+ The token self command is used to fetch information about the currently set
+ ACL token.
+---
+
+# Command: acl token self
+
+The `acl token self` command is used to fetch information about the currently
+set ACL token.
+
+## Usage
+
+```plaintext
+nomad acl token self
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+Fetch information about an existing ACL token:
+
+```shell-session
+$ export NOMAD_TOKEN=85310d07-9afa-ef53-0933-0c043cd673c7
+
+$ nomad acl token self
+Accessor ID = d532c40a-30f1-695c-19e5-c35b882b0efd
+Secret ID = 85310d07-9afa-ef53-0933-0c043cd673c7
+Name = my token
+Type = client
+Global = false
+Policies = [foo bar]
+Create Time = 2017-09-15 05:04:41.814954949 +0000 UTC
+Create Index = 8
+Modify Index = 8
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/acl/token-update.mdx b/content/nomad/v0.11.x/content/docs/commands/acl/token-update.mdx
new file mode 100644
index 0000000000..6f5004ff68
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/acl/token-update.mdx
@@ -0,0 +1,53 @@
+---
+layout: docs
+page_title: 'Commands: acl token update'
+sidebar_title: token update
+description: |
+ The token update command is used to update existing ACL tokens.
+---
+
+# Command: acl token update
+
+The `acl token update` command is used to update existing ACL tokens.
+
+## Usage
+
+```plaintext
+nomad acl token update [options]
+```
+
+The `acl token update` command requires an existing token's accessor ID.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Create Options
+
+- `-name`: Sets the human readable name for the ACL token.
+
+- `-type`: Sets the type of token. Must be one of "client" (default), or
+ "management".
+
+- `-global`: Toggles the global mode of the token. Global tokens are replicated
+ to all regions. Defaults false.
+
+- `-policy`: Specifies a policy to associate with the token. Can be specified
+ multiple times, but only with client type tokens.
+
+## Examples
+
+Update an existing ACL token:
+
+```shell-session
+$ nomad acl token update -name="my updated token" -policy=foo -policy=bar d532c40a-30f1-695c-19e5-c35b882b0efd
+Accessor ID = d532c40a-30f1-695c-19e5-c35b882b0efd
+Secret ID = 85310d07-9afa-ef53-0933-0c043cd673c7
+Name = my updated token
+Type = client
+Global = false
+Policies = [foo bar]
+Create Time = 2017-09-15 05:04:41.814954949 +0000 UTC
+Create Index = 8
+Modify Index = 8
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/agent-info.mdx b/content/nomad/v0.11.x/content/docs/commands/agent-info.mdx
new file mode 100644
index 0000000000..ddbbe6ac48
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/agent-info.mdx
@@ -0,0 +1,80 @@
+---
+layout: docs
+page_title: 'Commands: agent-info'
+sidebar_title: agent-info
+description: |
+ Display information and status of a running agent.
+---
+
+# Command: agent-info
+
+The `agent-info` command dumps metrics and status information of a running
+agent. The information displayed pertains to the specific agent the CLI
+is connected to. This is useful for troubleshooting and performance monitoring.
+
+## Usage
+
+```plaintext
+nomad agent-info [options]
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Output
+
+Depending on the agent queried, information from different subsystems is
+returned. These subsystems are described below:
+
+- client - Status of the local Nomad client
+- nomad - Status of the local Nomad server
+- serf - Gossip protocol metrics and information
+- raft - Status information about the Raft consensus protocol
+- runtime - Various metrics from the runtime environment
+
+## Examples
+
+```shell-session
+$ nomad agent-info
+raft
+ commit_index = 0
+ fsm_pending = 0
+ last_contact = never
+ last_snapshot_term = 0
+ state = Follower
+ term = 0
+ applied_index = 0
+ last_log_index = 0
+ last_log_term = 0
+ last_snapshot_index = 0
+ num_peers = 0
+runtime
+ cpu_count = 4
+ goroutines = 43
+ kernel.name = darwin
+ max_procs = 4
+ version = go1.5
+ arch = amd64
+serf
+ intent_queue = 0
+ member_time = 1
+ query_queue = 0
+ event_time = 1
+ event_queue = 0
+ failed = 0
+ left = 0
+ members = 1
+ query_time = 1
+ encrypted = false
+client
+ heartbeat_ttl = 0
+ known_servers = 0
+ last_heartbeat = 9223372036854775807
+ num_allocations = 0
+nomad
+ bootstrap = false
+ known_regions = 1
+ leader = false
+ server = true
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/agent.mdx b/content/nomad/v0.11.x/content/docs/commands/agent.mdx
new file mode 100644
index 0000000000..6970eb8213
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/agent.mdx
@@ -0,0 +1,225 @@
+---
+layout: docs
+page_title: 'Commands: agent'
+sidebar_title: agent
+description: |
+ The agent command is the main entrypoint to running a Nomad client or server.
+---
+
+# Command: agent
+
+The agent command is the heart of Nomad: it runs the agent that handles client
+or server functionality, including exposing interfaces for client consumption
+and running jobs.
+
+Due to the power and flexibility of this command, the Nomad agent is documented
+in its own section. See the [Nomad Agent] guide and the [Configuration]
+documentation section for more information on how to use this command and the
+options it has.
+
+## Command-line Options
+
+A subset of the available Nomad agent configuration can optionally be passed in
+via CLI arguments. The `agent` command accepts the following arguments:
+
+- `-alloc-dir=`: Equivalent to the Client [alloc_dir] config
+ option.
+
+- `-acl-enabled`: Equivalent to the ACL [enabled] config option.
+
+- `-acl-replication-token`: Equivalent to the ACL [replication_token] config
+ option.
+
+- `-bind=`: Equivalent to the [bind_addr] config option.
+
+- `-bootstrap-expect=`: Equivalent to the
+ [bootstrap_expect] config option.
+
+- `-client`: Enable client mode on the local agent.
+
+- `-config=`: Specifies the path to a configuration file or a directory of
+ configuration files to load. Can be specified multiple times.
+
+- `-consul-address=`: Equivalent to the [address] config option.
+
+- `-consul-auth=`: Equivalent to the [auth] config option.
+
+- `-consul-auto-advertise`: Equivalent to the [auto_advertise] config option.
+
+- `-consul-ca-file=`: Equivalent to the [ca_file] config option.
+
+- `-consul-cert-file=`: Equivalent to the [cert_file] config option.
+
+- `-consul-checks-use-advertise`: Equivalent to the [checks_use_advertise]
+ config option.
+
+- `-consul-client-auto-join`: Equivalent to the [client_auto_join] config
+ option.
+
+- `-consul-client-service-name=`: Equivalent to the [client_service_name]
+ config option.
+
+- `-consul-client-http-check-name=`: Equivalent to the
+ [client_http_check_name] config option.
+
+- `-consul-key-file=`: Equivalent to the [key_file] config option.
+
+- `-consul-server-service-name=`: Equivalent to the [server_service_name]
+ config option.
+
+- `-consul-server-http-check-name=`: Equivalent to the
+ [server_http_check_name] config option.
+
+- `-consul-server-serf-check-name=`: Equivalent to the
+ [server_serf_check_name] config option.
+
+- `-consul-server-rpc-check-name=`: Equivalent to the
+ [server_rpc_check_name] config option.
+
+- `-consul-server-auto-join`: Equivalent to the [server_auto_join] config
+ option.
+
+- `-consul-ssl`: Equivalent to the [ssl] config option.
+
+- `-consul-token=`: Equivalent to the [token] config option.
+
+- `-consul-verify-ssl`: Equivalent to the [verify_ssl] config option.
+
+- `-data-dir=`: Equivalent to the [data_dir] config option.
+
+- `-dc=`: Equivalent to the [datacenter] config option.
+
+- `-dev`: Start the agent in development mode. This enables a pre-configured
+ dual-role agent (client + server) which is useful for developing or testing
+ Nomad. No other configuration is required to start the agent in this mode,
+ but you may pass an optional comma-separated list of mode configurations:
+
+- `-dev-connect`: Start the agent in development mode, but bind to a public
+ network interface rather than localhost for using Consul Connect. This mode
+ is supported only on Linux as root.
+
+- `-encrypt`: Set the Serf encryption key. See the [Encryption Overview] for
+ more details.
+
+- `-join=`: Address of another agent to join upon starting up. This can
+ be specified multiple times to specify multiple agents to join.
+
+- `-log-level=`: Equivalent to the [log_level] config option.
+
+- `-log-json`: Equivalent to the [log_json] config option.
+
+- `-meta=`: Equivalent to the Client [meta] config option.
+
+- `-network-interface=`: Equivalent to the Client
+ [network_interface] config option.
+
+- `-network-speed=`: Equivalent to the Client
+ [network_speed] config option.
+
+- `-node=`: Equivalent to the [name] config option.
+
+- `-node-class=`: Equivalent to the Client [node_class]
+ config option.
+
+- `-plugin-dir=`: Equivalent to the [plugin_dir] config option.
+
+- `-region=`: Equivalent to the [region] config option.
+
+- `-rejoin`: Equivalent to the [rejoin_after_leave] config option.
+
+- `-retry-interval`: Equivalent to the [retry_interval] config option.
+
+- `-retry-join`: Similar to `-join` but allows retrying a join if the first
+ attempt fails.
+
+ ```shell-session
+ $ nomad agent -retry-join "127.0.0.1:4648"
+ ```
+
+ `retry-join` can be defined as a command line flag only for servers. Clients
+ can configure `retry-join` only in configuration files.
+
+- `-retry-max`: Similar to the [retry_max] config option.
+
+- `-server`: Enable server mode on the local agent.
+
+- `-servers=`: Equivalent to the Client [servers] config
+ option.
+
+- `-state-dir=`: Equivalent to the Client [state_dir] config
+ option.
+
+- `-vault-enabled`: Whether to enable or disabled Vault integration.
+
+- `-vault-address=`: The address to communicate with Vault.
+
+- `-vault-token=`: The Vault token used to derive tokens. Only needs to
+ be set on Servers. Overrides the Vault token read from the VAULT_TOKEN
+ environment variable.
+
+- `-vault-create-from-role=`: The role name to create tokens for tasks
+ from.
+
+- `-vault-ca-file=`: Path to a PEM-encoded CA cert file used to verify the
+ Vault server SSL certificate.
+
+- `-vault-ca-path=`: Path to a directory of PEM-encoded CA cert files used
+ to verify the Vault server SSL certificate.Whether to enable or disabled Vault
+ integration.
+
+- `vault-cert-file=`: The path to the certificate for Vault communication.
+
+- `vault-key-file=`: The path to the private key for Vault communication.
+
+- `vault-namespace=`: The Vault namespace used for the integration.
+ Required for servers and clients. Overrides the Vault namespace read from the
+ VAULT_NAMESPACE environment variable.
+
+- `vault-tls-skip-verify`: A boolean that determines whether to skip SSL
+ certificate verification.
+
+- `vault-tls-server-name=`: Used to set the SNI host when connecting to
+ Vault over TLS.
+
+[address]: /docs/configuration/consul#address
+[alloc_dir]: /docs/configuration/client/#alloc_dir
+[auth]: /docs/configuration/consul#auth
+[auto_advertise]: /docs/configuration/consul#auto_advertise
+[bind_addr]: /docs/configuration/#bind_addr
+[bootstrap_expect]: /docs/configuration/server/#bootstrap_expect
+[ca_file]: /docs/configuration/consul#ca_file
+[cert_file]: /docs/configuration/consul#cert_file
+[checks_use_advertise]: /docs/configuration/consul#checks_use_advertise
+[client_auto_join]: /docs/configuration/consul#client_auto_join
+[client_http_check_name]: /docs/configuration/consul#client_http_check_name
+[client_service_name]: /docs/configuration/consul#client_service_name
+[configuration]: /docs/configuration
+[data_dir]: /docs/configuration#data_dir
+[datacenter]: /docs/configuration/#datacenter
+[enabled]: /docs/configuration/acl#enabled
+[encryption overview]: https://learn.hashicorp.com/nomad/transport-security/gossip-encryption
+[key_file]: /docs/configuration/consul#key_file
+[log_json]: /docs/configuration#log_json
+[log_level]: /docs/configuration#log_level
+[meta]: /docs/configuration/client/#meta
+[name]: /docs/configuration/#name
+[network_interface]: /docs/configuration/client/#network_interface
+[network_speed]: /docs/configuration/client/#network_speed
+[node_class]: /docs/configuration/client/#node_class
+[nomad agent]: /docs/install/production/nomad-agent
+[plugin_dir]: /docs/configuration#plugin_dir
+[region]: /docs/configuration/#region
+[rejoin_after_leave]: /docs/configuration/server/#rejoin_after_leave
+[replication_token]: /docs/configuration/acl#replication_token
+[retry_interval]: /docs/configuration/server/#retry_interval
+[retry_max]: /docs/configuration/server/#retry_max
+[server_auto_join]: /docs/configuration/consul#server_auto_join
+[server_http_check_name]: /docs/configuration/consul#server_http_check_name
+[server_rpc_check_name]: /docs/configuration/consul#server_rpc_check_name
+[server_serf_check_name]: /docs/configuration/consul#server_serf_check_name
+[server_service_name]: /docs/configuration/consul#server_service_name
+[servers]: /docs/configuration/client/#servers
+[ssl]: /docs/configuration/consul#ssl
+[state_dir]: /docs/configuration/client/#state_dir
+[token]: /docs/configuration/consul#token
+[verify_ssl]: /docs/configuration/consul#verify_ssl
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/exec.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/exec.mdx
new file mode 100644
index 0000000000..6b84e32bc5
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/exec.mdx
@@ -0,0 +1,136 @@
+---
+layout: docs
+page_title: 'Commands: alloc exec'
+sidebar_title: exec
+description: |
+ Runs a command in a container.
+---
+
+# Command: alloc exec
+
+**Alias: `nomad exec`**
+
+The `alloc exec` command runs a command in a running allocation.
+
+## Usage
+
+```plaintext
+nomad alloc exec [options] [...]
+```
+
+The nomad exec command can be use to run commands inside a running task/allocation.
+
+Use cases are for inspecting container state, debugging a failed application
+without needing ssh access into the node that's running the allocation.
+
+This command executes the command in the given task in the allocation. If the
+allocation is only running a single task, the task name can be omitted.
+Optionally, the `-job` option may be used in which case a random allocation from
+the given job will be chosen.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Exec Options
+
+- `-task`: Sets the task to exec command in.
+
+- `-job`: Use a random allocation from the specified job ID.
+
+- `-i`: Pass stdin to the container, defaults to true. Pass `-i=false` to
+ disable explicitly.
+
+- `-t`: Allocate a pseudo-tty, defaults to true if stdin is detected to be a tty
+ session. Pass `-t=false` to disable explicitly.
+
+- `-e` : Sets the escape character for sessions with a pty
+ (default: '~'). The escape character is only recognized at the beginning of a
+ line. The escape character followed by a dot ('.') closes the connection.
+ Setting the character to 'none' disables any escapes and makes the session
+ fully transparent.
+
+## Examples
+
+To start an interactive debugging session in a particular alloc, invoke exec
+command with your desired shell available inside the task:
+
+```shell-session
+$ nomad alloc exec eb17e557 /bin/bash
+root@eb17e557:/data# # now run any debugging commands inside container
+root@eb17e557:/data# # ps -ef
+```
+
+To run a command and stream results without starting an interactive shell, you
+can pass the command and its arguments to exec directly:
+
+```shell-session# run commands without starting an interactive session
+$ nomad alloc exec eb17e557 cat /etc/resolv.conf
+...
+```
+
+When passing command arguments to be evaluated in task, you may need to ensure
+that your host shell doesn't interpolate values before invoking `exec` command.
+For example, the following command would return the environment variable on
+operator shell rather than task containers:
+
+```shell-session
+$ nomad alloc exec eb17e557 echo $NOMAD_ALLOC_ID # wrong
+...
+```
+
+Here, we must start a shell in task to interpolate `$NOMAD_ALLOC_ID`, and quote
+command or use the [heredoc syntax][heredoc]
+
+```shell-session# by quoting argument
+$ nomad alloc exec eb17e557 /bin/sh -c 'echo $NOMAD_ALLOC_ID'
+eb17e557-443e-4c51-c049-5bba7a9850bc
+
+$ # by using heredoc and passing command in stdin
+$ nomad alloc exec eb17e557 /bin/sh <<'EOF'
+> echo $NOMAD_ALLOC_ID
+> EOF
+eb17e557-443e-4c51-c049-5bba7a9850bc
+```
+
+This technique applies when aiming to run a shell pipeline without streaming
+intermediate command output across the network:
+
+```shell-session# e.g. find top appearing lines in some output
+$ nomad alloc exec eb17e557 /bin/sh -c 'cat /output | sort | uniq -c | sort -rn | head -n 5'
+...
+```
+
+## Using Job ID instead of Allocation ID
+
+Setting the `-job` flag causes a random allocation of the specified job to be
+selected.
+
+```plaintext
+nomad alloc exec -job [...]
+```
+
+Choosing a specific allocation is useful for debugging issues with a specific
+instance of a service. For other operations using the `-job` flag may be more
+convenient than looking up an allocation ID to use.
+
+## Disabling remote execution
+
+`alloc exec` is enabled by default to aid with debugging. Operators can disable
+the feature by setting [`disable_remote_exec` client config
+option][disable_remote_exec_flag] on all clients, or a subset of clients that
+run sensitive workloads.
+
+## Exec targeting a specific task
+
+When trying to `alloc exec` for a job that has more than one task associated
+with it, you may want to target a specific task.
+
+```shell-session
+# open a shell session in one of your allocation's tasks
+$ nomad alloc exec -i -t -task mytask a1827f93 /bin/bash
+a1827f93$
+```
+
+[heredoc]: http://tldp.org/LDP/abs/html/here-docs.html
+[disable_remote_exec_flag]: /docs/configuration/client#disable_remote_exec
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/fs.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/fs.mdx
new file mode 100644
index 0000000000..25a404924d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/fs.mdx
@@ -0,0 +1,110 @@
+---
+layout: docs
+page_title: 'Commands: alloc fs'
+sidebar_title: fs
+description: |
+ Introspect an allocation directory on a Nomad client
+---
+
+# Command: alloc fs
+
+**Alias: `nomad fs`**
+
+The `alloc fs` command allows a user to navigate an allocation directory on a Nomad
+client. The following functionalities are available - `cat`, `tail`, `ls` and
+`stat`.
+
+- `cat`: If the target path is a file, Nomad will `cat` the file.
+
+- `tail`: If the target path is a file and `-tail` flag is specified, Nomad will
+ `tail` the file.
+
+- `ls`: If the target path is a directory, Nomad displays the name of a file and
+ directories and their associated information.
+
+- `stat`: If the `-stat` flag is used, Nomad will display information about a
+ file.
+
+## Usage
+
+```plaintext
+nomad alloc fs [options]
+```
+
+This command accepts a single allocation ID (unless the `-job` flag is
+specified, in which case an allocation is chosen from the given job) and a path.
+The path is relative to the root of the allocation directory. The path is
+optional and it defaults to `/` of the allocation directory.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Fs Options
+
+- `-H`: Machine friendly output.
+
+- `-verbose`: Display verbose output.
+
+- `-job`: Use a random allocation from the specified job, preferring a running
+ allocation.
+
+- `-stat`: Show stat information instead of displaying the file, or listing the
+ directory.
+
+- `-f`: Causes the output to not stop when the end of the file is reached, but
+ rather to wait for additional output.
+
+- `-tail`: Show the files contents with offsets relative to the end of the file.
+ If no offset is given, -n is defaulted to 10.
+
+- `-n`: Sets the tail location in best-efforted number of lines relative to the
+ end of the file.
+
+- `-c`: Sets the tail location in number of bytes relative to the end of the file.
+
+## Examples
+
+```shell-session
+$ nomad alloc fs eb17e557
+Mode Size Modified Time Name
+drwxrwxr-x 4096 28 Jan 16 05:39 UTC alloc/
+drwxrwxr-x 4096 28 Jan 16 05:39 UTC redis/
+-rw-rw-r-- 0 28 Jan 16 05:39 UTC redis_exit_status
+
+
+$ nomad alloc fs eb17e557 redis/local
+Mode Size Modified Time Name
+-rw-rw-rw- 0 28 Jan 16 05:39 UTC redis.stderr
+-rw-rw-rw- 17 28 Jan 16 05:39 UTC redis.stdout
+
+
+$ nomad alloc fs -stat eb17e557 redis/local/redis.stdout
+Mode Size Modified Time Name
+-rw-rw-rw- 17 28 Jan 16 05:39 UTC redis.stdout
+
+
+$ nomad alloc fs eb17e557 redis/local/redis.stdout
+foobar
+baz
+
+$ nomad alloc fs -tail -f -n 3 eb17e557 redis/local/redis.stdout
+foobar
+baz
+bam
+
+```
+
+## Using Job ID instead of Allocation ID
+
+Setting the `-job` flag causes a random allocation of the specified job to be
+selected. Nomad will prefer to select a running allocation ID for the job, but
+if no running allocations for the job are found, Nomad will use a dead
+allocation.
+
+```plaintext
+nomad alloc fs -job
+```
+
+This can be useful for debugging a job that has multiple allocations, and it is
+not required to observe a specific allocation.
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/index.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/index.mdx
new file mode 100644
index 0000000000..d6f2c4e73e
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/index.mdx
@@ -0,0 +1,34 @@
+---
+layout: docs
+page_title: 'Commands: alloc'
+sidebar_title: alloc
+description: |
+ The alloc command is used to interact with allocations.
+---
+
+# Command: alloc
+
+The `alloc` command is used to interact with allocations.
+
+## Usage
+
+Usage: `nomad alloc [options]`
+
+Run `nomad alloc -h` for help on that subcommand. The following
+subcommands are available:
+
+- [`alloc exec`][exec] - Run a command in a running allocation
+- [`alloc fs`][fs] - Inspect the contents of an allocation directory
+- [`alloc logs`][logs] - Streams the logs of a task
+- [`alloc restart`][restart] - Restart a running allocation or task
+- [`alloc signal`][signal] - Signal a running allocation
+- [`alloc status`][status] - Display allocation status information and metadata
+- [`alloc stop`][stop] - Stop and reschedule a running allocation
+
+[exec]: /docs/commands/alloc/exec 'Run a command in a running allocation'
+[fs]: /docs/commands/alloc/fs 'Inspect the contents of an allocation directory'
+[logs]: /docs/commands/alloc/logs 'Streams the logs of a task'
+[restart]: /docs/commands/alloc/restart 'Restart a running allocation or task'
+[signal]: /docs/commands/alloc/signal 'Signal a running allocation'
+[status]: /docs/commands/alloc/status 'Display allocation status information and metadata'
+[stop]: /docs/commands/alloc/stop 'Stop and reschedule a running allocation'
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/logs.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/logs.mdx
new file mode 100644
index 0000000000..62ffbb746f
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/logs.mdx
@@ -0,0 +1,91 @@
+---
+layout: docs
+page_title: 'Commands: alloc logs'
+sidebar_title: logs
+description: |
+ Stream the logs of a task.
+---
+
+# Command: alloc logs
+
+**Alias: `nomad logs`**
+
+The `alloc logs` command displays the log of a given task.
+
+## Usage
+
+```plaintext
+nomad alloc logs [options]
+```
+
+This command streams the logs of the given task in the allocation. If the
+allocation is only running a single task, the task name can be omitted.
+Optionally, the `-job` option may be used in which case a random allocation from
+the given job will be chosen.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Logs Options
+
+- `-stderr`: Display stderr logs.
+
+- `-verbose`: Display verbose output.
+
+- `-job`: Use a random allocation from the specified job, preferring a running
+ allocation.
+
+- `-f`: Causes the output to not stop when the end of the logs are reached, but
+ rather to wait for additional output.
+
+- `-tail`: Show the logs contents with offsets relative to the end of the logs.
+ If no offset is given, -n is defaulted to 10.
+
+- `-n`: Sets the tail location in best-efforted number of lines relative to the
+ end of the logs.
+
+- `-c`: Sets the tail location in number of bytes relative to the end of the
+ logs.
+
+## Examples
+
+```shell-session
+$ nomad alloc logs eb17e557 redis
+foobar
+baz
+bam
+
+$ nomad alloc logs -stderr eb17e557 redis
+[ERR]: foo
+[ERR]: bar
+
+$ nomad alloc logs -job example
+[ERR]: foo
+[ERR]: bar
+
+$ nomad alloc logs -tail -n 2 eb17e557 redis
+foobar
+baz
+
+$ nomad alloc logs -tail -f -n 3 eb17e557 redis
+foobar
+baz
+bam
+
+```
+
+## Using Job ID instead of Allocation ID
+
+Setting the `-job` flag causes a random allocation of the specified job to be
+selected. Nomad will prefer to select a running allocation ID for the job, but
+if no running allocations for the job are found, Nomad will use a dead
+allocation.
+
+```plaintext
+nomad alloc logs -job
+```
+
+Choosing a specific allocation is useful for debugging issues with a specific
+instance of a service. For other operations using the `-job` flag may be more
+convenient than looking up an allocation ID to use.
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/restart.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/restart.mdx
new file mode 100644
index 0000000000..3f35090410
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/restart.mdx
@@ -0,0 +1,41 @@
+---
+layout: docs
+page_title: 'Commands: alloc restart'
+sidebar_title: restart
+description: |
+ Restart a running allocation or task
+---
+
+# Command: alloc restart
+
+The `alloc restart` command allows a user to perform an in place restart of an
+an entire allocation or individual task.
+
+## Usage
+
+```plaintext
+nomad alloc restart [options]
+```
+
+This command accepts a single allocation ID and a task name. The task name must
+be part of the allocation and the task must be currently running. The task name
+is optional and if omitted every task in the allocation will be restarted.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Restart Options
+
+- `-verbose`: Display verbose output.
+
+## Examples
+
+```shell-session
+$ nomad alloc restart eb17e557
+
+$ nomad alloc restart eb17e557 foo
+Could not find task named: foo, found:
+* test
+
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/signal.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/signal.mdx
new file mode 100644
index 0000000000..061c14b955
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/signal.mdx
@@ -0,0 +1,42 @@
+---
+layout: docs
+page_title: 'Commands: alloc signal'
+sidebar_title: signal
+description: |
+ Signal a running allocation or task
+---
+
+# Command: alloc signal
+
+The `alloc signal` command allows a user to perform an in place signal of an
+an entire allocation or individual task.
+
+## Usage
+
+```plaintext
+nomad alloc signal [options]
+```
+
+This command accepts a single allocation ID and a task name. The task name must
+be part of the allocation and the task must be currently running. The task name
+is optional and if omitted every task in the allocation will be signaled.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Signal Options
+
+- `-s`: Signal to send to the tasks. Valid options depend on the driver.
+- `-verbose`: Display verbose output.
+
+## Examples
+
+```shell-session
+$ nomad alloc signal eb17e557
+
+$ nomad alloc signal eb17e557 foo
+Could not find task named: foo, found:
+* test
+
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/status.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/status.mdx
new file mode 100644
index 0000000000..27a103b800
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/status.mdx
@@ -0,0 +1,184 @@
+---
+layout: docs
+page_title: 'Commands: alloc status'
+sidebar_title: status
+description: |
+ Display status and metadata about existing allocations and their tasks.
+---
+
+# Command: alloc status
+
+The `alloc status` command displays status information and metadata
+about an existing allocation and its tasks. It can be useful while
+debugging to reveal the underlying reasons for scheduling decisions or
+failures, as well as the current state of its tasks. As of Nomad
+0.7.1, alloc status also shows allocation modification time in
+addition to create time. As of Nomad 0.8, alloc status shows
+information about reschedule attempts. As of Nomad 0.11, alloc status
+shows volume claims when a job claims volumes.
+
+## Usage
+
+```plaintext
+nomad alloc status [options]
+```
+
+An allocation ID or prefix must be provided. If there is an exact match, the
+full details of the allocation will be displayed. Otherwise, a list of matching
+allocations and information will be displayed.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Alloc Status Options
+
+- `-short`: Display short output. Shows only the most recent task event.
+- `-verbose`: Show full information.
+- `-json` : Output the allocation in its JSON format.
+- `-t` : Format and display the allocation using a Go template.
+
+## Examples
+
+Short status of an alloc:
+
+```shell-session
+$ nomad alloc status --short 0af996ed
+ID = 0af996ed
+Eval ID = be9bde98
+Name = example.cache[0]
+Node ID = 43c0b14e
+Job ID = example
+Job Version = 0
+Client Status = running
+Client Description =
+Desired Status = run
+Desired Description =
+Created At = 07/25/17 16:12:48 UTC
+Deployment ID = 0c83a3b1
+Deployment Health = healthy
+
+Tasks
+Name State Last Event Time
+redis running Started 07/25/17 16:12:48 UTC
+web running Started 07/25/17 16:12:49 UTC
+```
+
+Full status of an alloc, which shows one of the tasks dying and then being restarted:
+
+```shell-session
+$ nomad alloc status 0af996ed
+ID = 0af996ed
+Eval ID = be9bde98
+Name = example.cache[0]
+Node ID = 43c0b14e
+Job ID = example
+Job Version = 0
+Client Status = running
+Client Description =
+Desired Status = run
+Desired Description =
+Created = 5m ago
+Modified = 5m ago
+Deployment ID = 0c83a3b1
+Deployment Health = healthy
+Replacement Alloc ID = 0bc894ca
+Reschedule Attempts = 1/3
+
+Task "redis" is "running"
+Task Resources
+CPU Memory Disk Addresses
+1/500 MHz 6.3 MiB/256 MiB 300 MiB db: 127.0.0.1:27908
+
+CSI Volumes:
+ID Plugin Provider Schedulable Mount Options
+vol-4150af42 ebs0 aws.ebs true
+
+Task Events:
+Started At = 07/25/17 16:12:48 UTC
+Finished At = N/A
+Total Restarts = 0
+Last Restart = N/A
+
+Recent Events:
+Time Type Description
+07/25/17 16:12:48 UTC Started Task started by client
+07/25/17 16:12:48 UTC Task Setup Building Task Directory
+07/25/17 16:12:48 UTC Received Task received by client
+
+Task "web" is "running"
+Task Resources
+CPU Memory Disk Addresses
+1/500 MHz 6.3 MiB/256 MiB 300 MiB db: 127.0.0.1:30572
+
+Task Events:
+Started At = 07/25/17 16:12:49 UTC
+Finished At = N/A
+Total Restarts = 0
+Last Restart = N/A
+
+Recent Events:
+07/25/17 16:12:49 UTC Started Task started by client
+07/25/17 16:12:48 UTC Task Setup Building Task Directory
+07/25/17 16:12:48 UTC Received Task received by client
+```
+
+Verbose status can also be accessed:
+
+```shell-session
+$ nomad alloc status -verbose 0af996ed
+ID = 0af996ed-aff4-8ddb-a566-e55ebf8969c9
+Eval ID = be9bde98-0490-1beb-ced0-012d10ddf22e
+Name = example.cache[0]
+Node ID = 43c0b14e-7f96-e432-a7da-06605257ce0c
+Job ID = example
+Job Version = 0
+Client Status = running
+Client Description =
+Desired Status = run
+Desired Description =
+Created = 07/25/17 16:12:48 UTC
+Modified = 07/25/17 16:12:48 UTC
+Deployment ID = 0c83a3b1-8a7b-136b-0e11-8383dc6c9276
+Deployment Health = healthy
+Reschedule Eligibility = 2m from now
+Evaluated Nodes = 1
+Filtered Nodes = 0
+Exhausted Nodes = 0
+Allocation Time = 38.474µs
+Failures = 0
+
+Task "redis" is "running"
+Task Resources
+CPU Memory Disk Addresses
+1/500 MHz 6.3 MiB/256 MiB 300 MiB db: 127.0.0.1:27908
+
+Task Events:
+Started At = 07/25/17 16:12:48 UTC
+Finished At = N/A
+Total Restarts = 0
+Last Restart = N/A
+
+Recent Events:
+Time Type Description
+07/25/17 16:12:48 UTC Started Task started by client
+07/25/17 16:12:48 UTC Task Setup Building Task Directory
+07/25/17 16:12:48 UTC Received Task received by client
+
+Task "web" is "running"
+Task Resources
+CPU Memory Disk Addresses
+1/500 MHz 6.3 MiB/256 MiB 300 MiB db: 127.0.0.1:30572
+
+Task Events:
+Started At = 07/25/17 16:12:49 UTC
+Finished At = N/A
+Total Restarts = 0
+Last Restart = N/A
+
+Recent Events:
+Time Type Description
+07/25/17 16:12:49 UTC Started Task started by client
+07/25/17 16:12:48 UTC Task Setup Building Task Directory
+07/25/17 16:12:48 UTC Received Task received by client
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/alloc/stop.mdx b/content/nomad/v0.11.x/content/docs/commands/alloc/stop.mdx
new file mode 100644
index 0000000000..646eb53285
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/alloc/stop.mdx
@@ -0,0 +1,57 @@
+---
+layout: docs
+page_title: 'Commands: alloc stop'
+sidebar_title: stop
+description: |
+ Stop and reschedule a running allocation
+---
+
+# Command: alloc stop
+
+The `alloc stop` command allows a user to perform an in-place restart of an
+entire allocation or individual task.
+
+## Usage
+
+```plaintext
+nomad alloc stop [options]
+```
+
+The `alloc stop` command requires a single argument, specifying the alloc ID or
+prefix to stop. If there is an exact match based on the provided alloc ID or
+prefix, then the alloc will be stopped and rescheduled. Otherwise, a list of
+matching allocs and information will be displayed.
+
+Stop will issue a request to stop and reschedule the allocation. An interactive
+monitoring session will display log lines as the allocation completes shutting
+down. It is safe to exit the monitor early with ctrl-c.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Stop Options
+
+- `-detach`: Return immediately instead of entering monitor mode. After the
+ stop command is submitted, a new evaluation ID is printed to the
+ screen, which can be used to examine the rescheduling evaluation using the
+ [eval status] command.
+
+- `-verbose`: Display verbose output.
+
+## Examples
+
+```shell-session
+$ nomad alloc stop c1488bb5
+==> Monitoring evaluation "26172081"
+ Evaluation triggered by job "example"
+ Allocation "4dcb1c98" created: node "b4dc52b9", group "cache"
+ Evaluation within deployment: "c0c594d0"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "26172081" finished with status "complete"
+
+$ nomad alloc stop -detach eb17e557
+8a91f0f3-9d6b-ac83-479a-5aa186ab7795
+```
+
+[eval status]: /docs/commands/eval-status
diff --git a/content/nomad/v0.11.x/content/docs/commands/deployment/fail.mdx b/content/nomad/v0.11.x/content/docs/commands/deployment/fail.mdx
new file mode 100644
index 0000000000..b1eaa2c9d2
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/deployment/fail.mdx
@@ -0,0 +1,63 @@
+---
+layout: docs
+page_title: 'Commands: deployment fail'
+sidebar_title: fail
+description: |
+ The deployment fail command is used to manually fail a deployment.
+---
+
+# Command: deployment fail
+
+The `deployment fail` command is used to mark a deployment as failed. Failing a
+deployment will stop the placement of new allocations as part of rolling
+deployment and if the job is configured to auto revert, the job will attempt to
+roll back to a stable version.
+
+## Usage
+
+```plaintext
+nomad deployment fail [options]
+```
+
+The `deployment fail` command requires a single argument, a deployment ID or
+prefix.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Fail Options
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command.
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Manually mark an ongoing deployment as failed:
+
+```shell-session
+$ nomad deployment fail 8990cfbc
+Deployment "8990cfbc-28c0-cb28-ca31-856cf691b987" failed
+
+==> Monitoring evaluation "a2d97ad5"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "8990cfbc"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "a2d97ad5" finished with status "complete"
+
+$ nomad deployment status 8990cfbc
+ID = 8990cfbc
+Job ID = example
+Job Version = 2
+Status = failed
+Description = Deployment marked as failed
+
+Deployed
+Task Group Desired Placed Healthy Unhealthy
+cache 3 2 1 0
+```
+
+[eval status]: /docs/commands/eval-status
diff --git a/content/nomad/v0.11.x/content/docs/commands/deployment/index.mdx b/content/nomad/v0.11.x/content/docs/commands/deployment/index.mdx
new file mode 100644
index 0000000000..d5eb0bb24c
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/deployment/index.mdx
@@ -0,0 +1,32 @@
+---
+layout: docs
+page_title: 'Commands: deployment'
+sidebar_title: deployment
+description: |
+ The deployment command is used to interact with deployments.
+---
+
+# Command: deployment
+
+The `deployment` command is used to interact with deployments.
+
+## Usage
+
+Usage: `nomad deployment [options]`
+
+Run `nomad deployment -h` for help on that subcommand. The following
+subcommands are available:
+
+- [`deployment fail`][fail] - Manually fail a deployment
+- [`deployment list`][list] - List all deployments
+- [`deployment pause`][pause] - Pause a deployment
+- [`deployment promote`][promote] - Promote canaries in a deployment
+- [`deployment resume`][resume] - Resume a paused deployment
+- [`deployment status`][status] - Display the status of a deployment
+
+[fail]: /docs/commands/deployment/fail 'Manually fail a deployment'
+[list]: /docs/commands/deployment/list 'List all deployments'
+[pause]: /docs/commands/deployment/pause 'Pause a deployment'
+[promote]: /docs/commands/deployment/promote 'Promote canaries in a deployment'
+[resume]: /docs/commands/deployment/resume 'Resume a paused deployment'
+[status]: /docs/commands/deployment/status 'Display the status of a deployment'
diff --git a/content/nomad/v0.11.x/content/docs/commands/deployment/list.mdx b/content/nomad/v0.11.x/content/docs/commands/deployment/list.mdx
new file mode 100644
index 0000000000..9930700c5b
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/deployment/list.mdx
@@ -0,0 +1,41 @@
+---
+layout: docs
+page_title: 'Commands: deployment list'
+sidebar_title: list
+description: |
+ The deployment list command is used to list deployments.
+---
+
+# Command: deployment list
+
+The `deployment list` command is used list all deployments.
+
+## Usage
+
+```plaintext
+nomad deployment list [options]
+```
+
+The `deployment list` command requires no arguments.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## List Options
+
+- `-json` : Output the deployments in their JSON format.
+- `-t` : Format and display the deployments using a Go template.
+- `-verbose`: Show full information.
+
+## Examples
+
+List all tracked deployments:
+
+```shell-session
+$ nomad deployment list
+ID Job ID Job Version Status Description
+8990cfbc example 2 failed Deployment marked as failed
+62eb607c example 1 successful Deployment completed successfully
+5f271fe2 example 0 successful Deployment completed successfully
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/deployment/pause.mdx b/content/nomad/v0.11.x/content/docs/commands/deployment/pause.mdx
new file mode 100644
index 0000000000..569d233b87
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/deployment/pause.mdx
@@ -0,0 +1,40 @@
+---
+layout: docs
+page_title: 'Commands: deployment pause'
+sidebar_title: pause
+description: >
+ The deployment pause command is used to pause a deployment and disallow new
+ placements.
+---
+
+# Command: deployment pause
+
+The `deployment pause` command is used to pause a deployment. Pausing a
+deployment will pause the placement of new allocations as part of rolling
+deployment.
+
+## Usage
+
+```plaintext
+nomad deployment pause [options]
+```
+
+The `deployment pause` command requires a single argument, a deployment ID or
+prefix.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Pause Options
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Manually pause a deployment:
+
+```shell-session
+$ nomad deployment pause 2f14ba55
+Deployment "2f14ba55-acfb-cb31-821c-facf1b9b0830" paused
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/deployment/promote.mdx b/content/nomad/v0.11.x/content/docs/commands/deployment/promote.mdx
new file mode 100644
index 0000000000..1ee5ed8e9e
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/deployment/promote.mdx
@@ -0,0 +1,224 @@
+---
+layout: docs
+page_title: 'Commands: deployment promote'
+sidebar_title: promote
+description: |
+ The deployment promote command is used to promote canaries in a deployment.
+---
+
+# Command: deployment promote
+
+The `deployment promote` command is used to promote task groups in a deployment.
+Promotion should occur when the deployment has placed canaries for a task group
+and those canaries have been deemed healthy. When a task group is promoted, the
+rolling upgrade of the remaining allocations is unblocked. If the canaries are
+found to be unhealthy, the deployment may either be failed using the "nomad
+deployment fail" command, the job can be failed forward by submitting a new
+version or failed backwards by reverting to an older version using the
+[`job revert`] command.
+
+## Usage
+
+```plaintext
+nomad deployment promote [options]
+```
+
+The `deployment promote` command requires a single argument, a deployment ID or
+prefix. When run without specifying any groups to promote, the promote command
+promotes all task groups. The group flag can be specified multiple times to
+select particular groups to promote.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Promote Options
+
+- `-group`: Group may be specified many times and is used to promote that
+ particular group. If no specific groups are specified, all groups are
+ promoted.
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Promote canaries in all groups:
+
+```shell-session
+# Have two task groups waiting for promotion.
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:35:05 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 3 0 0 0
+web 0 0 3 0 0 0
+
+Latest Deployment
+ID = 9fa81f27
+Status = running
+Description = Deployment is running but requires manual promotion
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+web false 2 1 1 0 0
+cache false 2 1 1 0 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+091377e5 a8dcce2d web 1 run running 07/25/17 18:35:05 UTC
+d2b13584 a8dcce2d cache 1 run running 07/25/17 18:35:05 UTC
+4bb185b7 a8dcce2d web 0 run running 07/25/17 18:31:34 UTC
+9b6811ee a8dcce2d cache 0 run running 07/25/17 18:31:34 UTC
+e0a2441b a8dcce2d cache 0 run running 07/25/17 18:31:34 UTC
+f2409f7d a8dcce2d web 0 run running 07/25/17 18:31:34 UTC
+
+# Promote all groups within the deployment
+$ nomad deployment promote 9fa81f27
+==> Monitoring evaluation "6c6e64ae"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "9fa81f27"
+ Allocation "8fa21654" created: node "a8dcce2d", group "web"
+ Allocation "9f6727a6" created: node "a8dcce2d", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "6c6e64ae" finished with status "complete"
+
+# Inspect the status and see both groups have been promoted.
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:35:05 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 2 0 2 0
+web 0 0 2 0 2 0
+
+Latest Deployment
+ID = 9fa81f27
+Status = successful
+Description = Deployment completed successfully
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+web true 2 1 2 2 0
+cache true 2 1 2 2 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+8fa21654 a8dcce2d web 1 run running 07/25/17 18:35:21 UTC
+9f6727a6 a8dcce2d cache 1 run running 07/25/17 18:35:21 UTC
+091377e5 a8dcce2d web 1 run running 07/25/17 18:35:05 UTC
+d2b13584 a8dcce2d cache 1 run running 07/25/17 18:35:05 UTC
+4bb185b7 a8dcce2d web 0 stop complete 07/25/17 18:31:34 UTC
+9b6811ee a8dcce2d cache 0 stop complete 07/25/17 18:31:34 UTC
+e0a2441b a8dcce2d cache 0 stop complete 07/25/17 18:31:34 UTC
+f2409f7d a8dcce2d web 0 stop complete 07/25/17 18:31:34 UTC
+```
+
+Promote canaries in a particular group:
+
+```shell-session
+# Have two task groups waiting for promotion.
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:37:14 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 3 0 0 0
+web 0 0 3 0 0 0
+
+Latest Deployment
+ID = a6b87a6c
+Status = running
+Description = Deployment is running but requires manual promotion
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+cache false 2 1 1 1 0
+web false 2 1 1 1 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+3071ab8f 6240eed6 web 1 run running 07/25/17 18:37:14 UTC
+eeeed13b 6240eed6 cache 1 run running 07/25/17 18:37:14 UTC
+0ee7800c 6240eed6 cache 0 run running 07/25/17 18:37:08 UTC
+a714a926 6240eed6 cache 0 run running 07/25/17 18:37:08 UTC
+cee52788 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+ee8f972e 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+
+# Promote only the cache canaries
+$ nomad deployment promote -group cache a6b87a6c
+==> Monitoring evaluation "37383564"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "a6b87a6c"
+ Allocation "bbddf5c3" created: node "6240eed6", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "37383564" finished with status "complete"
+
+# Inspect the status and see that only the cache canaries are promoted
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:37:14 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 2 0 2 0
+web 0 0 3 0 0 0
+
+Latest Deployment
+ID = a6b87a6c
+Status = running
+Description = Deployment is running but requires manual promotion
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+web false 2 1 1 1 0
+cache true 2 1 2 2 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+bbddf5c3 6240eed6 cache 1 run running 07/25/17 18:37:40 UTC
+eeeed13b 6240eed6 cache 1 run running 07/25/17 18:37:14 UTC
+3071ab8f 6240eed6 web 1 run running 07/25/17 18:37:14 UTC
+a714a926 6240eed6 cache 0 stop complete 07/25/17 18:37:08 UTC
+cee52788 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+ee8f972e 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+0ee7800c 6240eed6 cache 0 stop complete 07/25/17 18:37:08 UTC
+```
+
+[`job revert`]: /docs/commands/job/revert
+[eval status]: /docs/commands/eval-status
diff --git a/content/nomad/v0.11.x/content/docs/commands/deployment/resume.mdx b/content/nomad/v0.11.x/content/docs/commands/deployment/resume.mdx
new file mode 100644
index 0000000000..582137151d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/deployment/resume.mdx
@@ -0,0 +1,54 @@
+---
+layout: docs
+page_title: 'Commands: deployment resume'
+sidebar_title: resume
+description: |
+ The deployment resume command is used to resume a paused deployment.
+---
+
+# Command: deployment resume
+
+The `deployment resume` command is used used to unpause a paused deployment.
+Resuming a deployment will resume the placement of new allocations as part of
+rolling deployment.
+
+## Usage
+
+```plaintext
+nomad deployment resume [options]
+```
+
+The `deployment resume` command requires a single argument, a deployment ID or
+prefix.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Resume Options
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Manually resume a deployment:
+
+```shell-session
+$ nomad deployment resume c848972e
+Deployment "c848972e-dcd3-7354-e0d2-39d86642cdb1" resumed
+
+==> Monitoring evaluation "5e266d42"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "c848972e"
+ Allocation "00208424" created: node "6240eed6", group "web"
+ Allocation "68c72edf" created: node "6240eed6", group "cache"
+ Allocation "00208424" status changed: "pending" -> "running"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "5e266d42" finished with status "complete"
+```
+
+[eval status]: /docs/commands/eval-status
diff --git a/content/nomad/v0.11.x/content/docs/commands/deployment/status.mdx b/content/nomad/v0.11.x/content/docs/commands/deployment/status.mdx
new file mode 100644
index 0000000000..c854211c18
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/deployment/status.mdx
@@ -0,0 +1,66 @@
+---
+layout: docs
+page_title: 'Commands: deployment status'
+sidebar_title: status
+description: |
+ The deployment status command is used to display the status of a deployment.
+---
+
+# Command: deployment status
+
+The `deployment status` command is used to display the status of a deployment.
+The status will display the number of desired changes as well as the currently
+applied changes.
+
+## Usage
+
+```plaintext
+nomad deployment status [options]
+```
+
+The `deployment status` command requires a single argument, a deployment ID or
+prefix.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Status Options
+
+- `-json` : Output the deployment in its JSON format.
+- `-t` : Format and display the deployment using a Go template.
+- `-verbose`: Show full information.
+
+## Examples
+
+Inspect the status of a complete deployment:
+
+```shell-session
+$ nomad deployment status 06ca68a2
+ID = 06ca68a2
+Job ID = example
+Job Version = 0
+Status = successful
+Description = Deployment completed successfully
+
+Deployed
+Task Group Desired Placed Healthy Unhealthy
+cache 2 2 2 0
+web 2 2 2 0
+```
+
+Inspect the status of a deployment that is waiting for canary promotion:
+
+```shell-session
+$ nomad deployment status 0b
+ID = 0b23b149
+Job ID = example
+Job Version = 1
+Status = running
+Description = Deployment is running but requires manual promotion
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+cache false 2 1 1 0 0
+web N/A 2 0 2 2 0
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/eval-status.mdx b/content/nomad/v0.11.x/content/docs/commands/eval-status.mdx
new file mode 100644
index 0000000000..eb7aaeaf76
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/eval-status.mdx
@@ -0,0 +1,84 @@
+---
+layout: docs
+page_title: 'Commands: eval status'
+sidebar_title: eval status
+description: >
+ The eval status command is used to see the status and potential failed
+ allocations of an evaluation.
+---
+
+# Command: eval status
+
+The `eval status` command is used to display information about an existing
+evaluation. In the case an evaluation could not place all the requested
+allocations, this command can be used to determine the failure reasons.
+
+Optionally, it can also be invoked in a monitor mode to track an outstanding
+evaluation. In this mode, logs will be output describing state changes to the
+evaluation or its associated allocations. The monitor will exit when the
+evaluation reaches a terminal state.
+
+## Usage
+
+```plaintext
+nomad eval status [options]
+```
+
+An evaluation ID or prefix must be provided. If there is an exact match, the
+the status will be shown. Otherwise, a list of matching evaluations and
+information will be displayed.
+
+If the `-monitor` flag is passed, an interactive monitoring session will be
+started in the terminal. It is safe to exit the monitor at any time using
+ctrl+c. The command will exit when the given evaluation reaches a terminal
+state (completed or failed). Exit code 0 is returned on successful
+evaluation, and if there are no scheduling problems. If there are
+job placement issues encountered (unsatisfiable constraints,
+resource exhaustion, etc), then the exit code will be 2. Any other
+errors, including client connection issues or internal errors, are
+indicated by exit code 1.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Eval Status Options
+
+- `-monitor`: Monitor an outstanding evaluation
+- `-verbose`: Show full information.
+- `-json` : Output the evaluation in its JSON format.
+- `-t` : Format and display evaluation using a Go template.
+
+## Examples
+
+Show the status of an evaluation that has placement failures
+
+```shell-session
+$ nomad eval status 2ae0e6a5
+ID = 2ae0e6a5
+Status = complete
+Status Description = complete
+Type = service
+TriggeredBy = job-register
+Job ID = example
+Priority = 50
+Placement Failures = true
+
+==> Failed Placements
+Task Group "cache" (failed to place 1 allocation):
+ * Class "foo" filtered 1 nodes
+ * Constraint "${attr.kernel.name} = windows" filtered 1 nodes
+
+
+Evaluation "67493a64" waiting for additional capacity to place remainder
+```
+
+Monitor an existing evaluation
+
+```shell-session
+$ nomad eval status -monitor 8262bc83
+==> Monitoring evaluation "8262bc83"
+ Allocation "bd6bd0de" created: node "6f299da5", group "group1"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "8262bc83" finished with status "complete"
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/index.mdx b/content/nomad/v0.11.x/content/docs/commands/index.mdx
new file mode 100644
index 0000000000..657686fa0f
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/index.mdx
@@ -0,0 +1,64 @@
+---
+layout: docs
+page_title: Commands (CLI)
+sidebar_title: Commands (CLI)
+description: >
+ Nomad can be controlled via a command-line interface. This page documents all
+ the commands Nomad accepts.
+---
+
+# Nomad Commands (CLI)
+
+Nomad is controlled via a very easy to use command-line interface (CLI).
+Nomad is only a single command-line application: `nomad`, which
+takes a subcommand such as "agent" or "status". The complete list of
+subcommands is in the navigation to the left.
+
+The Nomad CLI is a well-behaved command line application. In erroneous cases,
+a non-zero exit status will be returned. It also responds to `-h` and `--help`
+as you would most likely expect.
+
+To view a list of the available commands at any time, just run Nomad
+with no arguments. To get help for any specific subcommand, run the subcommand
+with the `-h` argument.
+
+Each command has been conveniently documented on this website. Links to each
+command can be found on the left.
+
+## Autocomplete
+
+Nomad's CLI supports command autocomplete. Autocomplete can be installed or
+uninstalled by running the following on bash or zsh shells:
+
+```shell-session
+$ nomad -autocomplete-install
+$ nomad -autocomplete-uninstall
+```
+
+## Command Contexts
+
+Nomad's CLI commands have implied contexts in their naming convention. Because
+the CLI is most commonly used to manipulate or query jobs, you can assume that
+any given command is working in that context unless the command name implies
+otherwise.
+
+For example, the `nomad job run` command is used to run a new job, the `nomad status` command queries information about existing jobs, etc. Conversely,
+commands with a prefix in their name likely operate in a different context.
+Examples include the `nomad agent-info` or `nomad node drain` commands,
+which operate in the agent or node contexts respectively.
+
+### Remote Usage
+
+The Nomad CLI may be used to interact with a remote Nomad cluster, even when the
+local machine does not have a running Nomad agent. To do so, set the
+`NOMAD_ADDR` environment variable or use the `-address=` flag when running
+commands.
+
+```shell-session
+$ nomad_ADDR=https://remote-address:4646 nomad status
+$ nomad status -address=https://remote-address:4646
+```
+
+The provided address must be reachable from your local machine. There are a
+variety of ways to accomplish this (VPN, SSH Tunnel, etc). If the port is
+exposed to the public internet it is highly recommended to configure TLS.
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/deployments.mdx b/content/nomad/v0.11.x/content/docs/commands/job/deployments.mdx
new file mode 100644
index 0000000000..d130f56966
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/deployments.mdx
@@ -0,0 +1,49 @@
+---
+layout: docs
+page_title: 'Commands: job deployments'
+sidebar_title: deployments
+description: |
+ The deployments command is used to list deployments for a job.
+---
+
+# Command: job deployments
+
+The `job deployments` command is used to display the deployments for a
+particular job.
+
+## Usage
+
+```plaintext
+nomad job deployments [options]
+```
+
+The `job deployments` command requires a single argument, the job ID or an ID
+prefix of a job to display the list of deployments for.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Deployment Options
+
+- `-latest`: Display the latest deployment only.
+
+- `-json` : Output the deployment in its JSON format.
+
+- `-t` : Format and display the deployment using a Go template.
+
+- `-verbose`: Show full information.
+
+- `-all`: Display all deployments matching the job ID, even those from an
+ older instance of the job.
+
+## Examples
+
+List the deployment for a particular job:
+
+```shell-session
+$ nomad job deployments example
+ID Job ID Job Version Status Description
+0b23b149 example 1 running Deployment is running but requires manual promotion
+06ca68a2 example 0 successful Deployment completed successfully
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/dispatch.mdx b/content/nomad/v0.11.x/content/docs/commands/job/dispatch.mdx
new file mode 100644
index 0000000000..926f9eb444
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/dispatch.mdx
@@ -0,0 +1,111 @@
+---
+layout: docs
+page_title: 'Commands: job dispatch'
+sidebar_title: dispatch
+description: |
+ The dispatch command is used to create an instance of a parameterized job.
+---
+
+# Command: job dispatch
+
+The `job dispatch` command is used to create new instances of a [parameterized
+job]. The parameterized job captures a job's configuration and runtime
+requirements in a generic way and `dispatch` is used to provide the input for
+the job to run against. A parameterized job is similar to a function definition,
+and dispatch is used to invoke the function.
+
+Each time a job is dispatched, a unique job ID is generated. This allows a
+caller to track the status of the job, much like a future or promise in some
+programming languages.
+
+## Usage
+
+```plaintext
+nomad job dispatch [options] [input source]
+```
+
+Dispatch creates an instance of a parameterized job. A data payload to the
+dispatched instance can be provided via stdin by using "-" for the input source
+or by specifying a path to a file. Metadata can be supplied by using the meta
+flag one or more times.
+
+The payload has a **size limit of 16KiB**.
+
+Upon successful creation, the dispatched job ID will be printed and the
+triggered evaluation will be monitored. This can be disabled by supplying the
+detach flag.
+
+On successful job submission and scheduling, exit code 0 will be returned. If
+there are job placement issues encountered (unsatisfiable constraints, resource
+exhaustion, etc), then the exit code will be 2. Any other errors, including
+client connection issues or internal errors, are indicated by exit code 1.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Dispatch Options
+
+- `-meta`: Meta takes a key/value pair separated by "=". The metadata key will
+ be merged into the job's metadata. The job may define a default value for the
+ key which is overridden when dispatching. The flag can be provided more than
+ once to inject multiple metadata key/value pairs. Arbitrary keys are not
+ allowed. The parameterized job must allow the key to be merged.
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Dispatch against a parameterized job with the ID "video-encode" and
+passing in a configuration payload via stdin:
+
+```shell-session
+$ cat << EOF | nomad job dispatch video-encode -
+{
+ "s3-input": "https://video-bucket.s3-us-west-1.amazonaws.com/cb31dabb1",
+ "s3-output": "https://video-bucket.s3-us-west-1.amazonaws.com/a149adbe3",
+ "input-codec": "mp4",
+ "output-codec": "webm",
+ "quality": "1080p"
+}
+EOF
+Dispatched Job ID = video-encode/dispatch-1485379325-cb38d00d
+Evaluation ID = 31199841
+
+==> Monitoring evaluation "31199841"
+ Evaluation triggered by job "example/dispatch-1485379325-cb38d00d"
+ Allocation "8254b85f" created: node "82ff9c50", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "31199841" finished with status "complete"
+```
+
+Dispatch against a parameterized job with the ID "video-encode" and
+passing in a configuration payload via a file:
+
+```shell-session
+$ nomad job dispatch video-encode video-config.json
+Dispatched Job ID = video-encode/dispatch-1485379325-cb38d00d
+Evaluation ID = 31199841
+
+==> Monitoring evaluation "31199841"
+ Evaluation triggered by job "example/dispatch-1485379325-cb38d00d"
+ Allocation "8254b85f" created: node "82ff9c50", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "31199841" finished with status "complete"
+```
+
+Dispatch against a parameterized job with the ID "video-encode" using the detach
+flag:
+
+```shell-session
+$ nomad job dispatch -detach video-encode video-config.json
+Dispatched Job ID = example/dispatch-1485380684-c37b3dba
+Evaluation ID = d9034c4e
+```
+
+[eval status]: /docs/commands/eval-status
+[parameterized job]: /docs/job-specification/parameterized 'Nomad parameterized Job Specification'
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/eval.mdx b/content/nomad/v0.11.x/content/docs/commands/job/eval.mdx
new file mode 100644
index 0000000000..a4b77976aa
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/eval.mdx
@@ -0,0 +1,73 @@
+---
+layout: docs
+page_title: 'Commands: job eval'
+sidebar_title: eval
+description: |
+ The job eval command is used to force an evaluation of a job
+---
+
+# Command: job eval
+
+The `job eval` command is used to force an evaluation of a job, given the job
+ID.
+
+## Usage
+
+```plaintext
+nomad job eval [options]
+```
+
+The `job eval` command requires a single argument, specifying the job ID to
+evaluate. If there is an exact match based on the provided job ID, then the job
+will be evaluated, forcing a scheduler run.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Eval Options
+
+- `-force-reschedule`: `force-reschedule` is used to force placement of failed
+ allocations. If this is set, failed allocations that are past their reschedule
+ limit, and those that are scheduled to be replaced at a future time are placed
+ immediately. This option only places failed allocations if the task group has
+ rescheduling enabled.
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command.
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Evaluate the job with ID "job1":
+
+```shell-session
+$ nomad job eval job1
+==> Monitoring evaluation "0f3bc0f3"
+ Evaluation triggered by job "test"
+ Evaluation within deployment: "51baf5c8"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "0f3bc0f3" finished with status "complete"
+```
+
+Evaluate the job with ID "job1" and return immediately:
+
+```shell-session
+$ nomad job eval -detach job1
+Created eval ID: "4947e728"
+```
+
+Evaluate the job with ID "job1", and reschedule any eligible failed allocations:
+
+```shell-session
+$ nomad job eval -force-reschedule job1
+==> Monitoring evaluation "0f3bc0f3"
+ Evaluation triggered by job "test"
+ Evaluation within deployment: "51baf5c8"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "0f3bc0f3" finished with status "complete"
+```
+
+[eval status]: /docs/commands/eval-status
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/history.mdx b/content/nomad/v0.11.x/content/docs/commands/job/history.mdx
new file mode 100644
index 0000000000..e6ba1c89e5
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/history.mdx
@@ -0,0 +1,80 @@
+---
+layout: docs
+page_title: 'Commands: job history'
+sidebar_title: history
+description: |
+ The history command is used to display all tracked versions of a job.
+---
+
+# Command: job history
+
+The `job history` command is used to display the known versions of a particular
+job. The command can display the diff between job versions and can be useful for
+understanding the changes that occurred to the job as well as deciding job
+versions to revert to.
+
+## Usage
+
+```plaintext
+nomad job history [options]
+```
+
+The `job history` command requires a single argument, the job ID or an ID prefix
+of a job to display the history for.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## History Options
+
+- `-p`: Display the differences between each job and its predecessor.
+- `-full`: Display the full job definition for each version.
+- `-version`: Display only the history for the given version.
+- `-json` : Output the job versions in its JSON format.
+- `-t` : Format and display the job versions using a Go template.
+
+## Examples
+
+Display the history showing differences between versions:
+
+```shell-session
+$ nomad job history -p e
+Version = 2
+Stable = false
+Submit Date = 07/25/17 20:35:43 UTC
+Diff =
++/- Job: "example"
++/- Task Group: "cache"
+ +/- Task: "redis"
+ +/- Resources {
+ CPU: "500"
+ DiskMB: "0"
+ +/- MemoryMB: "256" => "512"
+ }
+
+Version = 1
+Stable = false
+Submit Date = 07/25/17 20:35:31 UTC
+Diff =
++/- Job: "example"
++/- Task Group: "cache"
+ +/- Count: "1" => "3"
+ Task: "redis"
+
+Version = 0
+Stable = false
+Submit Date = 07/25/17 20:35:28 UTC
+```
+
+Display the memory ask across submitted job versions:
+
+```shell-session
+$ nomad job history -t "{{range .}}\
+v{{.Version}}: {{with index .TaskGroups 0}}{{with index .Tasks 0}}{{.Resources.MemoryMB}}{{end}}{{end}}\
+
+{{end}}" example
+v2: 512
+v1: 256
+v0: 256
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/index.mdx b/content/nomad/v0.11.x/content/docs/commands/job/index.mdx
new file mode 100644
index 0000000000..8026c0fb74
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/index.mdx
@@ -0,0 +1,34 @@
+---
+layout: docs
+page_title: 'Commands: job'
+sidebar_title: job
+description: |
+ The job command is used to interact with jobs.
+---
+
+# Command: job
+
+The `job` command is used to interact with jobs.
+
+## Usage
+
+Usage: `nomad job [options]`
+
+Run `nomad job -h` for help on that subcommand. The following
+subcommands are available:
+
+- [`job deployments`][deployments] - List deployments for a job
+- [`job dispatch`][dispatch] - Dispatch an instance of a parameterized job
+- [`job eval`][eval] - Force an evaluation for a job
+- [`job history`][history] - Display all tracked versions of a job
+- [`job promote`][promote] - Promote a job's canaries
+- [`job revert`][revert] - Revert to a prior version of the job
+- [`job status`][status] - Display status information about a job
+
+[deployments]: /docs/commands/job/deployments 'List deployments for a job'
+[dispatch]: /docs/commands/job/dispatch 'Dispatch an instance of a parameterized job'
+[eval]: /docs/commands/job/eval 'Force an evaluation for a job'
+[history]: /docs/commands/job/history 'Display all tracked versions of a job'
+[promote]: /docs/commands/job/promote "Promote a job's canaries"
+[revert]: /docs/commands/job/revert 'Revert to a prior version of the job'
+[status]: /docs/commands/job/status 'Display status information about a job'
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/init.mdx b/content/nomad/v0.11.x/content/docs/commands/job/init.mdx
new file mode 100644
index 0000000000..217f29cb45
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/init.mdx
@@ -0,0 +1,44 @@
+---
+layout: docs
+page_title: 'Commands: job init'
+sidebar_title: init
+description: |
+ The job init command is used to generate a skeleton jobspec template.
+---
+
+# Command: job init
+
+**Alias: `nomad init`**
+
+The `job init` command creates an example [job specification][jobspec] in the
+current directory that demonstrates some common configurations for tasks, task
+groups, runtime constraints, and resource allocation.
+
+## Usage
+
+```plaintext
+nomad job init [options] [filename]
+```
+
+You may optionally supply a filename for the example job to be written to. The
+default filename for the generated file is "example.nomad".
+
+Please refer to the [jobspec] and [drivers] pages to learn how to customize the
+template.
+
+## Init Options
+
+- `-short`: If set, a minimal jobspec without comments is emitted.
+- `-connect`: If set, the jobspec includes Consul Connect integration.
+
+## Examples
+
+Generate an example job file:
+
+```shell-session
+$ nomad job init
+Example job file written to example.nomad
+```
+
+[jobspec]: /docs/job-specification 'Nomad Job Specification'
+[drivers]: /docs/drivers 'Nomad Task Drivers documentation'
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/inspect.mdx b/content/nomad/v0.11.x/content/docs/commands/job/inspect.mdx
new file mode 100644
index 0000000000..9b0e151c4e
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/inspect.mdx
@@ -0,0 +1,156 @@
+---
+layout: docs
+page_title: 'Commands: job inspect'
+sidebar_title: inspect
+description: |
+ The job inspect command is used to inspect a submitted job.
+---
+
+# Command: job inspect
+
+**Alias: `nomad inspect`**
+
+The `job inspect` command is used to inspect the content of a submitted job.
+
+## Usage
+
+```plaintext
+nomad job inspect [options]
+```
+
+The `job inspect` command requires a single argument, a submitted job's name, and
+will retrieve the JSON version of the job. This JSON is valid to be submitted to
+the [Job HTTP API]. This command is useful to inspect what version of a job
+Nomad is running.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Inspect Options
+
+- `-version`: Display only the job at the given job version.
+- `-json` : Output the job in its JSON format.
+- `-t` : Format and display the job using a Go template.
+
+## Examples
+
+Inspect a submitted job:
+
+```shell-session
+$ nomad job inspect redis
+{
+ "Job": {
+ "Region": "global",
+ "ID": "redis
+ "Name": "redis
+ "Type": "service",
+ "Priority": 50,
+ "AllAtOnce": false,
+ "Datacenters": [
+ "dc1"
+ ],
+ "Constraints": [
+ {
+ "LTarget": "${attr.kernel.name}",
+ "RTarget": "linux",
+ "Operand": "="
+ }
+ ],
+ "TaskGroups": [
+ {
+ "Name": "cache",
+ "Count": 1,
+ "Constraints": null,
+ "Tasks": [
+ {
+ "Name": "redis",
+ "Driver": "docker",
+ "User": "",
+ "Config": {
+ "image": "redis:latest",
+ "port_map": [
+ {
+ "db": 6379
+ }
+ ]
+ },
+ "Constraints": null,
+ "Env": null,
+ "Services": [
+ {
+ "Id": "",
+ "Name": "cache-redis",
+ "Tags": [
+ "global",
+ "cache"
+ ],
+ "PortLabel": "db",
+ "Checks": [
+ {
+ "Id": "",
+ "Name": "alive",
+ "Type": "tcp",
+ "Command": "",
+ "Args": null,
+ "Path": "",
+ "Protocol": "",
+ "Interval": 10000000000,
+ "Timeout": 2000000000
+ }
+ ]
+ }
+ ],
+ "Resources": {
+ "CPU": 500,
+ "MemoryMB": 256,
+ "DiskMB": 300,
+ "Networks": [
+ {
+ "Public": false,
+ "CIDR": "",
+ "ReservedPorts": null,
+ "DynamicPorts": [
+ {
+ "Label": "db",
+ "Value": 0
+ }
+ ],
+ "IP": "",
+ "MBits": 10
+ }
+ ]
+ },
+ "Meta": null,
+ "KillTimeout": 5000000000,
+ "LogConfig": {
+ "MaxFiles": 10,
+ "MaxFileSizeMB": 10
+ },
+ "Artifacts": null
+ }
+ ],
+ "RestartPolicy": {
+ "Interval": 300000000000,
+ "Attempts": 10,
+ "Delay": 25000000000,
+ "Mode": "delay"
+ },
+ "Meta": null
+ }
+ ],
+ "Update": {
+ "Stagger": 10000000000,
+ "MaxParallel": 1
+ },
+ "Periodic": null,
+ "Meta": null,
+ "Status": "running",
+ "StatusDescription": "",
+ "CreateIndex": 5,
+ "ModifyIndex": 7
+ }
+}
+```
+
+[job http api]: /api-docs/jobs
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/periodic-force.mdx b/content/nomad/v0.11.x/content/docs/commands/job/periodic-force.mdx
new file mode 100644
index 0000000000..86b1fce684
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/periodic-force.mdx
@@ -0,0 +1,66 @@
+---
+layout: docs
+page_title: 'Commands: job periodic force'
+sidebar_title: periodic force
+description: >
+ The job periodic force command is used to force the evaluation of a periodic
+ job.
+---
+
+# Command: job periodic force
+
+The `job periodic force` command is used to [force the evaluation] of a
+[periodic job].
+
+## Usage
+
+```plaintext
+nomad job periodic force [options]
+```
+
+The `job periodic force` command requires a single argument, specifying the ID
+of the job. This job must be a periodic job. This is used to immediately run a
+periodic job, even if it violates the job's `prohibit_overlap` setting.
+
+By default, on successful job submission the command will enter an interactive
+monitor and display log information detailing the scheduling decisions and
+placement information for the forced evaluation. The monitor will exit after
+scheduling has finished or failed.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Run Options
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command.
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Force the evaluation of the job `example`, monitoring placement:
+
+```shell-session
+$ nomad job periodic force example
+==> Monitoring evaluation "54b2d6d9"
+ Evaluation triggered by job "example/periodic-1555094493"
+ Allocation "637aee17" created: node "a35ab8fc", group "cache"
+ Allocation "637aee17" status changed: "pending" -> "running" (Tasks are running)
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "54b2d6d9" finished with status "complete"
+```
+
+Force the evaluation of the job `example` and return immediately:
+
+```shell-session
+$ nomad job periodic force -detach example
+Force periodic successful
+Evaluation ID: 0865fbf3-30de-5f53-0811-821e73e63178
+```
+
+[eval status]: /docs/commands/eval-status
+[force the evaluation]: /api-docs/jobs#force-new-periodic-instance
+[periodic job]: /docs/job-specification/periodic
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/plan.mdx b/content/nomad/v0.11.x/content/docs/commands/job/plan.mdx
new file mode 100644
index 0000000000..46fdf0209f
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/plan.mdx
@@ -0,0 +1,205 @@
+---
+layout: docs
+page_title: 'Commands: job plan'
+sidebar_title: plan
+description: |
+ The job plan command is used to dry-run a job update to determine its effects.
+---
+
+# Command: job plan
+
+**Alias: `nomad plan`**
+
+The `job plan` command can be used to invoke the scheduler in a dry-run mode
+with new jobs or when updating existing jobs to determine what would happen if
+the job is submitted. Job files must conform to the [job specification] format.
+
+## Usage
+
+```plaintext
+nomad job plan [options]
+```
+
+The `job plan` command requires a single argument, specifying the path to a file
+containing an HCL [job specification]. This file will be read and the resulting
+parsed job will be validated. If the supplied path is "-", the job file is read
+from STDIN. Otherwise it is read from the file at the supplied path or
+downloaded and read from URL specified. Nomad downloads the job file using
+[`go-getter`] and supports `go-getter` syntax.
+
+Plan invokes a dry-run of the scheduler to determine the effects of submitting
+either a new or updated version of a job. The plan will not result in any
+changes to the cluster but gives insight into whether the job could be run
+successfully and how it would affect existing allocations.
+
+A job modify index is returned with the plan. This value can be used when
+submitting the job using [`nomad job run -check-index`], which will check that
+the job was not modified between the plan and run command before invoking the
+scheduler. This ensures the job has not been modified since the plan.
+
+A structured diff between the local and remote job is displayed to
+give insight into what the scheduler will attempt to do and why.
+
+If the job has specified the region, the `-region` flag and `NOMAD_REGION`
+environment variable are overridden and the job's region is used.
+
+Plan will return one of the following exit codes:
+
+- 0: No allocations created or destroyed.
+- 1: Allocations created or destroyed.
+- 255: Error determining plan results.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Plan Options
+
+- `-diff`: Determines whether the diff between the remote job and planned job is
+ shown. Defaults to true.
+
+- `-policy-override`: Sets the flag to force override any soft mandatory
+ Sentinel policies.
+
+- `-verbose`: Increase diff verbosity.
+
+## Examples
+
+Plan a new job that has not been previously submitted:
+
+```shell-session
+$ nomad job plan job1.nomad
+nomad job plan example.nomad
++ Job: "example"
++ Task Group: "cache" (1 create)
+ + Task: "redis" (forces create)
+
+Scheduler dry-run:
+- All tasks successfully allocated.
+
+Job Modify Index: 0
+To submit the job with version verification run:
+
+nomad job run -check-index 0 example.nomad
+
+When running the job with the check-index flag, the job will only be run if the
+job modify index given matches the server-side version. If the index has
+changed, another user has modified the job and the plan's results are
+potentially invalid.
+```
+
+Increase the count of an existing without sufficient cluster capacity:
+
+```shell-session
+$ nomad job plan example.nomad
++/- Job: "example"
++/- Task Group: "cache" (7 create, 1 in-place update)
+ +/- Count: "1" => "8" (forces create)
+ Task: "redis"
+
+Scheduler dry-run:
+- WARNING: Failed to place all allocations.
+ Task Group "cache" (failed to place 3 allocations):
+ * Resources exhausted on 1 nodes
+ * Dimension "cpu" exhausted on 1 nodes
+
+Job Modify Index: 15
+To submit the job with version verification run:
+
+nomad job run -check-index 15 example.nomad
+
+When running the job with the check-index flag, the job will only be run if the
+job modify index given matches the server-side version. If the index has
+changed, another user has modified the job and the plan's results are
+potentially invalid.
+```
+
+Update an existing job such that it would cause a rolling update:
+
+```shell-session
+$ nomad job plan example.nomad
++/- Job: "example"
++/- Task Group: "cache" (3 create/destroy update)
+ +/- Task: "redis" (forces create/destroy update)
+ +/- Config {
+ +/- image: "redis:2.8" => "redis:3.2"
+ port_map[0][db]: "6379"
+ }
+
+Scheduler dry-run:
+- All tasks successfully allocated.
+- Rolling update, next evaluation will be in 10s.
+
+Job Modify Index: 7
+To submit the job with version verification run:
+
+nomad job run -check-index 7 example.nomad
+
+When running the job with the check-index flag, the job will only be run if the
+job modify index given matches the server-side version. If the index has
+changed, another user has modified the job and the plan's results are
+potentially invalid.
+```
+
+Add a task to the task group using verbose mode:
+
+```shell-session
+$ nomad job plan -verbose example.nomad
++/- Job: "example"
++/- Task Group: "cache" (3 create/destroy update)
+ + Task: "my-website" (forces create/destroy update)
+ + Driver: "docker"
+ + KillTimeout: "5000000000"
+ + Config {
+ + image: "node:6.2"
+ + port_map[0][web]: "80"
+ }
+ + Resources {
+ + CPU: "500"
+ + DiskMB: "300"
+ + MemoryMB: "256"
+ + Network {
+ + MBits: "10"
+ + Dynamic Port {
+ + Label: "web"
+ }
+ }
+ }
+ + LogConfig {
+ + MaxFileSizeMB: "10"
+ + MaxFiles: "10"
+ }
+ + Service {
+ + Name: "website"
+ + PortLabel: "web"
+ + Check {
+ Command: ""
+ + Interval: "10000000000"
+ + Name: "alive"
+ Path: ""
+ Protocol: ""
+ + Timeout: "2000000000"
+ + Type: "tcp"
+ }
+ }
+ Task: "redis"
+
+Scheduler dry-run:
+- All tasks successfully allocated.
+- Rolling update, next evaluation will be in 10s.
+
+Job Modify Index: 7
+To submit the job with version verification run:
+
+nomad job run -check-index 7 example.nomad
+
+When running the job with the check-index flag, the job will only be run if the
+job modify index given matches the server-side version. If the index has
+changed, another user has modified the job and the plan's results are
+potentially invalid.
+```
+
+[job specification]: /docs/job-specification
+[hcl job specification]: /docs/job-specification
+[`go-getter`]: https://github.com/hashicorp/go-getter
+[`nomad job run -check-index`]: /docs/commands/job/run#check-index
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/promote.mdx b/content/nomad/v0.11.x/content/docs/commands/job/promote.mdx
new file mode 100644
index 0000000000..dbdde983a6
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/promote.mdx
@@ -0,0 +1,224 @@
+---
+layout: docs
+page_title: 'Commands: job promote'
+sidebar_title: promote
+description: |
+ The promote command is used to promote a job's canaries.
+---
+
+# Command: job promote
+
+The `job promote` command is used to promote task groups in the most recent
+deployment for the given job. Promotion should occur when the deployment has
+placed canaries for a task group and those canaries have been deemed healthy.
+When a task group is promoted, the rolling upgrade of the remaining allocations
+is unblocked. If the canaries are found to be unhealthy, the deployment may
+either be failed using the "nomad deployment fail" command, the job can be
+failed forward by submitting a new version or failed backwards by reverting to
+an older version using the [job revert] command.
+
+## Usage
+
+```plaintext
+nomad job promote [options]
+```
+
+The `job promote` command requires a single argument, a job ID or
+prefix. When run without specifying any groups to promote, the promote command
+promotes all task groups. The group flag can be specified multiple times to
+select particular groups to promote.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Promote Options
+
+- `-group`: Group may be specified many times and is used to promote that
+ particular group. If no specific groups are specified, all groups are
+ promoted.
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command.
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Promote canaries in all groups:
+
+```shell-session
+# Have two task groups waiting for promotion.
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:35:05 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 3 0 0 0
+web 0 0 3 0 0 0
+
+Latest Deployment
+ID = 9fa81f27
+Status = running
+Description = Deployment is running but requires manual promotion
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+web false 2 1 1 0 0
+cache false 2 1 1 0 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+091377e5 a8dcce2d web 1 run running 07/25/17 18:35:05 UTC
+d2b13584 a8dcce2d cache 1 run running 07/25/17 18:35:05 UTC
+4bb185b7 a8dcce2d web 0 run running 07/25/17 18:31:34 UTC
+9b6811ee a8dcce2d cache 0 run running 07/25/17 18:31:34 UTC
+e0a2441b a8dcce2d cache 0 run running 07/25/17 18:31:34 UTC
+f2409f7d a8dcce2d web 0 run running 07/25/17 18:31:34 UTC
+
+# Promote all groups
+$ nomad job promote example
+==> Monitoring evaluation "6c6e64ae"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "9fa81f27"
+ Allocation "8fa21654" created: node "a8dcce2d", group "web"
+ Allocation "9f6727a6" created: node "a8dcce2d", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "6c6e64ae" finished with status "complete"
+
+# Inspect the status and see both groups have been promoted.
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:35:05 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 2 0 2 0
+web 0 0 2 0 2 0
+
+Latest Deployment
+ID = 9fa81f27
+Status = successful
+Description = Deployment completed successfully
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+web true 2 1 2 2 0
+cache true 2 1 2 2 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+8fa21654 a8dcce2d web 1 run running 07/25/17 18:35:21 UTC
+9f6727a6 a8dcce2d cache 1 run running 07/25/17 18:35:21 UTC
+091377e5 a8dcce2d web 1 run running 07/25/17 18:35:05 UTC
+d2b13584 a8dcce2d cache 1 run running 07/25/17 18:35:05 UTC
+4bb185b7 a8dcce2d web 0 stop complete 07/25/17 18:31:34 UTC
+9b6811ee a8dcce2d cache 0 stop complete 07/25/17 18:31:34 UTC
+e0a2441b a8dcce2d cache 0 stop complete 07/25/17 18:31:34 UTC
+f2409f7d a8dcce2d web 0 stop complete 07/25/17 18:31:34 UTC
+```
+
+Promote canaries in a particular group:
+
+```shell-session
+# Have two task groups waiting for promotion.
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:37:14 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 3 0 0 0
+web 0 0 3 0 0 0
+
+Latest Deployment
+ID = a6b87a6c
+Status = running
+Description = Deployment is running but requires manual promotion
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+cache false 2 1 1 1 0
+web false 2 1 1 1 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+3071ab8f 6240eed6 web 1 run running 07/25/17 18:37:14 UTC
+eeeed13b 6240eed6 cache 1 run running 07/25/17 18:37:14 UTC
+0ee7800c 6240eed6 cache 0 run running 07/25/17 18:37:08 UTC
+a714a926 6240eed6 cache 0 run running 07/25/17 18:37:08 UTC
+cee52788 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+ee8f972e 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+
+# Promote only the cache canaries
+$ nomad job promote -group=cache example
+==> Monitoring evaluation "37383564"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "a6b87a6c"
+ Allocation "bbddf5c3" created: node "6240eed6", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "37383564" finished with status "complete"
+
+# Inspect the status and see that only the cache canaries are promoted
+$ nomad status example
+ID = example
+Name = example
+Submit Date = 07/25/17 18:37:14 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 2 0 2 0
+web 0 0 3 0 0 0
+
+Latest Deployment
+ID = a6b87a6c
+Status = running
+Description = Deployment is running but requires manual promotion
+
+Deployed
+Task Group Promoted Desired Canaries Placed Healthy Unhealthy
+web false 2 1 1 1 0
+cache true 2 1 2 2 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created At
+bbddf5c3 6240eed6 cache 1 run running 07/25/17 18:37:40 UTC
+eeeed13b 6240eed6 cache 1 run running 07/25/17 18:37:14 UTC
+3071ab8f 6240eed6 web 1 run running 07/25/17 18:37:14 UTC
+a714a926 6240eed6 cache 0 stop complete 07/25/17 18:37:08 UTC
+cee52788 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+ee8f972e 6240eed6 web 0 run running 07/25/17 18:37:08 UTC
+0ee7800c 6240eed6 cache 0 stop complete 07/25/17 18:37:08 UTC
+```
+
+[job revert]: /docs/commands/job/revert
+[eval status]: /docs/commands/eval-status
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/revert.mdx b/content/nomad/v0.11.x/content/docs/commands/job/revert.mdx
new file mode 100644
index 0000000000..aafe64a0ca
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/revert.mdx
@@ -0,0 +1,122 @@
+---
+layout: docs
+page_title: 'Commands: job revert'
+sidebar_title: revert
+description: |
+ The revert command is used to revert to a prior version of the job.
+---
+
+# Command: job revert
+
+The `job revert` command is used to revert a job to a prior version of the
+job. The available versions to revert to can be found using [`job history`]
+command.
+
+The revert command will use a Consul token with the following preference:
+first the `-consul-token` flag, then the `$CONSUL_HTTP_TOKEN` environment variable.
+Because the consul token used to [run] the targeted job version was not
+persisted, it must be provided to revert if the targeted job version includes
+Consul Connect enabled services and the Nomad servers were configured to require
+[consul service identity] authentication.
+
+The revert command will use a Vault token with the following preference:
+first the `-vault-token` flag, then the `$VAULT_TOKEN` environment variable.
+Because the vault token used to [run] the targeted job version was not
+persisted, it must be provided to revert if the targeted job version includes
+Vault policies and the Nomad servers were configured to require [vault policy]
+authentication.
+
+## Usage
+
+```plaintext
+nomad job revert [options]
+```
+
+The `job revert` command requires two inputs, the job ID and the version of that
+job to revert to.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Revert Options
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command.
+
+- `-consul-token`: If set, the passed Consul token is sent along with the revert
+ request to the Nomad servers. This overrides the token found in the
+ \$CONSUL_HTTP_TOKEN environment variable.
+
+- `-vault-token`: If set, the passed Vault token is sent along with the revert
+ request to the Nomad servers. This overrides the token found in the
+ \$VAULT_TOKEN environment variable.
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Revert to an older version of a job:
+
+```shell-session
+$ nomad job history -p example
+Version = 1
+Stable = false
+Submit Date = 07/25/17 21:27:30 UTC
+Diff =
++/- Job: "example"
++/- Task Group: "cache"
+ +/- Task: "redis"
+ +/- Config {
+ +/- image: "redis:3.2" => "redis:4.0"
+ port_map[0][db]: "6379"
+ }
+
+Version = 0
+Stable = false
+Submit Date = 07/25/17 21:27:18 UTC
+
+$ nomad job revert example 0
+==> Monitoring evaluation "faff5c30"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "e17c8592"
+ Allocation "4ed0ca3b" modified: node "e8a2243d", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "faff5c30" finished with status "complete"
+
+$ nomad job history -p example
+Version = 2
+Stable = true
+Submit Date = 07/25/17 21:27:43 UTC
+Diff =
++/- Job: "example"
++/- Task Group: "cache"
+ +/- Task: "redis"
+ +/- Config {
+ +/- image: "redis:4.0" => "redis:3.2"
+ port_map[0][db]: "6379"
+ }
+
+Version = 1
+Stable = false
+Submit Date = 07/25/17 21:27:30 UTC
+Diff =
++/- Job: "example"
++/- Task Group: "cache"
+ +/- Task: "redis"
+ +/- Config {
+ +/- image: "redis:3.2" => "redis:4.0"
+ port_map[0][db]: "6379"
+ }
+
+Version = 0
+Stable = false
+Submit Date = 07/25/17 21:27:18 UTC
+```
+
+[`job history`]: /docs/commands/job/history
+[eval status]: /docs/commands/eval-status
+[consul service identity]: /docs/configuration/consul#allow_unauthenticated
+[vault policy]: /docs/configuration/vault#allow_unauthenticated
+[run]: /docs/commands/job/run
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/run.mdx b/content/nomad/v0.11.x/content/docs/commands/job/run.mdx
new file mode 100644
index 0000000000..4e039c3b5d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/run.mdx
@@ -0,0 +1,141 @@
+---
+layout: docs
+page_title: 'Commands: job run'
+sidebar_title: run
+description: |
+ The job run command is used to run a new job.
+---
+
+# Command: job run
+
+**Alias: `nomad run`**
+
+The `job run` command is used to submit new jobs to Nomad or to update existing
+jobs. Job files must conform to the [job specification] format.
+
+## Usage
+
+```plaintext
+nomad job run [options]
+```
+
+The `job run` command requires a single argument, specifying the path to a file
+containing a valid [job specification]. This file will be read and the job will
+be submitted to Nomad for scheduling. If the supplied path is "-", the job file
+is read from STDIN. Otherwise it is read from the file at the supplied path or
+downloaded and read from URL specified. Nomad downloads the job file using
+[`go-getter`] and supports `go-getter` syntax.
+
+By default, on successful job submission the run command will enter an
+interactive monitor and display log information detailing the scheduling
+decisions and placement information for the provided job. The monitor will
+exit after scheduling has finished or failed.
+
+On successful job submission and scheduling, exit code 0 will be returned. If
+there are job placement issues encountered (unsatisfiable constraints, resource
+exhaustion, etc), then the exit code will be 2. Any other errors, including
+client connection issues or internal errors, are indicated by exit code 1.
+
+If the job has specified the region, the -region flag and `\$NOMAD_REGION`
+environment variable are overridden and the job's region is used.
+
+The run command will set the `consul_token` of the job based on the following
+precedence, going from highest to lowest: the `-consul-token` flag, the
+`$CONSUL_HTTP_TOKEN` environment variable and finally the value in the job file.
+
+The run command will set the `vault_token` of the job based on the following
+precedence, going from highest to lowest: the `-vault-token` flag, the
+`$VAULT_TOKEN` environment variable and finally the value in the job file.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Run Options
+
+- `-check-index`: If set, the job is only registered or
+ updated if the passed job modify index matches the server side version.
+ If a check-index value of zero is passed, the job is only registered if it does
+ not yet exist. If a non-zero value is passed, it ensures that the job is being
+ updated from a known state. The use of this flag is most common in conjunction
+ with [`job plan` command].
+
+- `-detach`: Return immediately instead of monitoring. A new evaluation ID
+ will be output, which can be used to examine the evaluation using the
+ [eval status] command.
+
+- `-output`: Output the JSON that would be submitted to the HTTP API without
+ submitting the job.
+
+- `-policy-override`: Sets the flag to force override any soft mandatory
+ Sentinel policies.
+
+- `-consul-token`: If set, the passed Consul token is stored in the job before
+ sending to the Nomad servers. This allows passing the Consul token without
+ storing it in the job file. This overrides the token found in the \$CONSUL_HTTP_TOKEN
+ environment variable and that found in the job.
+
+- `-vault-token`: If set, the passed Vault token is stored in the job before
+ sending to the Nomad servers. This allows passing the Vault token without
+ storing it in the job file. This overrides the token found in the \$VAULT_TOKEN
+ environment variable and that found in the job.
+
+- `-verbose`: Show full information.
+
+## Examples
+
+Schedule the job contained in the file `job1.nomad`, monitoring placement:
+
+```shell-session
+$ nomad job run job1.nomad
+==> Monitoring evaluation "52dee78a"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "62eb607c"
+ Allocation "5e0b39f0" created: node "3e84d3d2", group "group1"
+ Allocation "5e0b39f0" status changed: "pending" -> "running"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "52dee78a" finished with status "complete"
+```
+
+ Update the job using `check-index`:
+
+```shell-session
+$ nomad job run -check-index 5 example.nomad
+Enforcing job modify index 5: job exists with conflicting job modify index: 6
+Job not updated
+
+$ nomad job run -check-index 6 example.nomad
+==> Monitoring evaluation "5ef16dff"
+ Evaluation triggered by job "example"
+ Evaluation within deployment: "62eb607c"
+ Allocation "6ec7d16f" modified: node "6e1f9bf6", group "cache"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "5ef16dff" finished with status "complete"
+```
+
+Schedule the job contained in `job1.nomad` and return immediately:
+
+```shell-session
+$ nomad job run -detach job1.nomad
+4947e728
+```
+
+Schedule a job which cannot be successfully placed. This results in a scheduling
+failure and the specifics of the placement are printed:
+
+```shell-session
+$ nomad job run failing.nomad
+==> Monitoring evaluation "2ae0e6a5"
+ Evaluation triggered by job "example"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "2ae0e6a5" finished with status "complete" but failed to place all allocations:
+ Task Group "cache" (failed to place 1 allocation):
+ * Class "foo" filtered 1 nodes
+ * Constraint "${attr.kernel.name} = linux" filtered 1 nodes
+ Evaluation "67493a64" waiting for additional capacity to place remainder
+```
+
+[`go-getter`]: https://github.com/hashicorp/go-getter
+[`job plan` command]: /docs/commands/job/plan
+[eval status]: /docs/commands/eval-status
+[job specification]: /docs/job-specification
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/status.mdx b/content/nomad/v0.11.x/content/docs/commands/job/status.mdx
new file mode 100644
index 0000000000..490d2a4e6d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/status.mdx
@@ -0,0 +1,252 @@
+---
+layout: docs
+page_title: 'Commands: job status'
+sidebar_title: status
+description: |
+ Display information and status of jobs.
+---
+
+# Command: job status
+
+The `job status` command displays status information for a job.
+
+## Usage
+
+```plaintext
+nomad job status [options] [job]
+```
+
+This command accepts an optional job ID or prefix as the sole argument. If there
+is an exact match based on the provided job ID or prefix, then information about
+the specific job is queried and displayed. Otherwise, a list of matching jobs
+and information will be displayed.
+
+If the ID is omitted, the command lists out all of the existing jobs and a few
+of the most useful status fields for each. As of Nomad 0.7.1, alloc status also
+shows allocation modification time in addition to create time. When the
+`-verbose` flag is not set, allocation creation and modify times are shown in a
+shortened relative time format like `5m ago`.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Status Options
+
+- `-all-allocs`: Display all allocations matching the job ID, even those from an
+ older instance of the job.
+
+- `-evals`: Display the evaluations associated with the job.
+
+- `-short`: Display short output. Used only when a single node is being queried.
+ Drops verbose node allocation data from the output.
+
+- `-verbose`: Show full information. Allocation create and modify times are
+ shown in `yyyy/mm/dd hh:mm:ss` format.
+
+## Examples
+
+List of all jobs:
+
+```shell-session
+$ nomad job status
+ID Type Priority Status Submit Date
+job1 service 80 running 07/25/17 15:47:11 UTC
+job2 batch 40 complete 07/24/17 19:22:11 UTC
+job3 service 50 dead (stopped) 07/22/17 16:34:48 UTC
+```
+
+Short view of a specific job:
+
+```shell-session
+$ nomad job status -short job1
+ID = job1
+Name = Test Job
+Submit Date = 07/25/17 15:47:11 UTC
+Type = service
+Priority = 3
+Datacenters = dc1,dc2,dc3
+Status = pending
+Periodic = false
+Parameterized = false
+```
+
+Full status information of a job:
+
+```shell-session
+$ nomad job status example
+ID = example
+Name = example
+Submit Date = 07/25/17 15:53:04 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 0 0 1 0 0 0
+
+Latest Deployment
+ID = 6294be0c
+Status = successful
+Description = Deployment completed successfully
+
+Deployed
+Task Group Desired Placed Healthy Unhealthy
+cache 1 1 1 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created Modified
+478ce836 5ed166e8 cache 0 run running 5m ago 5m ago
+```
+
+Full status information of a periodic job:
+
+```shell-session
+$ nomad job status example
+ID = example
+Name = example
+Submit Date = 07/25/17 15:59:52 UTC
+Type = batch
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = true
+Parameterized = false
+Next Periodic Launch = 07/25/17 16:00:30 UTC (5s from now)
+
+Children Job Summary
+Pending Running Dead
+0 3 0
+
+Previously Launched Jobs
+ID Status
+example/periodic-1500998400 running
+example/periodic-1500998410 running
+example/periodic-1500998420 running
+```
+
+Full status information of a parameterized job:
+
+```shell-session
+$ nomad job status example
+ID = example
+Name = example
+Submit Date = 07/25/17 15:59:52 UTC
+Type = batch
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = true
+
+Parameterized Job
+Payload = required
+Required Metadata = foo
+Optional Metadata = bar
+
+Parameterized Job Summary
+Pending Running Dead
+0 2 0
+
+Dispatched Jobs
+ID Status
+example/dispatch-1485411496-58f24d2d running
+example/dispatch-1485411499-fa2ee40e running
+```
+
+Full status information of a job with placement failures:
+
+```shell-session
+$ nomad job status example
+ID = example
+Name = example
+Submit Date = 07/25/17 15:55:27 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 1 0 4 0 0 0
+
+Placement Failure
+Task Group "cache":
+ * Resources exhausted on 1 nodes
+ * Dimension "cpu" exhausted on 1 nodes
+
+Latest Deployment
+ID = bb4b2fb1
+Status = running
+Description = Deployment is running
+
+Deployed
+Task Group Desired Placed Healthy Unhealthy
+cache 5 4 4 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created Modified
+048c1e9e 3f38ecb4 cache 0 run running 5m ago 5m ago
+250f9dec 3f38ecb4 cache 0 run running 5m ago 5m ago
+2eb772a1 3f38ecb4 cache 0 run running 5m ago 5m ago
+a17b7d3d 3f38ecb4 cache 0 run running 5m ago 5m ago
+```
+
+Full status information showing evaluations with a placement failure. The in
+progress evaluation denotes that Nomad is blocked waiting for resources to
+become available so that it can place the remaining allocations.
+
+```shell-session
+$ nomad job status -evals example
+ID = example
+Name = example
+Submit Date = 07/25/17 15:55:27 UTC
+Type = service
+Priority = 50
+Datacenters = dc1
+Status = running
+Periodic = false
+Parameterized = false
+
+Summary
+Task Group Queued Starting Running Failed Complete Lost
+cache 1 0 4 0 0 0
+
+Evaluations
+ID Priority Triggered By Status Placement Failures
+e44a39e8 50 deployment-watcher canceled false
+97018573 50 deployment-watcher complete true
+d5a7300c 50 deployment-watcher canceled false
+f05a4495 50 deployment-watcher complete true
+e3f3bdb4 50 deployment-watcher canceled false
+b5f08700 50 deployment-watcher complete true
+73bb867a 50 job-register blocked N/A - In Progress
+85052989 50 job-register complete true
+
+Placement Failure
+Task Group "cache":
+ * Resources exhausted on 1 nodes
+ * Dimension "cpu exhausted" exhausted on 1 nodes
+
+Latest Deployment
+ID = bb4b2fb1
+Status = running
+Description = Deployment is running
+
+Deployed
+Task Group Desired Placed Healthy Unhealthy
+cache 5 4 4 0
+
+Allocations
+ID Node ID Task Group Version Desired Status Created Modified
+048c1e9e 3f38ecb4 cache 0 run running 07/25/17 15:55:27 UTC 07/25/17 15:55:27 UTC
+250f9dec 3f38ecb4 cache 0 run running 07/25/17 15:55:27 UTC 07/25/17 15:55:27 UTC
+2eb772a1 3f38ecb4 cache 0 run running 07/25/17 15:55:27 UTC 07/25/17 15:55:27 UTC
+a17b7d3d 3f38ecb4 cache 0 run running 07/25/17 15:55:27 UTC 07/25/17 15:55:27 UTC
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/stop.mdx b/content/nomad/v0.11.x/content/docs/commands/job/stop.mdx
new file mode 100644
index 0000000000..f31abde940
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/stop.mdx
@@ -0,0 +1,67 @@
+---
+layout: docs
+page_title: 'Commands: job stop'
+sidebar_title: stop
+description: |
+ The job stop command is used to stop a running job.
+---
+
+# Command: job stop
+
+**Alias: `nomad stop`**
+
+The `job stop` command is used to stop a running job and signals the scheduler
+to cancel all of the running allocations.
+
+## Usage
+
+```plaintext
+nomad job stop [options]
+```
+
+The `job stop` command requires a single argument, specifying the job ID or
+prefix to cancel. If there is an exact match based on the provided job ID or
+prefix, then the job will be cancelled. Otherwise, a list of matching jobs and
+information will be displayed.
+
+Stop will issue a request to deregister the matched job and then invoke an
+interactive monitor that exits automatically once the scheduler has processed
+the request. It is safe to exit the monitor early using ctrl+c.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Stop Options
+
+- `-detach`: Return immediately instead of entering monitor mode. After the
+ deregister command is submitted, a new evaluation ID is printed to the screen,
+ which can be used to examine the evaluation using the [eval status] command.
+
+- `-verbose`: Show full information.
+
+- `-yes`: Automatic yes to prompts.
+
+- `-purge`: Purge is used to stop the job and purge it from the system. If not
+ set, the job will still be queryable and will be purged by the garbage
+ collector.
+
+## Examples
+
+Stop the job with ID "job1":
+
+```shell-session
+$ nomad job stop job1
+==> Monitoring evaluation "43bfe672"
+ Evaluation status changed: "pending" -> "complete"
+==> Evaluation "43bfe672" finished with status "complete"
+```
+
+Stop the job with ID "job1" and return immediately:
+
+```shell-session
+$ nomad job stop -detach job1
+507d26cb
+```
+
+[eval status]: /docs/commands/eval-status
diff --git a/content/nomad/v0.11.x/content/docs/commands/job/validate.mdx b/content/nomad/v0.11.x/content/docs/commands/job/validate.mdx
new file mode 100644
index 0000000000..0339a00d14
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/job/validate.mdx
@@ -0,0 +1,62 @@
+---
+layout: docs
+page_title: 'Commands: job validate'
+sidebar_title: validate
+description: >
+ The job validate command is used to check a job specification for syntax
+ errors and validation problems.
+---
+
+# Command: job validate
+
+**Alias: `nomad validate`**
+
+The `job validate` command is used to check an HCL [job specification] for any
+syntax errors or validation problems.
+
+## Usage
+
+```plaintext
+nomad job validate
+```
+
+The `job validate` command requires a single argument, specifying the path to a
+file containing an HCL [job specification]. This file will be read and the job
+checked for any problems. If the supplied path is "-", the job file is read from
+STDIN. Otherwise it is read from the file at the supplied path or downloaded and
+read from URL specified. Nomad downloads the job file using [`go-getter`] and
+supports `go-getter` syntax.
+
+On successful validation, exit code 0 will be returned, otherwise an exit code
+of 1 indicates an error.
+
+## Examples
+
+Validate a job with invalid syntax:
+
+```shell-session
+$ nomad job validate example.nomad
+Job validation errors:
+1 error(s) occurred:
+
+* group "cache" -> task "redis" -> config: 1 error(s) occurred:
+
+* field "image" is required
+```
+
+Validate a job that has a configuration that causes warnings:
+
+```shell-session
+$ nomad job validate example.nomad
+Job Warnings:
+1 warning(s):
+
+* Group "cache" has warnings: 1 error(s) occurred:
+
+* Update max parallel count is greater than task group count (6 > 3). A destructive change would result in the simultaneous replacement of all allocations.
+
+Job validation successful
+```
+
+[`go-getter`]: https://github.com/hashicorp/go-getter
+[job specification]: /docs/job-specification
diff --git a/content/nomad/v0.11.x/content/docs/commands/monitor.mdx b/content/nomad/v0.11.x/content/docs/commands/monitor.mdx
new file mode 100644
index 0000000000..3fa44e165d
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/monitor.mdx
@@ -0,0 +1,56 @@
+---
+layout: docs
+page_title: 'Commands: monitor'
+sidebar_title: monitor
+description: |
+ Stream the logs of a running nomad agent.
+---
+
+# Command: monitor
+
+The `nomad monitor` command streams log messages for a given agent.
+
+## Usage
+
+```plaintext
+nomad monitor [options]
+```
+
+The nomad monitor command can be used to stream the logs of a
+running Nomad agent. Monitor will follow logs and exit when
+interrupted or until the remote agent quits.
+
+The power of the monitor command is that it allows you to log
+the agent at a relatively high log level (such as "warn"),
+but still access debug logs and watch the debug logs if necessary.
+The monitor command also allows you to specify a single client node id to follow.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Monitor Options
+
+- `-log-level`: The log level to use for log streaming. Defaults to `info`.
+ Possible values include `trace`, `debug`, `info`, `warn`, `error`
+
+- `-node-id`: Specifies the client node-id to stream logs from. If no
+ node-id is given the nomad server from the -address flag will be used.
+
+- `-server-id`: Specifies the nomad server id to stream logs from. Accepts
+ server names from `nomad server members` and also a special `leader` option
+ which will target the current leader.
+
+- `-json`: Stream logs in json format
+
+## Examples
+
+```shell-session
+$ nomad monitor -log-level=DEBUG -node-id=a57b2adb-1a30-2dda-8df0-25abb0881952
+2019-11-04T12:22:08.528-0500 [DEBUG] http: request complete: method=GET path=/v1/agent/health?type=server duration=1.445739ms
+2019-11-04T12:22:09.892-0500 [DEBUG] nomad: memberlist: Stream connection from=127.0.0.1:53628
+
+$ nomad monitor -log-level=DEBUG -json=true
+{"@level":"debug","@message":"request complete"...}
+
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/namespace/apply.mdx b/content/nomad/v0.11.x/content/docs/commands/namespace/apply.mdx
new file mode 100644
index 0000000000..e3417386b8
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/namespace/apply.mdx
@@ -0,0 +1,42 @@
+---
+layout: docs
+page_title: 'Commands: namespace apply'
+sidebar_title: apply
+description: |
+ The namespace apply command is used create or update a namespace.
+---
+
+# Command: namespace apply
+
+The `namespace apply` command is used create or update a namespace.
+
+~> Namespace commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+```plaintext
+nomad namespace apply [options]
+```
+
+The `namespace apply` command requires the name of the namespace to be created
+or updated.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Apply Options
+
+- `-quota` : An optional quota to apply to the namespace.
+
+- `-description` : An optional human readable description for the namespace.
+
+## Examples
+
+Create a namespace with a quota
+
+```shell-session
+$ nomad namespace apply -description "Prod API servers" -quota prod api-prod
+Successfully applied namespace "api-prod"!
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/namespace/delete.mdx b/content/nomad/v0.11.x/content/docs/commands/namespace/delete.mdx
new file mode 100644
index 0000000000..d25485ecdf
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/namespace/delete.mdx
@@ -0,0 +1,35 @@
+---
+layout: docs
+page_title: 'Commands: namespace delete'
+sidebar_title: delete
+description: |
+ The namespace delete command is used to delete a namespace.
+---
+
+# Command: namespace delete
+
+The `namespace delete` command is used delete a namespace.
+
+~> Namespace commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+```plaintext
+nomad namespace delete [options]
+```
+
+The `namespace delete` command requires the name of the namespace to be deleted.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+Delete a namespace
+
+```shell-session
+$ nomad namespace delete api-prod
+Successfully deleted namespace "api-prod"!
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/namespace/index.mdx b/content/nomad/v0.11.x/content/docs/commands/namespace/index.mdx
new file mode 100644
index 0000000000..7a8b064ae6
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/namespace/index.mdx
@@ -0,0 +1,33 @@
+---
+layout: docs
+page_title: 'Commands: namespace'
+sidebar_title: namespace
+description: |
+ The namespace command is used to interact with namespaces.
+---
+
+# Command: namespace
+
+The `namespace` command is used to interact with namespaces.
+
+~> Namespace commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+Usage: `nomad namespace [options]`
+
+Run `nomad namespace -h` for help on that subcommand. The following
+subcommands are available:
+
+- [`namespace apply`][apply] - Create or update a namespace
+- [`namespace delete`][delete] - Delete a namespace
+- [`namespace inspect`][inspect] - Inspect a namespace
+- [`namespace list`][list] - List available namespaces
+- [`namespace status`][status] - Display a namespace's status
+
+[apply]: /docs/commands/namespace/apply 'Create or update a namespace'
+[delete]: /docs/commands/namespace/delete 'Delete a namespace'
+[inspect]: /docs/commands/namespace/inspect 'Inspect a namespace'
+[list]: /docs/commands/namespace/list 'List available namespaces'
+[status]: /docs/commands/namespace/status "Display a namespace's status"
diff --git a/content/nomad/v0.11.x/content/docs/commands/namespace/inspect.mdx b/content/nomad/v0.11.x/content/docs/commands/namespace/inspect.mdx
new file mode 100644
index 0000000000..b859061848
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/namespace/inspect.mdx
@@ -0,0 +1,45 @@
+---
+layout: docs
+page_title: 'Commands: namespace inspect'
+sidebar_title: inspect
+description: >
+ The namespace inspect command is used to view raw information about a
+ particular namespace.
+---
+
+# Command: namespace inspect
+
+The `namespace inspect` command is used to view raw information about a particular
+namespace.
+
+~> Namespace commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+```plaintext
+nomad namespace inspect [options]
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Inspect Options
+
+- `-t` : Format and display the namespace using a Go template.
+
+## Examples
+
+Inspect a namespace:
+
+```shell-session
+$ nomad namespace inspect default
+{
+ "CreateIndex": 5,
+ "Description": "Default shared namespace",
+ "ModifyIndex": 38,
+ "Name": "default",
+ "Quota": "shared-default-quota"
+}
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/namespace/list.mdx b/content/nomad/v0.11.x/content/docs/commands/namespace/list.mdx
new file mode 100644
index 0000000000..dc03ce9a0b
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/namespace/list.mdx
@@ -0,0 +1,46 @@
+---
+layout: docs
+page_title: 'Commands: namespace list'
+sidebar_title: list
+description: |
+ The namespace list command is used to list namespaces.
+---
+
+# Command: namespace list
+
+The `namespace list` command is used list available namespaces.
+
+~> Namespace commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+```plaintext
+nomad namespace list [options]
+```
+
+The `namespace list` command requires no arguments.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## List Options
+
+- `-json` : Output the namespaces in their JSON format.
+
+- `-t` : Format and display the namespaces using a Go template.
+
+## Examples
+
+List all namespaces:
+
+```shell-session
+$ nomad namespace list
+Name Description
+default Default shared namespace
+api-prod Production instances of backend API servers
+api-qa QA instances of backend API servers
+web-prod Production instances of webservers
+web-qa QA instances of webservers
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/namespace/status.mdx b/content/nomad/v0.11.x/content/docs/commands/namespace/status.mdx
new file mode 100644
index 0000000000..3ee41fbefe
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/namespace/status.mdx
@@ -0,0 +1,41 @@
+---
+layout: docs
+page_title: 'Commands: namespace status'
+sidebar_title: status
+description: >
+ The namespace status command is used to view the status of a particular
+ namespace.
+---
+
+# Command: namespace status
+
+The `namespace status` command is used to view the status of a particular
+namespace.
+
+~> Namespace commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+```plaintext
+nomad namespace status [options]
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Examples
+
+View the status of a namespace:
+
+```shell-session
+$ nomad namespace status default
+Name = default
+Description = Default shared namespace
+Quota = shared-default-quota
+
+Quota Limits
+Region CPU Usage Memory Usage
+global 500 / 2500 256 / 2000
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/node/config.mdx b/content/nomad/v0.11.x/content/docs/commands/node/config.mdx
new file mode 100644
index 0000000000..7477749b67
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/node/config.mdx
@@ -0,0 +1,59 @@
+---
+layout: docs
+page_title: 'Commands: node config'
+sidebar_title: config
+description: |
+ The node config command is used to view or modify client configuration.
+---
+
+# Command: node config
+
+The `node config` command is used to view or modify client configuration
+details. This command only works on client nodes, and can be used to update
+the running client configurations it supports.
+
+## Usage
+
+```plaintext
+nomad node config [options]
+```
+
+The arguments behave differently depending on the flags given. See each flag's
+description below for specific usage information and requirements.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Node Config Options
+
+- `-servers`: List the client's known servers. Client nodes do not participate
+ in the gossip pool, and instead register with these servers periodically over
+ the network. The initial value of this list may come from configuration files
+ using the [`servers`] configuration option in the client block.
+
+- `-update-servers`: Updates the client's server list using the provided
+ arguments. Multiple server addresses may be passed using multiple arguments.
+ When updating the servers list, you must specify ALL of the server nodes you
+ wish to configure. The set is updated atomically. It is an error to specify
+ this flag without any server addresses. If you do _not_ specify a port for each
+ server address, the default port `4647` will be used.
+
+## Examples
+
+Query the currently known servers:
+
+```shell-session
+$ nomad node config -servers
+server1:4647
+server2:4647
+```
+
+Update the list of servers:
+
+```shell-session
+$ nomad node config -update-servers server1:4647 server2:4647 server3:4647 server4
+
+```
+
+[`servers`]: /docs/configuration/client#servers
diff --git a/content/nomad/v0.11.x/content/docs/commands/node/drain.mdx b/content/nomad/v0.11.x/content/docs/commands/node/drain.mdx
new file mode 100644
index 0000000000..1b8e3cf434
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/node/drain.mdx
@@ -0,0 +1,137 @@
+---
+layout: docs
+page_title: 'Commands: node drain'
+sidebar_title: drain
+description: |
+ The node drain command is used to configure a node's drain strategy.
+---
+
+# Command: node drain
+
+The `node drain` command is used to toggle drain mode on a given node. Drain
+mode prevents any new tasks from being allocated to the node, and begins
+migrating all existing allocations away. Allocations will be migrated according
+to their [`migrate`][migrate] stanza until the drain's deadline is reached.
+
+By default the `node drain` command blocks until a node is done draining and
+all allocations have terminated. Canceling the `node drain` command _will not_
+cancel the drain. Drains may be canceled by using the `-disable` parameter
+below.
+
+When draining more than one node at a time, it is recommended you first disable
+[scheduling eligibility][eligibility] on all nodes that will be drained. For
+example if you are decommissioning an entire class of nodes, first run `node eligibility -disable` on all of their node IDs, and then run `node drain -enable`. This will ensure allocations drained from the first node are not
+placed on another node about to be drained.
+
+The [node status] command compliments this nicely by providing the current drain
+status of a given node.
+
+See the [Workload Migration guide] for detailed examples of node draining.
+
+## Usage
+
+```plaintext
+nomad node drain [options]
+```
+
+A `-self` flag can be used to drain the local node. If this is not supplied, a
+node ID or prefix must be provided. If there is an exact match, the drain mode
+will be adjusted for that node. Otherwise, a list of matching nodes and
+information will be displayed.
+
+It is also required to pass one of `-enable` or `-disable`, depending on which
+operation is desired.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Drain Options
+
+- `-enable`: Enable node drain mode.
+
+- `-disable`: Disable node drain mode.
+
+- `-deadline`: Set the deadline by which all allocations must be moved off the
+ node. Remaining allocations after the deadline are force removed from the
+ node. Defaults to 1 hour.
+
+- `-detach`: Return immediately instead of entering monitor mode.
+
+- `-monitor`: Enter monitor mode directly without modifying the drain status.
+
+- `-force`: Force remove allocations off the node immediately.
+
+- `-no-deadline`: No deadline allows the allocations to drain off the node
+ without being force stopped after a certain deadline.
+
+- `-ignore-system`: Ignore system allows the drain to complete without stopping
+ system job allocations. By default system jobs are stopped last.
+
+- `-keep-ineligible`: Keep ineligible will maintain the node's scheduling
+ ineligibility even if the drain is being disabled. This is useful when an
+ existing drain is being cancelled but additional scheduling on the node is not
+ desired.
+
+- `-self`: Drain the local node.
+
+- `-yes`: Automatic yes to prompts.
+
+## Examples
+
+Enable drain mode on node with ID prefix "4d2ba53b":
+
+```shell-session
+$ nomad node drain -enable f4e8a9e5
+Are you sure you want to enable drain mode for node "f4e8a9e5-30d8-3536-1e6f-cda5c869c35e"? [y/N] y
+2018-03-30T23:13:16Z: Ctrl-C to stop monitoring: will not cancel the node drain
+2018-03-30T23:13:16Z: Node "f4e8a9e5-30d8-3536-1e6f-cda5c869c35e" drain strategy set
+2018-03-30T23:13:17Z: Alloc "1877230b-64d3-a7dd-9c31-dc5ad3c93e9a" marked for migration
+2018-03-30T23:13:17Z: Alloc "1877230b-64d3-a7dd-9c31-dc5ad3c93e9a" draining
+2018-03-30T23:13:17Z: Alloc "1877230b-64d3-a7dd-9c31-dc5ad3c93e9a" status running -> complete
+2018-03-30T23:13:29Z: Alloc "3fce5308-818c-369e-0bb7-f61f0a1be9ed" marked for migration
+2018-03-30T23:13:29Z: Alloc "3fce5308-818c-369e-0bb7-f61f0a1be9ed" draining
+2018-03-30T23:13:30Z: Alloc "3fce5308-818c-369e-0bb7-f61f0a1be9ed" status running -> complete
+2018-03-30T23:13:41Z: Alloc "9a98c5aa-a719-2f34-ecfc-0e6268b5d537" marked for migration
+2018-03-30T23:13:41Z: Alloc "9a98c5aa-a719-2f34-ecfc-0e6268b5d537" draining
+2018-03-30T23:13:41Z: Node "f4e8a9e5-30d8-3536-1e6f-cda5c869c35e" has marked all allocations for migration
+2018-03-30T23:13:42Z: Alloc "9a98c5aa-a719-2f34-ecfc-0e6268b5d537" status running -> complete
+2018-03-30T23:13:42Z: All allocations on node "f4e8a9e5-30d8-3536-1e6f-cda5c869c35e" have stopped.
+```
+
+Enable drain mode on the local node:
+
+```shell-session
+$ nomad node drain -enable -self
+...
+```
+
+Enable drain mode but do not stop system jobs:
+
+```shell-session
+$ nomad node drain -enable -ignore-system 4d2ba53b
+...
+```
+
+Disable drain mode but keep the node ineligible for scheduling. Useful for
+inspecting the current state of a misbehaving node without Nomad trying to
+start or migrate allocations:
+
+```shell-session
+$ nomad node drain -disable -keep-ineligible 4d2ba53b
+...
+```
+
+Enable drain mode and detach from monitoring, then reattach later:
+
+```shell-session
+$ nomad node drain -enable -detach -self
+...
+$ nomad node drain -self -monitor
+...
+```
+
+[eligibility]: /docs/commands/node/eligibility
+[migrate]: /docs/job-specification/migrate
+[node status]: /docs/commands/node/status
+[workload migration guide]: https://learn.hashicorp.com/nomad/operating-nomad/node-draining
diff --git a/content/nomad/v0.11.x/content/docs/commands/node/eligibility.mdx b/content/nomad/v0.11.x/content/docs/commands/node/eligibility.mdx
new file mode 100644
index 0000000000..d82dbbbd6e
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/node/eligibility.mdx
@@ -0,0 +1,70 @@
+---
+layout: docs
+page_title: 'Commands: node eligibility'
+sidebar_title: eligibility
+description: >
+ The node eligibility command is used to configure a node's scheduling
+ eligibility.
+---
+
+# Command: node eligibility
+
+The `node eligibility` command is used to toggle scheduling eligibility for a
+given node. By default nodes are eligible for scheduling meaning they can
+receive placements and run new allocations. Nodes that have their scheduling
+elegibility disabled are ineligibile for new placements.
+
+The [`node drain`][drain] command automatically disables eligibility. Disabling
+a drain restore eligibility by default.
+
+Disable scheduling eligibility is useful when draining a set of nodes: first
+disable eligibility on each node that will be drained. Then drain each node.
+If you just drain each node allocations may get rescheduled multiple times as
+they get placed on nodes about to be drained!
+
+Disabling scheduling eligibility may also be useful when investigating poorly
+behaved nodes. It allows operators to investigate the current state of a node
+without the risk of additional work being assigned to it.
+
+## Usage
+
+```plaintext
+nomad node eligibility [options]
+```
+
+A `-self` flag can be used to toggle eligibility of the local node. If this is
+not supplied, a node ID or prefix must be provided. If there is an exact match,
+the eligibility will be adjusted for that node. Otherwise, a list of matching
+nodes and information will be displayed.
+
+It is also required to pass one of `-enable` or `-disable`, depending on which
+operation is desired.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Eligibility Options
+
+- `-enable`: Enable scheduling eligibility.
+- `-disable`: Disable scheduling eligibility.
+- `-self`: Set eligibility for the local node.
+- `-yes`: Automatic yes to prompts.
+
+## Examples
+
+Enable scheduling eligibility on node with ID prefix "574545c5":
+
+```shell-session
+$ nomad node eligibility -enable 574545c5
+Node "574545c5-c2d7-e352-d505-5e2cb9fe169f" scheduling eligibility set: eligible for scheduling
+```
+
+Disable scheduling eligibility on the local node:
+
+```shell-session
+$ nomad node eligibility -disable -self
+Node "574545c5-c2d7-e352-d505-5e2cb9fe169f" scheduling eligibility set: ineligible for scheduling
+```
+
+[drain]: /docs/commands/node/drain
diff --git a/content/nomad/v0.11.x/content/docs/commands/node/index.mdx b/content/nomad/v0.11.x/content/docs/commands/node/index.mdx
new file mode 100644
index 0000000000..d5563d4cb8
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/node/index.mdx
@@ -0,0 +1,32 @@
+---
+layout: docs
+page_title: 'Commands: node'
+sidebar_title: node
+description: |
+ The node command is used to interact with nodes.
+---
+
+# Command: node
+
+The `node` command is used to interact with nodes.
+
+## Usage
+
+Usage: `nomad node [options]`
+
+Run `nomad node -h` for help on that subcommand. The following
+subcommands are available:
+
+- [`node config`][config] - View or modify client configuration details
+
+- [`node drain`][drain] - Set drain mode on a given node
+
+- [`node eligibility`][eligibility] - Toggle scheduling eligibility on a given
+ node
+
+- [`node status`][status] - Display status information about nodes
+
+[config]: /docs/commands/node/config 'View or modify client configuration details'
+[drain]: /docs/commands/node/drain 'Set drain mode on a given node'
+[eligibility]: /docs/commands/node/eligibility 'Toggle scheduling eligibility on a given node'
+[status]: /docs/commands/node/status 'Display status information about nodes'
diff --git a/content/nomad/v0.11.x/content/docs/commands/node/status.mdx b/content/nomad/v0.11.x/content/docs/commands/node/status.mdx
new file mode 100644
index 0000000000..15d38804b8
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/node/status.mdx
@@ -0,0 +1,364 @@
+---
+layout: docs
+page_title: 'Commands: node status'
+sidebar_title: status
+description: |
+ The node status command is used to display information about nodes.
+---
+
+# Command: node status
+
+The `node status` command is used to display information about client nodes. A
+node must first be registered with the servers before it will be visible in this
+output.
+
+## Usage
+
+```plaintext
+nomad node status [options] [node]
+```
+
+If no node ID is passed, then the command will enter "list mode" and dump a
+high-level list of all known nodes. This list output contains less information
+but is a good way to get a bird's-eye view of things.
+
+If there is an exact match based on the provided node ID or prefix, then that
+particular node will be queried, and detailed information will be displayed,
+including resource usage statistics. Otherwise, a list of matching nodes and
+information will be displayed. If running the command on a Nomad Client, the
+`-self` flag is useful to quickly access the status of the local node.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Status Options
+
+- `-self`: Query the status of the local node.
+
+- `-stats`: Display detailed resource usage statistics.
+
+- `-allocs`: When a specific node is not being queried, shows the number of
+ running allocations per node.
+
+- `-short`: Display short output. Used only when querying a single node.
+
+- `-verbose`: Show full information.
+
+- `-json` : Output the node in its JSON format.
+
+- `-t` : Format and display node using a Go template.
+
+## Examples
+
+List view:
+
+```shell-session
+$ nomad node status
+ID DC Name Class Drain Eligibility Status
+a72dfba2 dc1 node1 false eligible ready
+1f3f03ea dc1 node2 false eligible ready
+```
+
+List view, with running allocations:
+
+```shell-session
+$ nomad node status -allocs
+ID DC Name Class Drain Eligibility Status Running Allocs
+4d2ba53b dc1 node1 false eligible ready 1
+34dfba32 dc1 node2 false eligible ready 3
+```
+
+Single-node view in short mode:
+
+```shell-session
+$ nomad node status -short 1f3f03ea
+ID = c754da1f
+Name = nomad
+Class =
+DC = dc1
+Drain = false
+Status = ready
+Uptime = 17h2m25s
+
+Allocations
+ID Eval ID Job ID Task Group Desired Status Client Status
+0b8b9e37 8bf94335 example cache run running
+```
+
+Full output for a single node:
+
+```shell-session
+$ nomad node status 1f3f03ea
+ID = c754da1f
+Name = nomad-server01
+Class =
+DC = dc1
+Drain = false
+Status = ready
+Uptime = 17h42m50s
+
+Drivers
+Driver Detected Healthy
+docker false false
+exec true true
+java true true
+qemu true true
+raw_exec true true
+rkt true true
+
+Node Events
+Time Subsystem Message
+2018-03-29T17:24:42Z Driver: docker Driver docker is not detected
+2018-03-29T17:23:42Z Cluster Node registered
+
+Allocated Resources
+CPU Memory Disk
+500/2600 MHz 256 MiB/2.0 GiB 300 MiB/32 GiB
+
+Allocation Resource Utilization
+CPU Memory
+430/2600 MHz 199 MiB/2.0 GiB
+
+Host Resource Utilization
+CPU Memory Disk
+513/3000 MHz 551 MiB/2.4 GiB 4.2 GiB/52 GiB
+
+Allocations
+ID Eval ID Job ID Task Group Desired Status Client Status
+7bff7214 b3a6b9d2 example cache run running
+```
+
+Using `-self` when on a Nomad Client:
+
+```shell-session
+$ nomad node status -self
+ID = c754da1f
+Name = nomad-client01
+Class =
+DC = dc1
+Drain = false
+Status = ready
+Uptime = 17h7m41s
+
+Drivers
+Driver Detected Healthy
+docker false false
+exec true true
+java true true
+qemu true true
+raw_exec true true
+rkt true true
+
+Node Events
+Time Subsystem Message
+2018-03-29T17:24:42Z Driver: docker Driver docker is not detected
+2018-03-29T17:23:42Z Cluster Node registered
+
+Allocated Resources
+CPU Memory Disk
+2500/2600 MHz 1.3 GiB/2.0 GiB 1.5 GiB/32 GiB
+
+Allocation Resource Utilization
+CPU Memory
+2200/2600 MHz 1.7 GiB/2.0 GiB
+
+Host Resource Utilization
+CPU Memory Disk
+2430/3000 MHz 1.8 GiB/2.4 GiB 6.5 GiB/40 GiB
+
+Allocations
+ID Eval ID Job ID Task Group Desired Status Client Status
+0b8b9e37 8bf94335 example cache run running
+b206088c 8bf94335 example cache run running
+b82f58b6 8bf94335 example cache run running
+ed3665f5 8bf94335 example cache run running
+24cfd201 8bf94335 example cache run running
+```
+
+You will note that in the above examples, the **Allocations** output contains
+columns labeled **Desired Status** and **Client status**.
+
+Desired Status represents the goal of the scheduler on the allocation with
+the following valid statuses:
+
+- _run_: The allocation should run
+- _stop_: The allocation should stop
+
+Client Status represents the emergent state of the allocation and include
+the following:
+
+- _pending_: The allocation is pending and will be running
+
+- _running_: The allocation is currently running
+
+- _complete_: The allocation was running and completed successfully
+
+- _failed_: The allocation was running and completed with a non-zero exit code
+
+- _lost_: The node that was running the allocation has failed or has been
+ partitioned
+
+Using `-stats` to see detailed to resource usage information on the node:
+
+```shell-session
+$ nomad node status -stats c754da1f
+ID = c754da1f
+Name = nomad-client01
+Class =
+DC = dc1
+Drain = false
+Status = ready
+Uptime = 17h7m41s
+
+Drivers
+Driver Detected Healthy
+docker false false
+exec true true
+java true true
+qemu true true
+raw_exec true true
+rkt true true
+
+Node Events
+Time Subsystem Message
+2018-03-29T17:24:42Z Driver: docker Driver docker is not detected
+2018-03-29T17:23:42Z Cluster Node registered
+
+Allocated Resources
+CPU Memory Disk
+2500/2600 MHz 1.3 GiB/2.0 GiB 1.5 GiB/32 GiB
+
+Allocation Resource Utilization
+CPU Memory
+2200/2600 MHz 1.7 GiB/2.0 GiB
+
+Host Resource Utilization
+CPU Memory Disk
+2430/3000 MHz 1.8 GiB/2.4 GiB 3.9 GiB/40 GiB
+
+CPU Stats
+CPU = cpu0
+User = 96.94%
+System = 1.02%
+Idle = 2.04%
+
+CPU = cpu1
+User = 97.92%
+System = 2.08%
+Idle = 0.00%
+
+Memory Stats
+Total = 2.4 GiB
+Available = 612 MiB
+Used = 1.8 GiB
+Free = 312 MiB
+
+Disk Stats
+Device = /dev/mapper/ubuntu--14--vg-root
+MountPoint = /
+Size = 38 GiB
+Used = 3.9 GiB
+Available = 32 GiB
+Used Percent = 10.31%
+Inodes Percent = 3.85%
+
+Device = /dev/sda1
+MountPoint = /boot
+Size = 235 MiB
+Used = 45 MiB
+Available = 178 MiB
+Used Percent = 19.17%
+Inodes Percent = 0.48%
+
+Allocations
+ID Eval ID Job ID Task Group Desired Status Client Status
+0b8b9e37 8bf94335 example cache run running
+b206088c 8bf94335 example cache run running
+b82f58b6 8bf94335 example cache run running
+ed3665f5 8bf94335 example cache run running
+24cfd201 8bf94335 example cache run running
+```
+
+To view verbose information about the node:
+
+```shell-session
+$ nomad node status -verbose c754da1f
+ID = c754da1f-6337-b86d-47dc-2ef4c71aca14
+Name = nomad
+Class =
+DC = dc1
+Drain = false
+Status = ready
+Uptime = 17h7m41s
+
+Host Volumes
+Name ReadOnly Source
+
+CSI Volumes
+ID Name Plugin ID Schedulable Access Mode Mount Options
+402f2c83 vol plug true single-node-writer
+
+Drivers
+Driver Detected Healthy Message Time
+docker false false Driver docker is not detected 2018-03-29T17:24:42Z
+exec true true 2018-03-29T17:23:42Z
+java true true 2018-03-29T17:23:41Z
+qemu true true 2018-03-29T17:23:41Z
+raw_exec true true 2018-03-29T17:23:42Z
+rkt true true 2018-03-29T17:23:42Z
+
+Node Events
+Time Subsystem Message Details
+2018-03-29T17:24:42Z Driver: docker Driver docker is not detected driver: docker,
+2018-03-29T17:23:42Z Cluster Node registered
+
+Allocated Resources
+CPU Memory Disk
+2500/2600 MHz 1.3 GiB/2.0 GiB 1.5 GiB/32 GiB
+
+Allocation Resource Utilization
+CPU Memory
+2200/2600 MHz 1.7 GiB/2.0 GiB
+
+Host Resource Utilization
+CPU Memory Disk
+230/3000 MHz 121 MiB/2.4 GiB 6.5 GiB/40 GiB
+
+Allocations
+ID Eval ID Job ID Task Group Desired Status Client Status
+3d743cff-8d57-18c3-2260-a41d3f6c5204 2fb686da-b2b0-f8c2-5d57-2be5600435bd example cache run complete
+
+Attributes
+arch = amd64
+cpu.frequency = 1300.000000
+cpu.modelname = Intel(R) Core(TM) M-5Y71 CPU @ 1.20GHz
+cpu.numcores = 2
+cpu.totalcompute = 2600.000000
+driver.docker = 1
+driver.docker.version = 1.10.3
+driver.exec = 1
+driver.java = 1
+driver.java.runtime = OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.14.04.2)
+driver.java.version = 1.7.0_95
+driver.java.vm = OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
+driver.qemu = 1
+driver.qemu.version = 2.0.0
+driver.raw_exec = 1
+driver.rkt = 1
+driver.rkt.appc.version = 0.7.4
+driver.rkt.version = 1.2.0
+hostname = nomad
+kernel.name = linux
+kernel.version = 3.19.0-25-generic
+memory.totalbytes = 2094473216
+nomad.revision = '270da7a60ccbf39eeeadc4064a59ca06bf9ac6fc+CHANGES'
+nomad.version = 0.3.2dev
+os.name = ubuntu
+os.version = 14.04
+unique.cgroup.mountpoint = /sys/fs/cgroup
+unique.network.ip-address = 127.0.0.1
+unique.storage.bytesfree = 36044333056
+unique.storage.bytestotal = 41092214784
+unique.storage.volume = /dev/mapper/ubuntu--14--vg-root
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/operator/autopilot-get-config.mdx b/content/nomad/v0.11.x/content/docs/commands/operator/autopilot-get-config.mdx
new file mode 100644
index 0000000000..5464e951f3
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/operator/autopilot-get-config.mdx
@@ -0,0 +1,66 @@
+---
+layout: docs
+page_title: 'Commands: operator autopilot get-config'
+sidebar_title: autopilot get-config
+description: |
+ Display the current Autopilot configuration.
+---
+
+# Command: operator autopilot get-config
+
+The Autopilot operator command is used to view the current Autopilot
+configuration. See the [Autopilot Guide] for more information about Autopilot.
+
+## Usage
+
+```plaintext
+nomad operator autopilot get-config [options]
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+The output looks like this:
+
+```shell-session
+$ nomad operator autopilot get-config
+CleanupDeadServers = true
+LastContactThreshold = 200ms
+MaxTrailingLogs = 250
+ServerStabilizationTime = 10s
+RedundancyZoneTag = ""
+DisableUpgradeMigration = false
+UpgradeMigrationTag = ""
+```
+
+- `CleanupDeadServers` - Specifies automatic removal of dead
+ server nodes periodically and whenever a new server is added to the cluster.
+
+- `LastContactThreshold` - Specifies the maximum amount of
+ time a server can go without contact from the leader before being considered
+ unhealthy. Must be a duration value such as `10s`.
+
+- `MaxTrailingLogs` - specifies the maximum number of log entries
+ that a server can trail the leader by before being considered unhealthy.
+
+- `ServerStabilizationTime` - Specifies the minimum amount of
+ time a server must be stable in the 'healthy' state before being added to the
+ cluster. Only takes effect if all servers are running Raft protocol version 3
+ or higher. Must be a duration value such as `30s`.
+
+- `RedundancyZoneTag` - Controls the node-meta key to use when
+ Autopilot is separating servers into zones for redundancy. Only one server in
+ each zone can be a voting member at one time. If left blank, this feature will
+ be disabled.
+
+- `DisableUpgradeMigration` - Disables Autopilot's upgrade
+ migration strategy in Nomad Enterprise of waiting until enough
+ newer-versioned servers have been added to the cluster before promoting any of
+ them to voters.
+
+- `UpgradeVersionTag` - Controls the node-meta key to use for
+ version info when performing upgrade migrations. If left blank, the Nomad
+ version will be used.
+
+[autopilot guide]: https://learn.hashicorp.com/nomad/operating-nomad/autopilot
diff --git a/content/nomad/v0.11.x/content/docs/commands/operator/autopilot-set-config.mdx b/content/nomad/v0.11.x/content/docs/commands/operator/autopilot-set-config.mdx
new file mode 100644
index 0000000000..d9f87562a2
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/operator/autopilot-set-config.mdx
@@ -0,0 +1,63 @@
+---
+layout: docs
+page_title: 'Commands: operator autopilot set-config'
+sidebar_title: autopilot set-config
+description: |
+ Modify the current Autopilot configuration.
+---
+
+# Command: operator autopilot set-config
+
+The Autopilot operator command is used to set the current Autopilot
+configuration. See the [Autopilot Guide] for more information about Autopilot.
+
+## Usage
+
+```plaintext
+nomad operator autopilot set-config [options]
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Set Config Options
+
+- `-cleanup-dead-servers` - Specifies whether to enable automatic removal of
+ dead servers upon the successful joining of new servers to the cluster. Must be
+ one of `[true|false]`.
+
+- `-last-contact-threshold` - Controls the maximum amount of time a server can
+ go without contact from the leader before being considered unhealthy. Must be a
+ duration value such as `200ms`.
+
+- `-max-trailing-logs` - Controls the maximum number of log entries that a
+ server can trail the leader by before being considered unhealthy.
+
+- `-server-stabilization-time` - Controls the minimum amount of time a server
+ must be stable in the 'healthy' state before being added to the cluster. Only
+ takes effect if all servers are running Raft protocol version 3 or higher. Must
+ be a duration value such as `10s`.
+
+- `-disable-upgrade-migration` - (Enterprise-only) Controls whether Nomad will
+ avoid promoting new servers until it can perform a migration. Must be one of
+ `[true|false]`.
+
+- `-redundancy-zone-tag`- (Enterprise-only) Controls the [`redundancy_zone`]
+ used for separating servers into different redundancy zones.
+
+- `-upgrade-version-tag` - (Enterprise-only) Controls the [`upgrade_version`] to
+ use for version info when performing upgrade migrations. If left blank, the
+ Nomad version will be used.
+
+The output looks like this:
+
+```plaintext
+Configuration updated!
+```
+
+The return code will indicate success or failure.
+
+[`redundancy_zone`]: /docs/configuration/server#redundancy_zone
+[`upgrade_version`]: /docs/configuration/server#upgrade_version
+[autopilot guide]: https://learn.hashicorp.com/nomad/operating-nomad/autopilot
diff --git a/content/nomad/v0.11.x/content/docs/commands/operator/index.mdx b/content/nomad/v0.11.x/content/docs/commands/operator/index.mdx
new file mode 100644
index 0000000000..b64b2d6113
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/operator/index.mdx
@@ -0,0 +1,51 @@
+---
+layout: docs
+page_title: 'Commands: operator'
+sidebar_title: operator
+description: |
+ The operator command provides cluster-level tools for Nomad operators.
+---
+
+# Command: operator
+
+The `operator` command provides cluster-level tools for Nomad operators, such
+as interacting with the Raft subsystem. This was added in Nomad 0.5.5.
+
+~> Use this command with extreme caution, as improper use could lead to a Nomad
+outage and even loss of data.
+
+See the [Outage Recovery guide] guide for some examples of how this command is
+used. For an API to perform these operations programmatically, please see the
+documentation for the [Operator] endpoint.
+
+## Usage
+
+Usage: `nomad operator [options]`
+
+Run `nomad operator ` with no arguments for help on that subcommand.
+The following subcommands are available:
+
+- [`operator autopilot get-config`][get-config] - Display the current Autopilot
+ configuration
+
+- [`operator autopilot set-config`][set-config] - Modify the current Autopilot
+ configuration
+
+- [`operator keygen`][keygen] - Generates a new encryption key
+
+- [`operator keyring`][keyring] - Manages gossip layer encryption keys
+
+- [`operator raft list-peers`][list] - Display the current Raft peer
+ configuration
+
+- [`operator raft remove-peer`][remove] - Remove a Nomad server from the Raft
+ configuration
+
+[get-config]: /docs/commands/operator/autopilot-get-config 'Autopilot Get Config command'
+[keygen]: /docs/commands/operator/keygen 'Generates a new encryption key'
+[keyring]: /docs/commands/operator/keyring 'Manages gossip layer encryption keys'
+[list]: /docs/commands/operator/raft-list-peers 'Raft List Peers command'
+[operator]: /api-docs/operator 'Operator API documentation'
+[outage recovery guide]: https://learn.hashicorp.com/nomad/operating-nomad/outage
+[remove]: /docs/commands/operator/raft-remove-peer 'Raft Remove Peer command'
+[set-config]: /docs/commands/operator/autopilot-set-config 'Autopilot Set Config command'
diff --git a/content/nomad/v0.11.x/content/docs/commands/operator/keygen.mdx b/content/nomad/v0.11.x/content/docs/commands/operator/keygen.mdx
new file mode 100644
index 0000000000..3baf7bfd6a
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/operator/keygen.mdx
@@ -0,0 +1,28 @@
+---
+layout: docs
+page_title: 'Commands: operator keygen'
+sidebar_title: keygen
+description: >
+ The `operator keygen` command generates an encryption key that can be used for
+ Nomad server's gossip traffic encryption. The keygen command uses a
+ cryptographically strong pseudo-random number generator to generate the key.
+---
+
+# Command: operator keygen
+
+The `operator keygen` command generates an encryption key that can be used for
+Nomad server's gossip traffic encryption. The keygen command uses a
+cryptographically strong pseudo-random number generator to generate the key.
+
+## Usage
+
+```plaintext
+nomad operator keygen
+```
+
+## Example
+
+```shell-session
+$ nomad operator keygen
+YgZOXLMhC7TtZqeghMT8+w==
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/operator/keyring.mdx b/content/nomad/v0.11.x/content/docs/commands/operator/keyring.mdx
new file mode 100644
index 0000000000..1ac7282ba5
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/operator/keyring.mdx
@@ -0,0 +1,60 @@
+---
+layout: docs
+page_title: 'Commands: operator keyring'
+sidebar_title: keyring
+---
+
+# Command: operator keyring
+
+The `operator keyring` command is used to examine and modify the encryption keys
+used in Nomad server. It is capable of distributing new encryption keys to the
+cluster, retiring old encryption keys, and changing the keys used by the cluster
+to encrypt messages.
+
+Nomad allows multiple encryption keys to be in use simultaneously. This is
+intended to provide a transition state while the cluster converges. It is the
+responsibility of the operator to ensure that only the required encryption keys
+are installed on the cluster. You can review the installed keys using the
+`-list` argument, and remove unneeded keys with `-remove`.
+
+All operations performed by this command can only be run against server nodes
+and will effect the entire cluster.
+
+All variations of the `keyring` command return 0 if all nodes reply and there
+are no errors. If any node fails to reply or reports failure, the exit code
+will be 1.
+
+## Usage
+
+```plaintext
+nomad operator keyring [options]
+```
+
+Only one actionable argument may be specified per run, including `-list`,
+`-install`, `-remove`, and `-use`.
+
+The list of available flags are:
+
+- `-list` - List all keys currently in use within the cluster.
+
+- `-install` - Install a new encryption key. This will broadcast the new key to
+ all members in the cluster.
+
+- `-use` - Change the primary encryption key, which is used to encrypt messages.
+ The key must already be installed before this operation can succeed.
+
+- `-remove` - Remove the given key from the cluster. This operation may only be
+ performed on keys which are not currently the primary key.
+
+## Output
+
+The output of the `nomad operator keyring -list` command consolidates
+information from all the Nomad servers from all datacenters and regions to
+provide a simple and easy to understand view of the cluster.
+
+```shell-session
+$ nomad operator keyring -list
+==> Gathering installed encryption keys...
+Key
+PGm64/neoebUBqYR/lZTbA==
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/operator/raft-list-peers.mdx b/content/nomad/v0.11.x/content/docs/commands/operator/raft-list-peers.mdx
new file mode 100644
index 0000000000..2a41bd2e4e
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/operator/raft-list-peers.mdx
@@ -0,0 +1,62 @@
+---
+layout: docs
+page_title: 'Commands: operator raft list-peers'
+sidebar_title: raft list-peers
+description: |
+ Display the current Raft peer configuration.
+---
+
+# Command: operator raft list-peers
+
+The Raft list-peers command is used to display the current Raft peer
+configuration.
+
+See the [Outage Recovery] guide for some examples of how this command is used.
+For an API to perform these operations programmatically, please see the
+documentation for the [Operator] endpoint.
+
+## Usage
+
+```plaintext
+nomad operator raft list-peers [options]
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## List Peers Options
+
+- `-stale`: The stale argument defaults to "false" which means the leader
+ provides the result. If the cluster is in an outage state without a leader, you
+ may need to set `-stale` to "true" to get the configuration from a non-leader
+ server.
+
+## Examples
+
+An example output with three servers is as follows:
+
+```shell-session
+$ nomad operator raft list-peers
+Node ID Address State Voter
+nomad-server01.global 10.10.11.5:4647 10.10.11.5:4647 follower true
+nomad-server02.global 10.10.11.6:4647 10.10.11.6:4647 leader true
+nomad-server03.global 10.10.11.7:4647 10.10.11.7:4647 follower true
+```
+
+- `Node` is the node name of the server, as known to Nomad, or "(unknown)" if
+ the node is stale and not known.
+
+- `ID` is the ID of the server. This is the same as the `Address` but may be
+ upgraded to a GUID in a future version of Nomad.
+
+- `Address` is the IP:port for the server.
+
+- `State` is either "follower" or "leader" depending on the server's role in the
+ Raft configuration.
+
+- `Voter` is "true" or "false", indicating if the server has a vote in the Raft
+ configuration. Future versions of Nomad may add support for non-voting servers.
+
+[operator]: /api-docs/operator
+[outage recovery]: https://learn.hashicorp.com/nomad/operating-nomad/outage
diff --git a/content/nomad/v0.11.x/content/docs/commands/operator/raft-remove-peer.mdx b/content/nomad/v0.11.x/content/docs/commands/operator/raft-remove-peer.mdx
new file mode 100644
index 0000000000..9f0081e9c5
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/operator/raft-remove-peer.mdx
@@ -0,0 +1,45 @@
+---
+layout: docs
+page_title: 'Commands: operator raft remove-peer'
+sidebar_title: raft remove-peer
+description: |
+ Remove a Nomad server from the Raft configuration.
+---
+
+# Command: operator raft remove-peer
+
+Remove the Nomad server with given address from the Raft configuration.
+
+There are rare cases where a peer may be left behind in the Raft quorum even
+though the server is no longer present and known to the cluster. This command
+can be used to remove the failed server so that it is no longer affects the Raft
+quorum. If the server still shows in the output of the [`nomad server members`]
+command, it is preferable to clean up by running [`nomad server force-leave`]
+instead of this command.
+
+See the [Outage Recovery] guide for some examples of how this command is used.
+For an API to perform these operations programmatically, please see the
+documentation for the [Operator] endpoint.
+
+## Usage
+
+```plaintext
+nomad operator raft remove-peer [options]
+```
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Remove Peer Options
+
+- `-peer-address`: Remove a Nomad server with given address from the Raft
+ configuration. The format is "IP:port"
+
+- `-peer-id`: Remove a Nomad server with the given ID from the Raft
+ configuration. The format is "id"
+
+[`nomad server force-leave`]: /docs/commands/server/force-leave 'Nomad server force-leave command'
+[`nomad server members`]: /docs/commands/server/members 'Nomad server members command'
+[operator]: /api-docs/operator 'Nomad Operator API'
+[outage recovery]: https://learn.hashicorp.com/nomad/operating-nomad/outage
diff --git a/content/nomad/v0.11.x/content/docs/commands/plugin/index.mdx b/content/nomad/v0.11.x/content/docs/commands/plugin/index.mdx
new file mode 100644
index 0000000000..fee7edf365
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/plugin/index.mdx
@@ -0,0 +1,22 @@
+---
+layout: docs
+page_title: 'Commands: plugin'
+sidebar_title: plugin
+description: |
+ The plugin command is used to interact with plugins.
+---
+
+# Command: plugin
+
+The `plugin` command is used to interact with plugins.
+
+## Usage
+
+Usage: `nomad plugin [options]`
+
+Run `nomad plugin -h` for help on that subcommand. The following
+subcommands are available:
+
+- [`plugin status`][status] - Display status information about a plugin
+
+[status]: /docs/commands/plugin/status 'Display status information about a plugin'
diff --git a/content/nomad/v0.11.x/content/docs/commands/plugin/status.mdx b/content/nomad/v0.11.x/content/docs/commands/plugin/status.mdx
new file mode 100644
index 0000000000..df1cdf012c
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/plugin/status.mdx
@@ -0,0 +1,85 @@
+---
+layout: docs
+page_title: 'Commands: plugin status'
+sidebar_title: status
+description: |
+ Display information and status of plugins.
+---
+
+# Command: plugin status
+
+The `plugin status` command displays status information for [Container
+Storage Interface (CSI)][csi] plugins.
+
+## Usage
+
+```plaintext
+nomad plugin status [options] [plugin]
+```
+
+This command accepts an optional plugin ID or prefix as the sole argument. If there
+is an exact match based on the provided plugin ID or prefix, then information about
+the specific plugin is queried and displayed. Otherwise, a list of matching plugins
+and information will be displayed.
+
+If the ID is omitted, the command lists out all of the existing plugins and a few
+of the most useful status fields for each.
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Status Options
+
+- `-type`: Display only plugins of a particular type. Currently only
+ the `csi` type is supported, so this option can be omitted when
+ querying the status of CSI plugins.
+
+- `-short`: Display short output. Used only when a single plugin is being queried.
+ Drops verbose plugin allocation data from the output.
+
+- `-verbose`: Show full information. Allocation create and modify times are
+ shown in `yyyy/mm/dd hh:mm:ss` format.
+
+## Examples
+
+List of all plugins:
+
+```shell-session
+$ nomad plugin [-type csi] status
+ID Provider Controllers Healthy / Expected Nodes Healthy / Expected
+ebs-prod aws.ebs 1 / 1 1 / 1
+```
+
+Short view of a specific plugin:
+
+```shell-session
+$ nomad plugin [-type csi] status ebs-prod
+ID = ebs-prod
+Provider = aws.ebs
+Version = 1.0.1
+Controllers Healthy = 1
+Controllers Expected = 1
+Nodes Healthy = 1
+Nodes Expected = 1
+```
+
+Full status information of a plugin:
+
+```shell-session
+$ nomad plugin [-type csi] status ebs-prod
+ID = ebs-prod
+Provider = aws.ebs
+Version = 1.0.1
+Controllers Healthy = 1
+Controllers Expected = 1
+Nodes Healthy = 1
+Nodes Expected = 1
+
+Allocations
+ID Node ID Task Group Version Desired Status Created Modified
+0de05689 95303afc csi 0 run running 1m57s ago 1m19s ago
+b206088c 8bf94335 csi 0 run running 1m56s ago 1m19s ago
+```
+
+[csi]: https://github.com/container-storage-interface/spec
diff --git a/content/nomad/v0.11.x/content/docs/commands/quota/apply.mdx b/content/nomad/v0.11.x/content/docs/commands/quota/apply.mdx
new file mode 100644
index 0000000000..0f113d3f80
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/quota/apply.mdx
@@ -0,0 +1,40 @@
+---
+layout: docs
+page_title: 'Commands: quota apply'
+sidebar_title: apply
+description: |
+ The quota apply command is used to create or update quota specifications.
+---
+
+# Command: quota apply
+
+The `quota apply` command is used to create or update quota specifications.
+
+~> Quota commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+```plaintext
+nomad quota apply [options]
+```
+
+The `quota apply` command requires the path to the specification file. The
+specification can be read from stdin by setting the path to "-".
+
+## General Options
+
+@include 'general_options.mdx'
+
+## Apply Options
+
+- `-json`: Parse the input as a JSON quota specification.
+
+## Examples
+
+Create a new quota specification:
+
+```shell-session
+$ nomad quota apply my-quota.hcl
+Successfully applied quota specification "my-quota"!
+```
diff --git a/content/nomad/v0.11.x/content/docs/commands/quota/delete.mdx b/content/nomad/v0.11.x/content/docs/commands/quota/delete.mdx
new file mode 100644
index 0000000000..ccfbf5679e
--- /dev/null
+++ b/content/nomad/v0.11.x/content/docs/commands/quota/delete.mdx
@@ -0,0 +1,35 @@
+---
+layout: docs
+page_title: 'Commands: quota delete'
+sidebar_title: delete
+description: |
+ The quota delete command is used to delete an existing quota specification.
+---
+
+# Command: quota delete
+
+The `quota delete` command is used to delete an existing quota specification.
+
+~> Quota commands are new in Nomad 0.7 and are only available with Nomad
+Enterprise.
+
+## Usage
+
+```plaintext
+nomad quota delete