1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
from __future__ import annotations
from typing import Any
from ..rest import RestClient, RestClientOptions
from ..types import TimeoutType
class ClientGrants:
"""Auth0 client grants endpoints
Args:
domain (str): Your Auth0 domain, e.g: 'username.auth0.com'
token (str): Management API v2 Token
telemetry (bool, optional): Enable or disable Telemetry
(defaults to True)
timeout (float or tuple, optional): Change the requests
connect and read timeout. Pass a tuple to specify
both values separately or a float to set both to it.
(defaults to 5.0 for both)
protocol (str, optional): Protocol to use when making requests.
(defaults to "https")
rest_options (RestClientOptions): Pass an instance of
RestClientOptions to configure additional RestClient
options, such as rate-limit retries.
(defaults to None)
"""
def __init__(
self,
domain: str,
token: str,
telemetry: bool = True,
timeout: TimeoutType = 5.0,
protocol: str = "https",
rest_options: RestClientOptions | None = None,
) -> None:
self.domain = domain
self.protocol = protocol
self.client = RestClient(
jwt=token, telemetry=telemetry, timeout=timeout, options=rest_options
)
def _url(self, id: str | None = None) -> str:
url = f"{self.protocol}://{self.domain}/api/v2/client-grants"
if id is not None:
return f"{url}/{id}"
return url
def all(
self,
audience: str | None = None,
page: int | None = None,
per_page: int | None = None,
include_totals: bool = False,
client_id: str | None = None,
allow_any_organization: bool | None = None,
):
"""Retrieves all client grants.
Args:
audience (str, optional): URL encoded audience of a Resource Server
to filter.
page (int, optional): The result's page number (zero based). When not set,
the default value is up to the server.
per_page (int, optional): The amount of entries per page. When not set,
the default value is up to the server.
include_totals (bool, optional): True if the query summary is
to be included in the result, False otherwise. Defaults to False.
client_id (string, optional): The id of a client to filter.
allow_any_organization (bool, optional): Optional filter on allow_any_organization.
See: https://auth0.com/docs/api/management/v2#!/Client_Grants/get_client_grants
"""
params = {
"audience": audience,
"page": page,
"per_page": per_page,
"include_totals": str(include_totals).lower(),
"client_id": client_id,
"allow_any_organization": allow_any_organization,
}
return self.client.get(self._url(), params=params)
def create(self, body: dict[str, Any]) -> dict[str, Any]:
"""Creates a client grant.
Args:
body (dict): Attributes for the new client grant.
See: https://auth0.com/docs/api/management/v2#!/Client_Grants/post_client_grants
"""
return self.client.post(self._url(), data=body)
def delete(self, id: str) -> Any:
"""Deletes a client grant.
Args:
id (str): Id of client grant to delete.
See: https://auth0.com/docs/api/management/v2#!/Client_Grants/delete_client_grants_by_id
"""
return self.client.delete(self._url(id))
def update(self, id: str, body: dict[str, Any]) -> dict[str, Any]:
"""Modifies a client grant.
Args:
id (str): The id of the client grant to modify.
body (dict): Attributes to update.
See: https://auth0.com/docs/api/management/v2#!/Client_Grants/patch_client_grants_by_id
"""
return self.client.patch(self._url(id), data=body)
def get_organizations(
self,
id: str,
page: int | None = None,
per_page: int | None = None,
include_totals: bool = False,
from_param: str | None = None,
take: int | None = None,
):
"""Get the organizations associated to a client grant.
Args:
id (str): Id of client grant.
page (int, optional): The result's page number (zero based). When not set,
the default value is up to the server.
per_page (int, optional): The amount of entries per page. When not set,
the default value is up to the server.
include_totals (bool, optional): True if the query summary is
to be included in the result, False otherwise. Defaults to False.
from_param (str, optional): Id to start retrieving entries. You can
limit the amount of entries using the take parameter.
take (int, optional): The total amount of entries to retrieve when
using the from parameter. When not set, the default value is up to the server.
"""
params = {
"per_page": per_page,
"page": page,
"include_totals": str(include_totals).lower(),
"from": from_param,
"take": take,
}
return self.client.get(self._url(f"{id}/organizations"), params=params)
|