1---
2layout: api
3page_title: ACL Tokens - HTTP API
4description: The /acl/token endpoints manage Consul's ACL Tokens.
5---
6
7# ACL Token HTTP API
8
9-> **1.4.0+:** The APIs are available in Consul versions 1.4.0 and later. The documentation for the legacy ACL API is [here](/api/acl/legacy).
10
11The `/acl/token` endpoints [create](#create-a-token), [read](#read-a-token),
12[update](#update-a-token), [list](#list-tokens), [clone](#clone-a-token) and [delete](#delete-a-token) ACL tokens in Consul.
13
14For more information on how to setup ACLs, please check
15the [ACL tutorial](https://learn.hashicorp.com/tutorials/consul/access-control-setup-production).
16
17## Create a Token
18
19This endpoint creates a new ACL token.
20
21| Method | Path         | Produces           |
22| ------ | ------------ | ------------------ |
23| `PUT`  | `/acl/token` | `application/json` |
24
25The table below shows this endpoint's support for
26[blocking queries](/api/features/blocking),
27[consistency modes](/api/features/consistency),
28[agent caching](/api/features/caching), and
29[required ACLs](/api#authentication).
30
31| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
32| ---------------- | ----------------- | ------------- | ------------ |
33| `NO`             | `none`            | `none`        | `acl:write`  |
34
35### Parameters
36
37- `AccessorID` `(string: "")` - Specifies a UUID to use as the token's Accessor ID.
38  If not specified a UUID will be generated for this field. Added in v1.5.0.
39
40- `SecretID` `(string: "")` - Specifies a UUID to use as the token's Secret ID.
41  If not specified a UUID will be generated for this field. Added in v1.5.0.
42  **Note**: The SecretID is used to authorize operations against Consul and should
43  be generated from an appropriate cryptographic source.
44
45- `Description` `(string: "")` - Free form human readable description of the token.
46
47- `Policies` `(array<PolicyLink>)` - The list of policies that should be
48  applied to the token. A PolicyLink is an object with an "ID" and/or "Name"
49  field to specify a policy. With the PolicyLink, tokens can be linked to
50  policies either by the policy name or by the policy ID. When policies are
51  linked by name they will be internally resolved to the policy ID. With
52  linking tokens internally by IDs, Consul enables policy renaming without
53  breaking tokens.
54
55- `Roles` `(array<RoleLink>)` - The list of roles that should be applied to the
56  token. A RoleLink is an object with an "ID" and/or "Name" field to specify a
57  role. With the RoleLink, tokens can be linked to roles either by the role
58  name or by the role ID. When roles are linked by name they will be internally
59  resolved to the role ID. With linking tokens internally by IDs, Consul
60  enables role renaming without breaking tokens. Added in Consul 1.5.0.
61
62- `ServiceIdentities` `(array<ServiceIdentity>)` - The list of [service
63  identities](/docs/acl/acl-system#acl-service-identities) that should be
64  applied to the token. Added in Consul 1.5.0.
65
66  - `ServiceName` `(string: <required>)` - The name of the service. The name
67    must be no longer than 256 characters, must start and end with a lowercase
68    alphanumeric character, and can only contain lowercase alphanumeric
69    characters as well as `-` and `_`.
70
71  - `Datacenters` `(array<string>)` - Specifies the datacenters the effective
72    policy is valid within. When no datacenters are provided the effective
73    policy is valid in all datacenters including those which do not yet exist
74    but may in the future.
75
76- `NodeIdentities` `(array<NodeIdentity>)` - The list of [node
77  identities](/docs/acl/acl-system#acl-node-identities) that should be
78  applied to the token. Added in Consul 1.8.1.
79
80  - `NodeName` `(string: <required>)` - The name of the node. The name
81    must be no longer than 256 characters, must start and end with a lowercase
82    alphanumeric character, and can only contain lowercase alphanumeric
83    characters as well as `-` and `_`.
84
85  - `Datacenter` `(string: <required>)` - Specifies the nodes datacenter. This
86    will result in effective policy only being valid in that datacenter.
87
88- `Local` `(bool: false)` - If true, indicates that the token should not be
89  replicated globally and instead be local to the current datacenter.
90
91- `ExpirationTime` `(time: "")`- If set this represents the point after which a
92  token should be considered revoked and is eligible for destruction. The
93  default unset value represents NO expiration. This value must be between 1
94  minute and 24 hours in the future. Added in Consul 1.5.0.
95
96- `ExpirationTTL` `(duration: 0s)` - This is a convenience field and if set
97  will initialize the `ExpirationTime` field to a value of `CreateTime + ExpirationTTL`. This field is not persisted beyond its initial use. Can be
98  specified in the form of `"60s"` or `"5m"` (i.e., 60 seconds or 5 minutes,
99  respectively). This value must be no smaller than 1 minute and no longer than
100  24 hours. Added in Consul 1.5.0.
101
102- `Namespace` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace to
103  create the token. If not provided in the JSON body, the value of
104  the `ns` URL query parameter or in the `X-Consul-Namespace` header will be used.
105  If not provided, the namespace will be inherited from the request's ACL
106  token or will default to the `default` namespace. Added in Consul 1.7.0.
107
108### Sample Payload
109
110```json
111{
112  "Description": "Agent token for 'node1'",
113  "Policies": [
114    {
115      "ID": "165d4317-e379-f732-ce70-86278c4558f7"
116    },
117    {
118      "Name": "node-read"
119    }
120  ],
121  "Local": false
122}
123```
124
125### Sample Request
126
127```shell-session
128$ curl -X PUT \
129    --data @payload.json \
130    http://127.0.0.1:8500/v1/acl/token
131```
132
133### Sample Response
134
135```json
136{
137  "AccessorID": "6a1253d2-1785-24fd-91c2-f8e78c745511",
138  "SecretID": "45a3bd52-07c7-47a4-52fd-0745e0cfe967",
139  "Description": "Agent token for 'node1'",
140  "Policies": [
141    {
142      "ID": "165d4317-e379-f732-ce70-86278c4558f7",
143      "Name": "node1-write"
144    },
145    {
146      "ID": "e359bd81-baca-903e-7e64-1ccd9fdc78f5",
147      "Name": "node-read"
148    }
149  ],
150  "Local": false,
151  "CreateTime": "2018-10-24T12:25:06.921933-04:00",
152  "Hash": "UuiRkOQPRCvoRZHRtUxxbrmwZ5crYrOdZ0Z1FTFbTbA=",
153  "CreateIndex": 59,
154  "ModifyIndex": 59
155}
156```
157
158## Read a Token
159
160This endpoint reads an ACL token with the given Accessor ID.
161
162| Method | Path                     | Produces           |
163| ------ | ------------------------ | ------------------ |
164| `GET`  | `/acl/token/:AccessorID` | `application/json` |
165
166The table below shows this endpoint's support for
167[blocking queries](/api/features/blocking),
168[consistency modes](/api/features/consistency),
169[agent caching](/api/features/caching), and
170[required ACLs](/api#authentication).
171
172| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
173| ---------------- | ----------------- | ------------- | ------------ |
174| `YES`            | `all`             | `none`        | `acl:read`   |
175
176### Parameters
177
178- `AccessorID` `(string: <required>)` - Specifies the accessor ID of the ACL token to
179  read. This is required and is specified as part of the URL path.
180
181- `ns` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace to lookup
182  the token. This value can be specified as the `ns` URL query
183  parameter or the `X-Consul-Namespace` header. If not provided by either,
184  the namespace will be inherited from the request's ACL token or will default
185  to the `default` namespace. Added in Consul 1.7.0.
186
187### Sample Request
188
189```shell-session
190$ curl -X GET http://127.0.0.1:8500/v1/acl/token/6a1253d2-1785-24fd-91c2-f8e78c745511
191```
192
193### Sample Response
194
195-> **Note** If the token used for accessing the API has `acl:write` permissions,
196then the `SecretID` will contain the tokens real value. Only when accessed with
197a token with only `acl:read` permissions will the `SecretID` be redacted. This
198is to prevent privilege escalation whereby having `acl:read` privileges allows
199for reading other secrets which given even more permissions.
200
201```json
202{
203  "AccessorID": "6a1253d2-1785-24fd-91c2-f8e78c745511",
204  "SecretID": "<hidden>",
205  "Description": "Agent token for 'node1'",
206  "Policies": [
207    {
208      "ID": "165d4317-e379-f732-ce70-86278c4558f7",
209      "Name": "node1-write"
210    },
211    {
212      "ID": "e359bd81-baca-903e-7e64-1ccd9fdc78f5",
213      "Name": "node-read"
214    }
215  ],
216  "Local": false,
217  "CreateTime": "2018-10-24T12:25:06.921933-04:00",
218  "Hash": "UuiRkOQPRCvoRZHRtUxxbrmwZ5crYrOdZ0Z1FTFbTbA=",
219  "CreateIndex": 59,
220  "ModifyIndex": 59
221}
222```
223
224## Read Self Token
225
226This endpoint returns the ACL token details that matches the secret ID
227specified with the `X-Consul-Token` header or the `token` query parameter.
228
229| Method | Path              | Produces           |
230| ------ | ----------------- | ------------------ |
231| `GET`  | `/acl/token/self` | `application/json` |
232
233The table below shows this endpoint's support for
234[blocking queries](/api/features/blocking),
235[consistency modes](/api/features/consistency),
236[agent caching](/api/features/caching), and
237[required ACLs](/api#authentication).
238
239| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
240| ---------------- | ----------------- | ------------- | ------------ |
241| `YES`            | `all`             | `none`        | `none`       |
242
243-> **Note** - This endpoint requires no specific privileges as it is just
244retrieving the data for a token that you must already possess its secret.
245
246### Sample Request
247
248```shell-session
249$ curl -H "X-Consul-Token: 6a1253d2-1785-24fd-91c2-f8e78c745511" \
250   http://127.0.0.1:8500/v1/acl/token/self
251```
252
253### Sample Response
254
255```json
256{
257  "AccessorID": "6a1253d2-1785-24fd-91c2-f8e78c745511",
258  "SecretID": "45a3bd52-07c7-47a4-52fd-0745e0cfe967",
259  "Description": "Agent token for 'node1'",
260  "Policies": [
261    {
262      "ID": "165d4317-e379-f732-ce70-86278c4558f7",
263      "Name": "node1-write"
264    },
265    {
266      "ID": "e359bd81-baca-903e-7e64-1ccd9fdc78f5",
267      "Name": "node-read"
268    }
269  ],
270  "Local": false,
271  "CreateTime": "2018-10-24T12:25:06.921933-04:00",
272  "Hash": "UuiRkOQPRCvoRZHRtUxxbrmwZ5crYrOdZ0Z1FTFbTbA=",
273  "CreateIndex": 59,
274  "ModifyIndex": 59
275}
276```
277
278## Update a Token
279
280This endpoint updates an existing ACL token.
281
282| Method | Path                     | Produces           |
283| ------ | ------------------------ | ------------------ |
284| `PUT`  | `/acl/token/:AccessorID` | `application/json` |
285
286The table below shows this endpoint's support for
287[blocking queries](/api/features/blocking),
288[consistency modes](/api/features/consistency),
289[agent caching](/api/features/caching), and
290[required ACLs](/api#authentication).
291
292| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
293| ---------------- | ----------------- | ------------- | ------------ |
294| `NO`             | `none`            | `none`        | `acl:write`  |
295
296### Parameters
297
298- `AccessorID` `(string: "")` - Specifies the accessor ID of the token being updated. This is
299  required in the URL path but may also be specified in the JSON body. If specified
300  in both places then they must match exactly. This field is immutable. If not present in
301  the body and only in the URL then it will be filled in by Consul.
302
303- `SecretID` `(string: "")` - Specifies the secret ID of the token being updated. This field is
304  immutable so if present in the body then it must match the existing value. If not present
305  then the value will be filled in by Consul.
306
307- `Description` `(string: "")` - Free form human readable description of this token.
308
309- `Policies` `(array<PolicyLink>)` - This is the list of policies that should
310  be applied to this token. A PolicyLink is an object with an "ID" and/or
311  "Name" field to specify a policy. With the PolicyLink tokens can be linked to policies
312  either by the policy name or by the policy ID. When policies are linked by
313  name they will internally be resolved to the policy ID. With linking tokens
314  internally by IDs, Consul enables policy renaming without breaking tokens.
315
316- `Roles` `(array<RoleLink>)` - The list of roles that should be applied to the
317  token. A RoleLink is an object with an "ID" and/or "Name" field to specify a
318  role. With the RoleLink, tokens can be linked to roles either by the role
319  name or by the role ID. When roles are linked by name they will be internally
320  resolved to the role ID. With linking tokens internally by IDs, Consul
321  enables role renaming without breaking tokens.
322
323- `ServiceIdentities` `(array<ServiceIdentity>)` - The list of [service
324  identities](/docs/acl/acl-system#acl-service-identities) that should be
325  applied to the token. Added in Consul 1.5.0.
326
327  - `ServiceName` `(string: <required>)` - The name of the service. The name
328    must be no longer than 256 characters, must start and end with a lowercase
329    alphanumeric character, and can only contain lowercase alphanumeric
330    characters as well as `-` and `_`.
331
332  - `Datacenters` `(array<string>)` - Specifies the datacenters the effective
333    policy is valid within. When no datacenters are provided the effective
334    policy is valid in all datacenters including those which do not yet exist
335    but may in the future.
336
337- `NodeIdentities` `(array<NodeIdentity>)` - The list of [node
338  identities](/docs/acl/acl-system#acl-node-identities) that should be
339  applied to the token. Added in Consul 1.8.1.
340
341  - `NodeName` `(string: <required>)` - The name of the node. The name
342    must be no longer than 256 characters, must start and end with a lowercase
343    alphanumeric character, and can only contain lowercase alphanumeric
344    characters as well as `-` and `_`.
345
346  - `Datacenter` `(string: <required>)` - Specifies the nodes datacenter. This
347    will result in effective policy only being valid in that datacenter.
348
349- `Local` `(bool: false)` - If true, indicates that this token should not be
350  replicated globally and instead be local to the current datacenter. This
351  value must match the existing value or the request will return an error.
352
353- `AuthMethod` `(string: "")` - Specifies the name of the auth method that
354  created this token. This field is immutable so if present in the body then it
355  must match the existing value. If not present then the value will be filled
356  in by Consul.
357
358- `ExpirationTime` `(time: "")` - Specifies the expiration time for the token
359  being updated. This field is immutable so if present in the body then it must
360  match the existing value. If not present then the value will be filled in by
361  Consul.
362
363- `Namespace` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace of
364  the token to update. If not provided in the JSON body, the value of
365  the `ns` URL query parameter or in the `X-Consul-Namespace` header will be used.
366  If not provided, the namespace will be inherited from the request's ACL
367  token or will default to the `default` namespace. Added in Consul 1.7.0.
368
369### Sample Payload
370
371```json
372{
373  "Description": "Agent token for 'node1'",
374  "Policies": [
375    {
376      "ID": "165d4317-e379-f732-ce70-86278c4558f7"
377    },
378    {
379      "Name": "node-read"
380    },
381    {
382      "Name": "service-read"
383    }
384  ],
385  "Local": false
386}
387```
388
389### Sample Request
390
391```shell-session
392$ curl -X PUT \
393    --data @payload.json \
394    http://127.0.0.1:8500/v1/acl/token/6a1253d2-1785-24fd-91c2-f8e78c745511
395```
396
397### Sample Response
398
399```json
400{
401  "AccessorID": "6a1253d2-1785-24fd-91c2-f8e78c745511",
402  "SecretID": "45a3bd52-07c7-47a4-52fd-0745e0cfe967",
403  "Description": "Agent token for 'node1'",
404  "Policies": [
405    {
406      "ID": "165d4317-e379-f732-ce70-86278c4558f7",
407      "Name": "node1-write"
408    },
409    {
410      "ID": "e359bd81-baca-903e-7e64-1ccd9fdc78f5",
411      "Name": "node-read"
412    },
413    {
414      "ID": "93d2226b-2046-4db1-993b-c0581b5d2391",
415      "Name": "service-read"
416    }
417  ],
418  "Local": false,
419  "CreateTime": "2018-10-24T12:25:06.921933-04:00",
420  "Hash": "UuiRkOQPRCvoRZHRtUxxbrmwZ5crYrOdZ0Z1FTFbTbA=",
421  "CreateIndex": 59,
422  "ModifyIndex": 100
423}
424```
425
426## Clone a Token
427
428This endpoint clones an existing ACL token.
429
430| Method | Path                           | Produces           |
431| ------ | ------------------------------ | ------------------ |
432| `PUT`  | `/acl/token/:AccessorID/clone` | `application/json` |
433
434The table below shows this endpoint's support for
435[blocking queries](/api/features/blocking),
436[consistency modes](/api/features/consistency),
437[agent caching](/api/features/caching), and
438[required ACLs](/api#authentication).
439
440| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
441| ---------------- | ----------------- | ------------- | ------------ |
442| `NO`             | `none`            | `none`        | `acl:write`  |
443
444### Parameters
445
446- `AccessorID` `(string: <required>)` - The accessor ID of the token to clone. This is required
447  in the URL path
448
449- `Description` `(string: "")` - Free form human readable description for the cloned token.
450
451- `Namespace` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace of
452  the token to be cloned. If not provided in the JSON body, the value of
453  the `ns` URL query parameter or in the `X-Consul-Namespace` header will be used.
454  If not provided, the namespace will be inherited from the request's ACL
455  token or will default to the `default` namespace. Added in Consul 1.7.0.
456
457### Sample Payload
458
459```json
460{
461  "Description": "Clone of Agent token for 'node1'"
462}
463```
464
465### Sample Request
466
467```shell-session
468$ curl -X PUT \
469    --data @payload.json \
470    http://127.0.0.1:8500/v1/acl/token/6a1253d2-1785-24fd-91c2-f8e78c745511/clone
471```
472
473### Sample Response
474
475```json
476{
477  "AccessorID": "773efe2a-1f6f-451f-878c-71be10712bae",
478  "SecretID": "8b1247ef-d172-4f99-b050-4dbe5d3df0cb",
479  "Description": "Clone of Agent token for 'node1'",
480  "Policies": [
481    {
482      "ID": "165d4317-e379-f732-ce70-86278c4558f7",
483      "Name": "node1-write"
484    },
485    {
486      "ID": "e359bd81-baca-903e-7e64-1ccd9fdc78f5",
487      "Name": "node-read"
488    },
489    {
490      "ID": "93d2226b-2046-4db1-993b-c0581b5d2391",
491      "Name": "service-read"
492    }
493  ],
494  "Local": false,
495  "CreateTime": "2018-10-24T12:25:06.921933-04:00",
496  "Hash": "UuiRkOQPRCvoRZHRtUxxbrmwZ5crYrOdZ0Z1FTFbTbA=",
497  "CreateIndex": 128,
498  "ModifyIndex": 128
499}
500```
501
502## Delete a Token
503
504This endpoint deletes an ACL token.
505
506| Method   | Path                     | Produces           |
507| -------- | ------------------------ | ------------------ |
508| `DELETE` | `/acl/token/:AccessorID` | `application/json` |
509
510Even though the return type is application/json, the value is either true or
511false, indicating whether the delete succeeded.
512
513The table below shows this endpoint's support for
514[blocking queries](/api/features/blocking),
515[consistency modes](/api/features/consistency),
516[agent caching](/api/features/caching), and
517[required ACLs](/api#authentication).
518
519| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
520| ---------------- | ----------------- | ------------- | ------------ |
521| `NO`             | `none`            | `none`        | `acl:write`  |
522
523### Parameters
524
525- `AccessorID` `(string: <required>)` - Specifies the accessor ID of the ACL token to
526  delete. This is required and is specified as part of the URL path.
527
528- `ns` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace of the
529  token to delete. This value can be specified as the `ns` URL query
530  parameter or the `X-Consul-Namespace` header. If not provided by either,
531  the namespace will be inherited from the request's ACL token or will default
532  to the `default` namespace. Added in Consul 1.7.0.
533
534### Sample Request
535
536```shell-session
537$ curl -X DELETE \
538    http://127.0.0.1:8500/v1/acl/token/8f246b77-f3e1-ff88-5b48-8ec93abf3e05
539```
540
541### Sample Response
542
543```json
544true
545```
546
547## List Tokens
548
549This endpoint lists all the ACL tokens.
550
551| Method | Path          | Produces           |
552| ------ | ------------- | ------------------ |
553| `GET`  | `/acl/tokens` | `application/json` |
554
555The table below shows this endpoint's support for
556[blocking queries](/api/features/blocking),
557[consistency modes](/api/features/consistency),
558[agent caching](/api/features/caching), and
559[required ACLs](/api#authentication).
560
561| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
562| ---------------- | ----------------- | ------------- | ------------ |
563| `YES`            | `all`             | `none`        | `acl:read`   |
564
565## Parameters
566
567- `policy` `(string: "")` - Filters the token list to those tokens that are
568  linked with the specific policy ID.
569
570- `role` `(string: "")` - Filters the token list to those tokens that are
571  linked with the specific role ID.
572
573- `authmethod` `(string: "")` - Filters the token list to those tokens that are
574  linked with the specific named auth method.
575
576- `authmethod-ns` `(string: "")` <EnterpriseAlert inline /> - Specifics the namespace
577  of the `authmethod` being used for token lookup. If not provided, the namespace
578  provided by the `ns` parameter will be used. If neither of those is provided
579  then the namespace will be inherited from the request's ACL token. Added in
580  Consul 1.7.0.
581
582- `ns` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace to list
583  the tokens for. This value can be specified as the `ns` URL query
584  parameter or the `X-Consul-Namespace` header. If not provided by either,
585  the namespace will be inherited from the request's ACL token or will default
586  to the `default` namespace. The namespace may be specified as '\*' and then
587  results will be returned for all namespaces. Added in Consul 1.7.0.
588
589## Sample Request
590
591```shell-session
592$ curl -X GET http://127.0.0.1:8500/v1/acl/tokens
593```
594
595### Sample Response
596
597-> **Note** If the token used for accessing the API has `acl:write` permissions,
598then the `SecretID` will contain the tokens real value. Only when accessed with
599a token with only `acl:read` permissions will the `SecretID` be redacted. This
600is to prevent privilege escalation whereby having `acl:read` privileges allows
601for reading other secrets which given even more permissions.
602
603```json
604[
605  {
606    "AccessorID": "6a1253d2-1785-24fd-91c2-f8e78c745511",
607    "SecretID": "<hidden>",
608    "Description": "Agent token for 'my-agent'",
609    "Policies": [
610      {
611        "ID": "165d4317-e379-f732-ce70-86278c4558f7",
612        "Name": "node1-write"
613      },
614      {
615        "ID": "e359bd81-baca-903e-7e64-1ccd9fdc78f5",
616        "Name": "node-read"
617      }
618    ],
619    "Local": false,
620    "CreateTime": "2018-10-24T12:25:06.921933-04:00",
621    "Hash": "UuiRkOQPRCvoRZHRtUxxbrmwZ5crYrOdZ0Z1FTFbTbA=",
622    "CreateIndex": 59,
623    "ModifyIndex": 59
624  },
625  {
626    "AccessorID": "00000000-0000-0000-0000-000000000002",
627    "SecretID": "<hidden>",
628    "Description": "Anonymous Token",
629    "Policies": null,
630    "Local": false,
631    "CreateTime": "0001-01-01T00:00:00Z",
632    "Hash": "RNVFSWnfd5DUOuB8vplp+imivlIna3fKQVnkUHh21cA=",
633    "CreateIndex": 5,
634    "ModifyIndex": 5
635  },
636  {
637    "AccessorID": "3328f9a6-433c-02d0-6649-7d07268dfec7",
638    "SecretID": "<hidden>",
639    "Description": "Bootstrap Token (Global Management)",
640    "Policies": [
641      {
642        "ID": "00000000-0000-0000-0000-000000000001",
643        "Name": "global-management"
644      }
645    ],
646    "Local": false,
647    "CreateTime": "2018-10-24T11:42:02.6427-04:00",
648    "Hash": "oyrov6+GFLjo/KZAfqgxF/X4J/3LX0435DOBy9V22I0=",
649    "CreateIndex": 12,
650    "ModifyIndex": 12
651  }
652]
653```
654