docs: async def create(self, token):
          """Creates a new token with a given policy
  
          Parameters:
              token (Object): Token specification
          Returns:
              Object: token ID
  
          The create endpoint is used to make a new token.
          A token has a name, a type, and a set of ACL rules.
  
          The request body may take the form::
  
              {
                  "Name": "my-app-token",
                  "Type": "client",
                  "Rules": ""
              }
  
          None of the fields are mandatory. The **Name** and **Rules** fields
          default to being blank, and the **Type** defaults to "client".
  
          **Name** is opaque to Consul. To aid human operators, it should
          be a meaningful indicator of the ACL's purpose.
  
          **Type** is either **client** or **management**. A management token
          is comparable to a root user and has the ability to perform any action
          including creating, modifying and deleting ACLs.
  
          **ID** field may be provided, and if omitted a random UUID will be
          generated.
  
          The format of **Rules** is
          `documented here <https://www.consul.io/docs/internals/acl.html>`_.
  
          A successful response body will return the **ID** of the newly
          created ACL, like so::
  
              {
                  "ID": "adf4238a-882b-9ddc-4a9d-5b6758e4159e"
              }
          """
          token = encode_token(token)
          response = await self._api.put("/v1/acl/create", data=token)
          return response.body