Creates a new token by cloning an existing token

        Parameters:
            token (ObjectID): Token ID
        Returns:
            ObjectMeta: where value is token ID

        This allows a token to serve as a template for others, making it
        simple to generate new tokens without complex rule management.

        As with create, a successful response body will return the ID of the
        newly created ACL, like so::

            {
                "ID": "adf4238a-882b-9ddc-4a9d-5b6758e4159e"
            }

async def clone(self, token):
        """Creates a new token by cloning an existing token

        Parameters:
            token (ObjectID): Token ID
        Returns:
            ObjectMeta: where value is token ID

        This allows a token to serve as a template for others, making it
        simple to generate new tokens without complex rule management.

        As with create, a successful response body will return the ID of the
        newly created ACL, like so::

            {
                "ID": "adf4238a-882b-9ddc-4a9d-5b6758e4159e"
            }
        """
        token_id = extract_attr(token, keys=["ID"])
        response = await self._api.put("/v1/acl/clone", token_id)
        return consul(response)