deepgram.clients.manage.v1.async_client

   1# Copyright 2023-2024 Deepgram SDK contributors. All Rights Reserved.
   2# Use of this source code is governed by a MIT license that can be found in the LICENSE file.
   3# SPDX-License-Identifier: MIT
   4
   5import logging
   6from typing import Dict, Union, Optional
   7import json
   8
   9import httpx
  10
  11from ....utils import verboselogs
  12from ....options import DeepgramClientOptions
  13from ...common import AbstractAsyncRestClient, DeepgramError
  14
  15from .response import (
  16    Message,
  17    Project,
  18    ProjectsResponse,
  19    MembersResponse,
  20    Key,
  21    KeyResponse,
  22    KeysResponse,
  23    ScopesResponse,
  24    InvitesResponse,
  25    UsageRequest,
  26    UsageRequestsResponse,
  27    UsageSummaryResponse,
  28    UsageFieldsResponse,
  29    Balance,
  30    BalancesResponse,
  31    ModelResponse,
  32    ModelsResponse,
  33)
  34from .options import (
  35    ProjectOptions,
  36    ModelOptions,
  37    KeyOptions,
  38    ScopeOptions,
  39    InviteOptions,
  40    UsageRequestOptions,
  41    UsageSummaryOptions,
  42    UsageFieldsOptions,
  43)
  44
  45
  46class AsyncManageClient(
  47    AbstractAsyncRestClient
  48):  # pylint: disable=too-many-public-methods,too-many-lines
  49    """
  50    A client for managing Deepgram projects and associated resources via the Deepgram API.
  51
  52    This class provides methods for performing various operations on Deepgram projects, including:
  53    - Retrieving project details
  54    - Updating project settings
  55    - Managing project members and scopes
  56    - Handling project invitations
  57    - Monitoring project usage and balances
  58
  59    Args:
  60        config (DeepgramClientOptions): all the options for the client.
  61    """
  62
  63    _logger: verboselogs.VerboseLogger
  64    _config: DeepgramClientOptions
  65    _endpoint: str
  66
  67    def __init__(self, config: DeepgramClientOptions):
  68        self._logger = verboselogs.VerboseLogger(__name__)
  69        self._logger.addHandler(logging.StreamHandler())
  70        self._logger.setLevel(config.verbose)
  71        self._config = config
  72        self._endpoint = "v1/projects"
  73        super().__init__(config)
  74
  75    # pylint: disable=too-many-positional-arguments
  76
  77    # projects
  78    async def list_projects(
  79        self,
  80        timeout: Optional[httpx.Timeout] = None,
  81        addons: Optional[Dict] = None,
  82        headers: Optional[Dict] = None,
  83        **kwargs,
  84    ) -> ProjectsResponse:
  85        """
  86        Please see get_projects for more information.
  87        """
  88        return await self.get_projects(
  89            timeout=timeout, addons=addons, headers=headers, **kwargs
  90        )
  91
  92    async def get_projects(
  93        self,
  94        timeout: Optional[httpx.Timeout] = None,
  95        addons: Optional[Dict] = None,
  96        headers: Optional[Dict] = None,
  97        **kwargs,
  98    ) -> ProjectsResponse:
  99        """
 100        Gets a list of projects for the authenticated user.
 101
 102        Reference:
 103        https://developers.deepgram.com/reference/get-projects
 104        """
 105        self._logger.debug("ManageClient.get_projects ENTER")
 106        url = f"{self._config.url}/{self._endpoint}"
 107        self._logger.info("url: %s", url)
 108        self._logger.info("addons: %s", addons)
 109        self._logger.info("headers: %s", headers)
 110        result = await self.get(
 111            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 112        )
 113        self._logger.info("result: %s", result)
 114        res = ProjectsResponse.from_json(result)
 115        self._logger.verbose("result: %s", res)
 116        self._logger.notice("get_projects succeeded")
 117        self._logger.debug("ManageClient.get_projects LEAVE")
 118        return res
 119
 120    async def get_project(
 121        self,
 122        project_id: str,
 123        timeout: Optional[httpx.Timeout] = None,
 124        addons: Optional[Dict] = None,
 125        headers: Optional[Dict] = None,
 126        **kwargs,
 127    ) -> Project:
 128        """
 129        Gets details for a specific project.
 130
 131        Reference:
 132        https://developers.deepgram.com/reference/get-project
 133        """
 134        self._logger.debug("ManageClient.get_project ENTER")
 135        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 136        self._logger.info("url: %s", url)
 137        self._logger.info("project_id: %s", project_id)
 138        self._logger.info("addons: %s", addons)
 139        self._logger.info("headers: %s", headers)
 140        result = await self.get(
 141            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 142        )
 143        self._logger.info("result: %s", result)
 144        res = Project.from_json(result)
 145        self._logger.verbose("result: %s", res)
 146        self._logger.notice("get_project succeeded")
 147        self._logger.debug("ManageClient.get_project LEAVE")
 148        return res
 149
 150    async def update_project_option(
 151        self,
 152        project_id: str,
 153        options: Union[Dict, ProjectOptions],
 154        timeout: Optional[httpx.Timeout] = None,
 155        addons: Optional[Dict] = None,
 156        headers: Optional[Dict] = None,
 157        **kwargs,
 158    ) -> Message:
 159        """
 160        Updates a project's settings.
 161
 162        Reference:
 163        https://developers.deepgram.com/reference/update-project
 164        """
 165        self._logger.debug("ManageClient.update_project_option ENTER")
 166        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 167        self._logger.info("url: %s", url)
 168        self._logger.info("project_id: %s", project_id)
 169        if isinstance(options, ProjectOptions):
 170            self._logger.info("ProjectOptions switching class -> dict")
 171            options = options.to_dict()
 172        self._logger.info("options: %s", options)
 173        self._logger.info("addons: %s", addons)
 174        self._logger.info("headers: %s", headers)
 175        result = await self.patch(
 176            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 177        )
 178        self._logger.info("result: %s", result)
 179        res = Message.from_json(result)
 180        self._logger.verbose("result: %s", res)
 181        self._logger.notice("update_project_option succeeded")
 182        self._logger.debug("ManageClient.update_project_option LEAVE")
 183        return res
 184
 185    async def update_project(
 186        self,
 187        project_id: str,
 188        name="",
 189        timeout: Optional[httpx.Timeout] = None,
 190        addons: Optional[Dict] = None,
 191        headers: Optional[Dict] = None,
 192        **kwargs,
 193    ) -> Message:
 194        """
 195        Updates a project's settings.
 196
 197        Reference:
 198        https://developers.deepgram.com/reference/update-project
 199        """
 200        self._logger.debug("ManageClient.update_project ENTER")
 201        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 202        options = {
 203            "name": name,
 204        }
 205        self._logger.info("url: %s", url)
 206        self._logger.info("project_id: %s", project_id)
 207        self._logger.info("options: %s", options)
 208        self._logger.info("addons: %s", addons)
 209        self._logger.info("headers: %s", headers)
 210        result = await self.patch(
 211            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 212        )
 213        self._logger.info("result: %s", result)
 214        res = Message.from_json(result)
 215        self._logger.verbose("result: %s", res)
 216        self._logger.notice("update_project succeeded")
 217        self._logger.debug("ManageClient.update_project LEAVE")
 218        return res
 219
 220    async def delete_project(
 221        self,
 222        project_id: str,
 223        timeout: Optional[httpx.Timeout] = None,
 224        addons: Optional[Dict] = None,
 225        headers: Optional[Dict] = None,
 226        **kwargs,
 227    ) -> Message:
 228        """
 229        Deletes a project.
 230
 231        Reference:
 232        https://developers.deepgram.com/reference/delete-project
 233        """
 234        self._logger.debug("ManageClient.delete_project ENTER")
 235        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 236        self._logger.info("addons: %s", addons)
 237        self._logger.info("headers: %s", headers)
 238        result = await self.delete(
 239            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 240        )
 241        self._logger.info("result: %s", result)
 242        res = Message.from_json(result)
 243        self._logger.verbose("result: %s", res)
 244        self._logger.notice("delete_project succeeded")
 245        self._logger.debug("ManageClient.delete_project LEAVE")
 246        return res
 247
 248    async def list_project_models(
 249        self,
 250        project_id: str,
 251        options: Optional[Union[Dict, ModelOptions]] = None,
 252        timeout: Optional[httpx.Timeout] = None,
 253        addons: Optional[Dict] = None,
 254        headers: Optional[Dict] = None,
 255        **kwargs,
 256    ) -> ModelsResponse:
 257        """
 258        Please see get_project_models.
 259        """
 260        return await self.get_project_models(
 261            project_id,
 262            options=options,
 263            timeout=timeout,
 264            addons=addons,
 265            headers=headers,
 266            **kwargs,
 267        )
 268
 269    async def get_project_models(
 270        self,
 271        project_id: str,
 272        options: Optional[Union[Dict, ModelOptions]] = None,
 273        timeout: Optional[httpx.Timeout] = None,
 274        addons: Optional[Dict] = None,
 275        headers: Optional[Dict] = None,
 276        **kwargs,
 277    ) -> ModelsResponse:
 278        """
 279        Gets models for a specific project.
 280
 281        Reference:
 282        https://developers.deepgram.com/reference/get-project
 283        https://developers.deepgram.com/reference/get-model
 284
 285        Args:
 286            project_id (str): The ID of the project.
 287            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 288            addons (Optional[Dict]): Additional options for the request.
 289            headers (Optional[Dict]): Headers to include in the request.
 290            **kwargs: Additional keyword arguments.
 291
 292        Returns:
 293            ModelsResponse: A response object containing the model details.
 294        """
 295        self._logger.debug("ManageClient.get_project_models ENTER")
 296
 297        if options is None:
 298            options = ModelOptions()
 299
 300        url = f"{self._config.url}/{self._endpoint}/{project_id}/models"
 301        self._logger.info("url: %s", url)
 302        self._logger.info("project_id: %s", project_id)
 303        if isinstance(options, ModelOptions):
 304            self._logger.info("ModelOptions switching class -> dict")
 305            options = options.to_dict()
 306        self._logger.info("options: %s", options)
 307        self._logger.info("addons: %s", addons)
 308        self._logger.info("headers: %s", headers)
 309        result = await self.get(
 310            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 311        )
 312        self._logger.info("json: %s", result)
 313        res = ModelsResponse.from_json(result)
 314        self._logger.verbose("result: %s", res)
 315        self._logger.notice("get_project_models succeeded")
 316        self._logger.debug("ManageClient.get_project_models LEAVE")
 317        return res
 318
 319    async def get_project_model(
 320        self,
 321        project_id: str,
 322        model_id: str,
 323        timeout: Optional[httpx.Timeout] = None,
 324        addons: Optional[Dict] = None,
 325        headers: Optional[Dict] = None,
 326        **kwargs,
 327    ) -> ModelResponse:
 328        """
 329        Gets a single model for a specific project.
 330
 331        Reference:
 332        https://developers.deepgram.com/reference/get-project
 333        https://developers.deepgram.com/reference/get-model
 334
 335        Args:
 336            project_id (str): The ID of the project.
 337            model_id (str): The ID of the model.
 338            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 339            addons (Optional[Dict]): Additional options for the request.
 340            headers (Optional[Dict]): Headers to include in the request.
 341            **kwargs: Additional keyword arguments.
 342
 343        Returns:
 344            ModelResponse: A response object containing the model details.
 345        """
 346        self._logger.debug("ManageClient.get_project_model ENTER")
 347        url = f"{self._config.url}/{self._endpoint}/{project_id}/models/{model_id}"
 348        self._logger.info("url: %s", url)
 349        self._logger.info("project_id: %s", project_id)
 350        self._logger.info("model_id: %s", model_id)
 351        self._logger.info("addons: %s", addons)
 352        self._logger.info("headers: %s", headers)
 353        result = await self.get(
 354            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 355        )
 356        self._logger.info("json: %s", result)
 357        res = ModelResponse.from_json(result)
 358        self._logger.verbose("result: %s", res)
 359        self._logger.notice("get_project_model succeeded")
 360        self._logger.debug("ManageClient.get_project_model LEAVE")
 361        return res
 362
 363    # models
 364    async def list_models(
 365        self,
 366        options: Optional[Union[Dict, ModelOptions]] = None,
 367        timeout: Optional[httpx.Timeout] = None,
 368        addons: Optional[Dict] = None,
 369        headers: Optional[Dict] = None,
 370        **kwargs,
 371    ) -> ModelsResponse:
 372        """
 373        Please see get_models for more information.
 374        """
 375        return await self.get_models(
 376            options=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 377        )
 378
 379    async def get_models(
 380        self,
 381        options: Optional[Union[Dict, ModelOptions]] = None,
 382        timeout: Optional[httpx.Timeout] = None,
 383        addons: Optional[Dict] = None,
 384        headers: Optional[Dict] = None,
 385        **kwargs,
 386    ) -> ModelsResponse:
 387        """
 388        Gets all models available.
 389
 390        Reference:
 391        https://developers.deepgram.com/reference/get-model
 392
 393        Args:
 394            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 395            addons (Optional[Dict]): Additional options for the request.
 396            headers (Optional[Dict]): Headers to include in the request.
 397            **kwargs: Additional keyword arguments.
 398
 399        Returns:
 400            ModelsResponse: A response object containing the model details.
 401        """
 402        self._logger.debug("ManageClient.get_models ENTER")
 403
 404        if options is None:
 405            options = ModelOptions()
 406
 407        url = f"{self._config.url}/v1/models"
 408        self._logger.info("url: %s", url)
 409        if isinstance(options, ModelOptions):
 410            self._logger.info("ModelOptions switching class -> dict")
 411            options = options.to_dict()
 412        self._logger.info("options: %s", options)
 413        self._logger.info("addons: %s", addons)
 414        self._logger.info("headers: %s", headers)
 415        result = await self.get(
 416            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 417        )
 418        self._logger.info("result: %s", result)
 419        res = ModelsResponse.from_json(result)
 420        self._logger.verbose("result: %s", res)
 421        self._logger.notice("get_models succeeded")
 422        self._logger.debug("ManageClient.get_models LEAVE")
 423        return res
 424
 425    async def get_model(
 426        self,
 427        model_id: str,
 428        timeout: Optional[httpx.Timeout] = None,
 429        addons: Optional[Dict] = None,
 430        headers: Optional[Dict] = None,
 431        **kwargs,
 432    ) -> ModelResponse:
 433        """
 434        Gets information for a specific model.
 435
 436        Reference:
 437        https://developers.deepgram.com/reference/get-model
 438
 439        Args:
 440            model_id (str): The ID of the model.
 441            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 442            addons (Optional[Dict]): Additional options for the request.
 443            headers (Optional[Dict]): Headers to include in the request.
 444            **kwargs: Additional keyword arguments.
 445
 446        Returns:
 447            ModelResponse: A response object containing the model details.
 448        """
 449        self._logger.debug("ManageClient.get_model ENTER")
 450        url = f"{self._config.url}/v1/models/{model_id}"
 451        self._logger.info("url: %s", url)
 452        self._logger.info("model_id: %s", model_id)
 453        self._logger.info("addons: %s", addons)
 454        self._logger.info("headers: %s", headers)
 455        result = await self.get(
 456            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 457        )
 458        self._logger.info("result: %s", result)
 459        res = ModelResponse.from_json(result)
 460        self._logger.verbose("result: %s", res)
 461        self._logger.notice("get_model succeeded")
 462        self._logger.debug("ManageClient.get_model LEAVE")
 463        return res
 464
 465    # keys
 466    async def list_keys(
 467        self,
 468        project_id: str,
 469        timeout: Optional[httpx.Timeout] = None,
 470        addons: Optional[Dict] = None,
 471        headers: Optional[Dict] = None,
 472        **kwargs,
 473    ) -> KeysResponse:
 474        """
 475        Please see get_keys for more information.
 476        """
 477        return await self.get_keys(
 478            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
 479        )
 480
 481    async def get_keys(
 482        self,
 483        project_id: str,
 484        timeout: Optional[httpx.Timeout] = None,
 485        addons: Optional[Dict] = None,
 486        headers: Optional[Dict] = None,
 487        **kwargs,
 488    ) -> KeysResponse:
 489        """
 490        Gets a list of keys for a project.
 491
 492        Reference:
 493        https://developers.deepgram.com/reference/list-keys
 494        """
 495        self._logger.debug("ManageClient.get_keys ENTER")
 496        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys"
 497        self._logger.info("url: %s", url)
 498        self._logger.info("project_id: %s", project_id)
 499        self._logger.info("addons: %s", addons)
 500        self._logger.info("headers: %s", headers)
 501        result = await self.get(
 502            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 503        )
 504        self._logger.info("result: %s", result)
 505        res = KeysResponse.from_json(result)
 506        self._logger.verbose("result: %s", res)
 507        self._logger.notice("get_keys succeeded")
 508        self._logger.debug("ManageClient.get_keys LEAVE")
 509        return res
 510
 511    async def get_key(
 512        self,
 513        project_id: str,
 514        key_id: str,
 515        timeout: Optional[httpx.Timeout] = None,
 516        addons: Optional[Dict] = None,
 517        headers: Optional[Dict] = None,
 518        **kwargs,
 519    ) -> KeyResponse:
 520        """
 521        Gets details for a specific key.
 522
 523        Reference:
 524        https://developers.deepgram.com/reference/get-key
 525        """
 526        self._logger.debug("ManageClient.get_key ENTER")
 527        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys/{key_id}"
 528        self._logger.info("url: %s", url)
 529        self._logger.info("project_id: %s", project_id)
 530        self._logger.info("key_id: %s", key_id)
 531        self._logger.info("addons: %s", addons)
 532        self._logger.info("headers: %s", headers)
 533        result = await self.get(
 534            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 535        )
 536        self._logger.info("result: %s", result)
 537        res = KeyResponse.from_json(result)
 538        self._logger.verbose("result: %s", res)
 539        self._logger.notice("get_key succeeded")
 540        self._logger.debug("ManageClient.get_key LEAVE")
 541        return res
 542
 543    async def create_key(
 544        self,
 545        project_id: str,
 546        options: Union[Dict, KeyOptions],
 547        timeout: Optional[httpx.Timeout] = None,
 548        addons: Optional[Dict] = None,
 549        headers: Optional[Dict] = None,
 550        **kwargs,
 551    ) -> Key:
 552        """
 553        Creates a new key.
 554
 555        Reference:
 556        https://developers.deepgram.com/reference/create-key
 557        """
 558        self._logger.debug("ManageClient.create_key ENTER")
 559        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys"
 560        self._logger.info("url: %s", url)
 561        self._logger.info("project_id: %s", project_id)
 562        if isinstance(options, KeyOptions):
 563            self._logger.info("KeyOptions switching class -> dict")
 564            options = options.to_dict()
 565        self._logger.info("options: %s", options)
 566        self._logger.info("addons: %s", addons)
 567        self._logger.info("headers: %s", headers)
 568        result = await self.post(
 569            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 570        )
 571        self._logger.info("result: %s", result)
 572        res = Key.from_json(result)
 573        self._logger.verbose("result: %s", res)
 574        self._logger.notice("create_key succeeded")
 575        self._logger.debug("ManageClient.create_key LEAVE")
 576        return res
 577
 578    async def delete_key(
 579        self,
 580        project_id: str,
 581        key_id: str,
 582        timeout: Optional[httpx.Timeout] = None,
 583        addons: Optional[Dict] = None,
 584        headers: Optional[Dict] = None,
 585        **kwargs,
 586    ) -> Message:
 587        """
 588        Deletes a key.
 589
 590        Reference:
 591        https://developers.deepgram.com/reference/delete-key
 592        """
 593        self._logger.debug("ManageClient.delete_key ENTER")
 594        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys/{key_id}"
 595        self._logger.info("url: %s", url)
 596        self._logger.info("project_id: %s", project_id)
 597        self._logger.info("key_id: %s", key_id)
 598        self._logger.info("addons: %s", addons)
 599        self._logger.info("headers: %s", headers)
 600        result = await self.delete(
 601            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 602        )
 603        self._logger.info("result: %s", result)
 604        res = Message.from_json(result)
 605        self._logger.verbose("result: %s", res)
 606        self._logger.notice("delete_key succeeded")
 607        self._logger.debug("ManageClient.delete_key LEAVE")
 608        return res
 609
 610    # members
 611    async def list_members(
 612        self,
 613        project_id: str,
 614        timeout: Optional[httpx.Timeout] = None,
 615        addons: Optional[Dict] = None,
 616        headers: Optional[Dict] = None,
 617        **kwargs,
 618    ) -> MembersResponse:
 619        """
 620        Please see get_members for more information.
 621        """
 622        return await self.get_members(
 623            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
 624        )
 625
 626    async def get_members(
 627        self,
 628        project_id: str,
 629        timeout: Optional[httpx.Timeout] = None,
 630        addons: Optional[Dict] = None,
 631        headers: Optional[Dict] = None,
 632        **kwargs,
 633    ) -> MembersResponse:
 634        """
 635        Gets a list of members for a project.
 636
 637        Reference:
 638        https://developers.deepgram.com/reference/get-members
 639        """
 640        self._logger.debug("ManageClient.get_members ENTER")
 641        url = f"{self._config.url}/{self._endpoint}/{project_id}/members"
 642        self._logger.info("url: %s", url)
 643        self._logger.info("project_id: %s", project_id)
 644        self._logger.info("addons: %s", addons)
 645        self._logger.info("headers: %s", headers)
 646        result = await self.get(
 647            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 648        )
 649        self._logger.info("result: %s", result)
 650        res = MembersResponse.from_json(result)
 651        self._logger.verbose("result: %s", res)
 652        self._logger.notice("get_members succeeded")
 653        self._logger.debug("ManageClient.get_members LEAVE")
 654        return res
 655
 656    async def remove_member(
 657        self,
 658        project_id: str,
 659        member_id: str,
 660        timeout: Optional[httpx.Timeout] = None,
 661        addons: Optional[Dict] = None,
 662        headers: Optional[Dict] = None,
 663        **kwargs,
 664    ) -> Message:
 665        """
 666        Removes a member from a project.
 667
 668        Reference:
 669        https://developers.deepgram.com/reference/remove-member
 670        """
 671        self._logger.debug("ManageClient.remove_member ENTER")
 672        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}"
 673        self._logger.info("url: %s", url)
 674        self._logger.info("project_id: %s", project_id)
 675        self._logger.info("member_id: %s", member_id)
 676        self._logger.info("addons: %s", addons)
 677        self._logger.info("headers: %s", headers)
 678        result = await self.delete(
 679            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 680        )
 681        self._logger.info("result: %s", result)
 682        res = Message.from_json(result)
 683        self._logger.verbose("result: %s", res)
 684        self._logger.notice("remove_member succeeded")
 685        self._logger.debug("ManageClient.remove_member LEAVE")
 686        return res
 687
 688    # scopes
 689    async def get_member_scopes(
 690        self,
 691        project_id: str,
 692        member_id: str,
 693        timeout: Optional[httpx.Timeout] = None,
 694        addons: Optional[Dict] = None,
 695        headers: Optional[Dict] = None,
 696        **kwargs,
 697    ) -> ScopesResponse:
 698        """
 699        Gets a list of scopes for a member.
 700
 701        Reference:
 702        https://developers.deepgram.com/reference/get-member-scopes
 703        """
 704        self._logger.debug("ManageClient.get_member_scopes ENTER")
 705        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}/scopes"
 706        self._logger.info("url: %s", url)
 707        self._logger.info("project_id: %s", project_id)
 708        self._logger.info("member_id: %s", member_id)
 709        self._logger.info("addons: %s", addons)
 710        self._logger.info("headers: %s", headers)
 711        result = await self.get(
 712            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 713        )
 714        self._logger.info("result: %s", result)
 715        res = ScopesResponse.from_json(result)
 716        self._logger.verbose("result: %s", res)
 717        self._logger.notice("get_member_scopes succeeded")
 718        self._logger.debug("ManageClient.get_member_scopes LEAVE")
 719        return res
 720
 721    async def update_member_scope(
 722        self,
 723        project_id: str,
 724        member_id: str,
 725        options: Union[Dict, ScopeOptions],
 726        timeout: Optional[httpx.Timeout] = None,
 727        addons: Optional[Dict] = None,
 728        headers: Optional[Dict] = None,
 729        **kwargs,
 730    ) -> Message:
 731        """
 732        Updates a member's scopes.
 733
 734        Reference:
 735        https://developers.deepgram.com/reference/update-scope
 736        """
 737        self._logger.debug("ManageClient.update_member_scope ENTER")
 738        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}/scopes"
 739        self._logger.info("url: %s", url)
 740        self._logger.info("project_id: %s", project_id)
 741        if isinstance(options, ScopeOptions):
 742            self._logger.info("ScopeOptions switching class -> dict")
 743            options = options.to_dict()
 744        self._logger.info("options: %s", options)
 745        self._logger.info("addons: %s", addons)
 746        self._logger.info("headers: %s", headers)
 747        result = await self.put(
 748            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 749        )
 750        self._logger.info("result: %s", result)
 751        res = Message.from_json(result)
 752        self._logger.verbose("result: %s", res)
 753        self._logger.notice("update_member_scope succeeded")
 754        self._logger.debug("ManageClient.update_member_scope LEAVE")
 755        return res
 756
 757    # invites
 758    async def list_invites(
 759        self,
 760        project_id: str,
 761        timeout: Optional[httpx.Timeout] = None,
 762        addons: Optional[Dict] = None,
 763        headers: Optional[Dict] = None,
 764        **kwargs,
 765    ) -> InvitesResponse:
 766        """
 767        Please see get_invites for more information.
 768        """
 769        return await self.get_invites(
 770            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
 771        )
 772
 773    async def get_invites(
 774        self,
 775        project_id: str,
 776        timeout: Optional[httpx.Timeout] = None,
 777        addons: Optional[Dict] = None,
 778        headers: Optional[Dict] = None,
 779        **kwargs,
 780    ) -> InvitesResponse:
 781        """
 782        Gets a list of invites for a project.
 783
 784        Reference:
 785        https://developers.deepgram.com/reference/list-invites
 786        """
 787        self._logger.debug("ManageClient.get_invites ENTER")
 788        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
 789        self._logger.info("url: %s", url)
 790        self._logger.info("project_id: %s", project_id)
 791        self._logger.info("addons: %s", addons)
 792        self._logger.info("headers: %s", headers)
 793        result = await self.get(
 794            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 795        )
 796        self._logger.info("result: %s", result)
 797        res = InvitesResponse.from_json(result)
 798        self._logger.verbose("result: %s", res)
 799        self._logger.notice("get_invites succeeded")
 800        self._logger.debug("ManageClient.get_invites LEAVE")
 801        return res
 802
 803    async def send_invite_options(
 804        self,
 805        project_id: str,
 806        options: Union[Dict, InviteOptions],
 807        timeout: Optional[httpx.Timeout] = None,
 808        addons: Optional[Dict] = None,
 809        headers: Optional[Dict] = None,
 810        **kwargs,
 811    ) -> Message:
 812        """
 813        Sends an invite to a project.
 814
 815        Reference:
 816        https://developers.deepgram.com/reference/send-invite
 817        """
 818        self._logger.debug("ManageClient.send_invite_options ENTER")
 819        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
 820        self._logger.info("url: %s", url)
 821        self._logger.info("project_id: %s", project_id)
 822        if isinstance(options, InviteOptions):
 823            self._logger.info("InviteOptions switching class -> dict")
 824            options = options.to_dict()
 825        self._logger.info("options: %s", options)
 826        self._logger.info("addons: %s", addons)
 827        self._logger.info("headers: %s", headers)
 828        result = await self.post(
 829            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 830        )
 831        self._logger.info("result: %s", result)
 832        res = Message.from_json(result)
 833        self._logger.verbose("result: %s", res)
 834        self._logger.notice("send_invite_options succeeded")
 835        self._logger.debug("ManageClient.send_invite_options LEAVE")
 836        return res
 837
 838    async def send_invite(
 839        self,
 840        project_id: str,
 841        email: str,
 842        scope="member",
 843        timeout: Optional[httpx.Timeout] = None,
 844        addons: Optional[Dict] = None,
 845        headers: Optional[Dict] = None,
 846        **kwargs,
 847    ) -> Message:
 848        """
 849        Sends an invite to a project.
 850
 851        Reference:
 852        https://developers.deepgram.com/reference/send-invite
 853        """
 854        self._logger.debug("ManageClient.send_invite ENTER")
 855        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
 856        options = {
 857            "email": email,
 858            "scope": scope,
 859        }
 860        self._logger.info("url: %s", url)
 861        self._logger.info("project_id: %s", project_id)
 862        self._logger.info("options: %s", options)
 863        self._logger.info("addons: %s", addons)
 864        self._logger.info("headers: %s", headers)
 865        result = await self.post(
 866            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 867        )
 868        self._logger.info("result: %s", result)
 869        res = Message.from_json(result)
 870        self._logger.verbose("result: %s", res)
 871        self._logger.notice("send_invite succeeded")
 872        self._logger.debug("ManageClient.send_invite LEAVE")
 873        return res
 874
 875    async def delete_invite(
 876        self,
 877        project_id: str,
 878        email: str,
 879        timeout: Optional[httpx.Timeout] = None,
 880        addons: Optional[Dict] = None,
 881        headers: Optional[Dict] = None,
 882        **kwargs,
 883    ) -> Message:
 884        """
 885        Deletes an invite from a project.
 886
 887        Reference:
 888        https://developers.deepgram.com/reference/delete-invite
 889        """
 890        self._logger.debug("ManageClient.delete_invite ENTER")
 891        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites/{email}"
 892        self._logger.info("url: %s", url)
 893        self._logger.info("project_id: %s", project_id)
 894        self._logger.info("email: %s", email)
 895        self._logger.info("addons: %s", addons)
 896        self._logger.info("headers: %s", headers)
 897        result = await self.delete(
 898            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 899        )
 900        self._logger.info("result: %s", result)
 901        res = Message.from_json(result)
 902        self._logger.verbose("result: %s", res)
 903        self._logger.notice("delete_invite succeeded")
 904        self._logger.debug("ManageClient.delete_invite LEAVE")
 905        return res
 906
 907    async def leave_project(
 908        self,
 909        project_id: str,
 910        timeout: Optional[httpx.Timeout] = None,
 911        addons: Optional[Dict] = None,
 912        headers: Optional[Dict] = None,
 913        **kwargs,
 914    ) -> Message:
 915        """
 916        Leaves a project.
 917
 918        Reference:
 919        https://developers.deepgram.com/reference/leave-project
 920        """
 921        self._logger.debug("ManageClient.leave_project ENTER")
 922        url = f"{self._config.url}/{self._endpoint}/{project_id}/leave"
 923        self._logger.info("url: %s", url)
 924        self._logger.info("project_id: %s", project_id)
 925        self._logger.info("addons: %s", addons)
 926        self._logger.info("headers: %s", headers)
 927        result = await self.delete(
 928            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 929        )
 930        self._logger.info("result: %s", result)
 931        res = Message.from_json(result)
 932        self._logger.verbose("result: %s", res)
 933        self._logger.notice("leave_project succeeded")
 934        self._logger.debug("ManageClient.leave_project LEAVE")
 935        return res
 936
 937    # usage
 938    async def get_usage_requests(
 939        self,
 940        project_id: str,
 941        options: Union[Dict, UsageRequestOptions],
 942        timeout: Optional[httpx.Timeout] = None,
 943        addons: Optional[Dict] = None,
 944        headers: Optional[Dict] = None,
 945        **kwargs,
 946    ) -> UsageRequestsResponse:
 947        """
 948        Gets a list of usage requests for a project.
 949
 950        Reference:
 951        https://developers.deepgram.com/reference/get-all-requests
 952        """
 953        self._logger.debug("ManageClient.get_usage_requests ENTER")
 954        url = f"{self._config.url}/{self._endpoint}/{project_id}/requests"
 955        self._logger.info("url: %s", url)
 956        self._logger.info("project_id: %s", project_id)
 957        if isinstance(options, UsageRequestOptions):
 958            self._logger.info("UsageRequestOptions switching class -> dict")
 959            options = options.to_dict()
 960        self._logger.info("options: %s", options)
 961        self._logger.info("addons: %s", addons)
 962        self._logger.info("headers: %s", headers)
 963        result = await self.get(
 964            url,
 965            options=options,
 966            timeout=timeout,
 967            addons=addons,
 968            headers=headers,
 969            **kwargs,
 970        )
 971        self._logger.info("result: %s", result)
 972        res = UsageRequestsResponse.from_json(result)
 973        self._logger.verbose("result: %s", res)
 974        self._logger.notice("get_usage_requests succeeded")
 975        self._logger.debug("ManageClient.get_usage_requests LEAVE")
 976        return res
 977
 978    async def get_usage_request(
 979        self,
 980        project_id: str,
 981        request_id: str,
 982        timeout: Optional[httpx.Timeout] = None,
 983        addons: Optional[Dict] = None,
 984        headers: Optional[Dict] = None,
 985        **kwargs,
 986    ) -> UsageRequest:
 987        """
 988        Gets details for a specific usage request.
 989
 990        Reference:
 991        https://developers.deepgram.com/reference/get-request
 992        """
 993        self._logger.debug("ManageClient.get_usage_request ENTER")
 994        url = f"{self._config.url}/{self._endpoint}/{project_id}/requests/{request_id}"
 995        self._logger.info("url: %s", url)
 996        self._logger.info("project_id: %s", project_id)
 997        self._logger.info("request_id: %s", request_id)
 998        self._logger.info("addons: %s", addons)
 999        self._logger.info("headers: %s", headers)
1000        result = await self.get(
1001            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1002        )
1003        self._logger.info("result: %s", result)
1004
1005        # convert str to JSON to check response field
1006        json_result = json.loads(result)
1007        if json_result.get("response") is None:
1008            raise DeepgramError(
1009                "Response is not available yet. Please try again later."
1010            )
1011
1012        res = UsageRequest.from_json(result)
1013        self._logger.verbose("result: %s", res)
1014        self._logger.notice("get_usage_request succeeded")
1015        self._logger.debug("ManageClient.get_usage_request LEAVE")
1016        return res
1017
1018    async def get_usage_summary(
1019        self,
1020        project_id: str,
1021        options: Union[Dict, UsageSummaryOptions],
1022        timeout: Optional[httpx.Timeout] = None,
1023        addons: Optional[Dict] = None,
1024        headers: Optional[Dict] = None,
1025        **kwargs,
1026    ) -> UsageSummaryResponse:
1027        """
1028        Gets a summary of usage for a project.
1029
1030        Reference:
1031        https://developers.deepgram.com/reference/summarize-usage
1032        """
1033        self._logger.debug("ManageClient.get_usage_summary ENTER")
1034        url = f"{self._config.url}/{self._endpoint}/{project_id}/usage"
1035        self._logger.info("url: %s", url)
1036        self._logger.info("project_id: %s", project_id)
1037        if isinstance(options, UsageSummaryOptions):
1038            self._logger.info("UsageSummaryOptions switching class -> dict")
1039            options = options.to_dict()
1040        self._logger.info("options: %s", options)
1041        self._logger.info("addons: %s", addons)
1042        self._logger.info("headers: %s", headers)
1043        result = await self.get(
1044            url,
1045            options=options,
1046            timeout=timeout,
1047            addons=addons,
1048            headers=headers,
1049            **kwargs,
1050        )
1051        self._logger.info("result: %s", result)
1052        res = UsageSummaryResponse.from_json(result)
1053        self._logger.verbose("result: %s", res)
1054        self._logger.notice("get_usage_summary succeeded")
1055        self._logger.debug("ManageClient.get_usage_summary LEAVE")
1056        return res
1057
1058    async def get_usage_fields(
1059        self,
1060        project_id: str,
1061        options: Union[Dict, UsageFieldsOptions],
1062        timeout: Optional[httpx.Timeout] = None,
1063        addons: Optional[Dict] = None,
1064        headers: Optional[Dict] = None,
1065        **kwargs,
1066    ) -> UsageFieldsResponse:
1067        """
1068        Gets a list of usage fields for a project.
1069
1070        Reference:
1071        https://developers.deepgram.com/reference/get-fields
1072        """
1073        self._logger.debug("ManageClient.get_usage_fields ENTER")
1074        url = f"{self._config.url}/{self._endpoint}/{project_id}/usage/fields"
1075        self._logger.info("url: %s", url)
1076        self._logger.info("project_id: %s", project_id)
1077        if isinstance(options, UsageFieldsOptions):
1078            self._logger.info("UsageFieldsOptions switching class -> dict")
1079            options = options.to_dict()
1080        self._logger.info("options: %s", options)
1081        self._logger.info("addons: %s", addons)
1082        self._logger.info("headers: %s", headers)
1083        result = await self.get(
1084            url,
1085            options=options,
1086            timeout=timeout,
1087            addons=addons,
1088            headers=headers,
1089            **kwargs,
1090        )
1091        self._logger.info("result: %s", result)
1092        res = UsageFieldsResponse.from_json(result)
1093        self._logger.verbose("result: %s", res)
1094        self._logger.notice("get_usage_fields succeeded")
1095        self._logger.debug("ManageClient.get_usage_fields LEAVE")
1096        return res
1097
1098    # balances
1099    async def list_balances(
1100        self,
1101        project_id: str,
1102        timeout: Optional[httpx.Timeout] = None,
1103        addons: Optional[Dict] = None,
1104        headers: Optional[Dict] = None,
1105        **kwargs,
1106    ) -> BalancesResponse:
1107        """
1108        Please see get_balances for more information.
1109        """
1110        return await self.get_balances(
1111            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
1112        )
1113
1114    async def get_balances(
1115        self,
1116        project_id: str,
1117        timeout: Optional[httpx.Timeout] = None,
1118        addons: Optional[Dict] = None,
1119        headers: Optional[Dict] = None,
1120        **kwargs,
1121    ) -> BalancesResponse:
1122        """
1123        Gets a list of balances for a project.
1124
1125        Reference:
1126        https://developers.deepgram.com/reference/get-all-balances
1127        """
1128        self._logger.debug("ManageClient.get_balances ENTER")
1129        url = f"{self._config.url}/{self._endpoint}/{project_id}/balances"
1130        self._logger.info("url: %s", url)
1131        self._logger.info("project_id: %s", project_id)
1132        self._logger.info("addons: %s", addons)
1133        self._logger.info("headers: %s", headers)
1134        result = await self.get(
1135            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1136        )
1137        self._logger.info("result: %s", result)
1138        res = BalancesResponse.from_json(result)
1139        self._logger.verbose("result: %s", res)
1140        self._logger.notice("get_balances succeeded")
1141        self._logger.debug("ManageClient.get_balances LEAVE")
1142        return res
1143
1144    async def get_balance(
1145        self,
1146        project_id: str,
1147        balance_id: str,
1148        timeout: Optional[httpx.Timeout] = None,
1149        addons: Optional[Dict] = None,
1150        headers: Optional[Dict] = None,
1151        **kwargs,
1152    ) -> Balance:
1153        """
1154        Gets details for a specific balance.
1155
1156        Reference:
1157        https://developers.deepgram.com/reference/get-balance
1158        """
1159        self._logger.debug("ManageClient.get_balance ENTER")
1160        url = f"{self._config.url}/{self._endpoint}/{project_id}/balances/{balance_id}"
1161        self._logger.info("url: %s", url)
1162        self._logger.info("project_id: %s", project_id)
1163        self._logger.info("balance_id: %s", balance_id)
1164        self._logger.info("addons: %s", addons)
1165        self._logger.info("headers: %s", headers)
1166        result = await self.get(
1167            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1168        )
1169        self._logger.info("result: %s", result)
1170        res = Balance.from_json(result)
1171        self._logger.verbose("result: %s", res)
1172        self._logger.notice("get_balance succeeded")
1173        self._logger.debug("ManageClient.get_balance LEAVE")
1174        return res
1175
1176    # pylint: enable=too-many-positional-arguments
  47class AsyncManageClient(
  48    AbstractAsyncRestClient
  49):  # pylint: disable=too-many-public-methods,too-many-lines
  50    """
  51    A client for managing Deepgram projects and associated resources via the Deepgram API.
  52
  53    This class provides methods for performing various operations on Deepgram projects, including:
  54    - Retrieving project details
  55    - Updating project settings
  56    - Managing project members and scopes
  57    - Handling project invitations
  58    - Monitoring project usage and balances
  59
  60    Args:
  61        config (DeepgramClientOptions): all the options for the client.
  62    """
  63
  64    _logger: verboselogs.VerboseLogger
  65    _config: DeepgramClientOptions
  66    _endpoint: str
  67
  68    def __init__(self, config: DeepgramClientOptions):
  69        self._logger = verboselogs.VerboseLogger(__name__)
  70        self._logger.addHandler(logging.StreamHandler())
  71        self._logger.setLevel(config.verbose)
  72        self._config = config
  73        self._endpoint = "v1/projects"
  74        super().__init__(config)
  75
  76    # pylint: disable=too-many-positional-arguments
  77
  78    # projects
  79    async def list_projects(
  80        self,
  81        timeout: Optional[httpx.Timeout] = None,
  82        addons: Optional[Dict] = None,
  83        headers: Optional[Dict] = None,
  84        **kwargs,
  85    ) -> ProjectsResponse:
  86        """
  87        Please see get_projects for more information.
  88        """
  89        return await self.get_projects(
  90            timeout=timeout, addons=addons, headers=headers, **kwargs
  91        )
  92
  93    async def get_projects(
  94        self,
  95        timeout: Optional[httpx.Timeout] = None,
  96        addons: Optional[Dict] = None,
  97        headers: Optional[Dict] = None,
  98        **kwargs,
  99    ) -> ProjectsResponse:
 100        """
 101        Gets a list of projects for the authenticated user.
 102
 103        Reference:
 104        https://developers.deepgram.com/reference/get-projects
 105        """
 106        self._logger.debug("ManageClient.get_projects ENTER")
 107        url = f"{self._config.url}/{self._endpoint}"
 108        self._logger.info("url: %s", url)
 109        self._logger.info("addons: %s", addons)
 110        self._logger.info("headers: %s", headers)
 111        result = await self.get(
 112            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 113        )
 114        self._logger.info("result: %s", result)
 115        res = ProjectsResponse.from_json(result)
 116        self._logger.verbose("result: %s", res)
 117        self._logger.notice("get_projects succeeded")
 118        self._logger.debug("ManageClient.get_projects LEAVE")
 119        return res
 120
 121    async def get_project(
 122        self,
 123        project_id: str,
 124        timeout: Optional[httpx.Timeout] = None,
 125        addons: Optional[Dict] = None,
 126        headers: Optional[Dict] = None,
 127        **kwargs,
 128    ) -> Project:
 129        """
 130        Gets details for a specific project.
 131
 132        Reference:
 133        https://developers.deepgram.com/reference/get-project
 134        """
 135        self._logger.debug("ManageClient.get_project ENTER")
 136        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 137        self._logger.info("url: %s", url)
 138        self._logger.info("project_id: %s", project_id)
 139        self._logger.info("addons: %s", addons)
 140        self._logger.info("headers: %s", headers)
 141        result = await self.get(
 142            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 143        )
 144        self._logger.info("result: %s", result)
 145        res = Project.from_json(result)
 146        self._logger.verbose("result: %s", res)
 147        self._logger.notice("get_project succeeded")
 148        self._logger.debug("ManageClient.get_project LEAVE")
 149        return res
 150
 151    async def update_project_option(
 152        self,
 153        project_id: str,
 154        options: Union[Dict, ProjectOptions],
 155        timeout: Optional[httpx.Timeout] = None,
 156        addons: Optional[Dict] = None,
 157        headers: Optional[Dict] = None,
 158        **kwargs,
 159    ) -> Message:
 160        """
 161        Updates a project's settings.
 162
 163        Reference:
 164        https://developers.deepgram.com/reference/update-project
 165        """
 166        self._logger.debug("ManageClient.update_project_option ENTER")
 167        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 168        self._logger.info("url: %s", url)
 169        self._logger.info("project_id: %s", project_id)
 170        if isinstance(options, ProjectOptions):
 171            self._logger.info("ProjectOptions switching class -> dict")
 172            options = options.to_dict()
 173        self._logger.info("options: %s", options)
 174        self._logger.info("addons: %s", addons)
 175        self._logger.info("headers: %s", headers)
 176        result = await self.patch(
 177            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 178        )
 179        self._logger.info("result: %s", result)
 180        res = Message.from_json(result)
 181        self._logger.verbose("result: %s", res)
 182        self._logger.notice("update_project_option succeeded")
 183        self._logger.debug("ManageClient.update_project_option LEAVE")
 184        return res
 185
 186    async def update_project(
 187        self,
 188        project_id: str,
 189        name="",
 190        timeout: Optional[httpx.Timeout] = None,
 191        addons: Optional[Dict] = None,
 192        headers: Optional[Dict] = None,
 193        **kwargs,
 194    ) -> Message:
 195        """
 196        Updates a project's settings.
 197
 198        Reference:
 199        https://developers.deepgram.com/reference/update-project
 200        """
 201        self._logger.debug("ManageClient.update_project ENTER")
 202        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 203        options = {
 204            "name": name,
 205        }
 206        self._logger.info("url: %s", url)
 207        self._logger.info("project_id: %s", project_id)
 208        self._logger.info("options: %s", options)
 209        self._logger.info("addons: %s", addons)
 210        self._logger.info("headers: %s", headers)
 211        result = await self.patch(
 212            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 213        )
 214        self._logger.info("result: %s", result)
 215        res = Message.from_json(result)
 216        self._logger.verbose("result: %s", res)
 217        self._logger.notice("update_project succeeded")
 218        self._logger.debug("ManageClient.update_project LEAVE")
 219        return res
 220
 221    async def delete_project(
 222        self,
 223        project_id: str,
 224        timeout: Optional[httpx.Timeout] = None,
 225        addons: Optional[Dict] = None,
 226        headers: Optional[Dict] = None,
 227        **kwargs,
 228    ) -> Message:
 229        """
 230        Deletes a project.
 231
 232        Reference:
 233        https://developers.deepgram.com/reference/delete-project
 234        """
 235        self._logger.debug("ManageClient.delete_project ENTER")
 236        url = f"{self._config.url}/{self._endpoint}/{project_id}"
 237        self._logger.info("addons: %s", addons)
 238        self._logger.info("headers: %s", headers)
 239        result = await self.delete(
 240            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 241        )
 242        self._logger.info("result: %s", result)
 243        res = Message.from_json(result)
 244        self._logger.verbose("result: %s", res)
 245        self._logger.notice("delete_project succeeded")
 246        self._logger.debug("ManageClient.delete_project LEAVE")
 247        return res
 248
 249    async def list_project_models(
 250        self,
 251        project_id: str,
 252        options: Optional[Union[Dict, ModelOptions]] = None,
 253        timeout: Optional[httpx.Timeout] = None,
 254        addons: Optional[Dict] = None,
 255        headers: Optional[Dict] = None,
 256        **kwargs,
 257    ) -> ModelsResponse:
 258        """
 259        Please see get_project_models.
 260        """
 261        return await self.get_project_models(
 262            project_id,
 263            options=options,
 264            timeout=timeout,
 265            addons=addons,
 266            headers=headers,
 267            **kwargs,
 268        )
 269
 270    async def get_project_models(
 271        self,
 272        project_id: str,
 273        options: Optional[Union[Dict, ModelOptions]] = None,
 274        timeout: Optional[httpx.Timeout] = None,
 275        addons: Optional[Dict] = None,
 276        headers: Optional[Dict] = None,
 277        **kwargs,
 278    ) -> ModelsResponse:
 279        """
 280        Gets models for a specific project.
 281
 282        Reference:
 283        https://developers.deepgram.com/reference/get-project
 284        https://developers.deepgram.com/reference/get-model
 285
 286        Args:
 287            project_id (str): The ID of the project.
 288            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 289            addons (Optional[Dict]): Additional options for the request.
 290            headers (Optional[Dict]): Headers to include in the request.
 291            **kwargs: Additional keyword arguments.
 292
 293        Returns:
 294            ModelsResponse: A response object containing the model details.
 295        """
 296        self._logger.debug("ManageClient.get_project_models ENTER")
 297
 298        if options is None:
 299            options = ModelOptions()
 300
 301        url = f"{self._config.url}/{self._endpoint}/{project_id}/models"
 302        self._logger.info("url: %s", url)
 303        self._logger.info("project_id: %s", project_id)
 304        if isinstance(options, ModelOptions):
 305            self._logger.info("ModelOptions switching class -> dict")
 306            options = options.to_dict()
 307        self._logger.info("options: %s", options)
 308        self._logger.info("addons: %s", addons)
 309        self._logger.info("headers: %s", headers)
 310        result = await self.get(
 311            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 312        )
 313        self._logger.info("json: %s", result)
 314        res = ModelsResponse.from_json(result)
 315        self._logger.verbose("result: %s", res)
 316        self._logger.notice("get_project_models succeeded")
 317        self._logger.debug("ManageClient.get_project_models LEAVE")
 318        return res
 319
 320    async def get_project_model(
 321        self,
 322        project_id: str,
 323        model_id: str,
 324        timeout: Optional[httpx.Timeout] = None,
 325        addons: Optional[Dict] = None,
 326        headers: Optional[Dict] = None,
 327        **kwargs,
 328    ) -> ModelResponse:
 329        """
 330        Gets a single model for a specific project.
 331
 332        Reference:
 333        https://developers.deepgram.com/reference/get-project
 334        https://developers.deepgram.com/reference/get-model
 335
 336        Args:
 337            project_id (str): The ID of the project.
 338            model_id (str): The ID of the model.
 339            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 340            addons (Optional[Dict]): Additional options for the request.
 341            headers (Optional[Dict]): Headers to include in the request.
 342            **kwargs: Additional keyword arguments.
 343
 344        Returns:
 345            ModelResponse: A response object containing the model details.
 346        """
 347        self._logger.debug("ManageClient.get_project_model ENTER")
 348        url = f"{self._config.url}/{self._endpoint}/{project_id}/models/{model_id}"
 349        self._logger.info("url: %s", url)
 350        self._logger.info("project_id: %s", project_id)
 351        self._logger.info("model_id: %s", model_id)
 352        self._logger.info("addons: %s", addons)
 353        self._logger.info("headers: %s", headers)
 354        result = await self.get(
 355            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 356        )
 357        self._logger.info("json: %s", result)
 358        res = ModelResponse.from_json(result)
 359        self._logger.verbose("result: %s", res)
 360        self._logger.notice("get_project_model succeeded")
 361        self._logger.debug("ManageClient.get_project_model LEAVE")
 362        return res
 363
 364    # models
 365    async def list_models(
 366        self,
 367        options: Optional[Union[Dict, ModelOptions]] = None,
 368        timeout: Optional[httpx.Timeout] = None,
 369        addons: Optional[Dict] = None,
 370        headers: Optional[Dict] = None,
 371        **kwargs,
 372    ) -> ModelsResponse:
 373        """
 374        Please see get_models for more information.
 375        """
 376        return await self.get_models(
 377            options=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 378        )
 379
 380    async def get_models(
 381        self,
 382        options: Optional[Union[Dict, ModelOptions]] = None,
 383        timeout: Optional[httpx.Timeout] = None,
 384        addons: Optional[Dict] = None,
 385        headers: Optional[Dict] = None,
 386        **kwargs,
 387    ) -> ModelsResponse:
 388        """
 389        Gets all models available.
 390
 391        Reference:
 392        https://developers.deepgram.com/reference/get-model
 393
 394        Args:
 395            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 396            addons (Optional[Dict]): Additional options for the request.
 397            headers (Optional[Dict]): Headers to include in the request.
 398            **kwargs: Additional keyword arguments.
 399
 400        Returns:
 401            ModelsResponse: A response object containing the model details.
 402        """
 403        self._logger.debug("ManageClient.get_models ENTER")
 404
 405        if options is None:
 406            options = ModelOptions()
 407
 408        url = f"{self._config.url}/v1/models"
 409        self._logger.info("url: %s", url)
 410        if isinstance(options, ModelOptions):
 411            self._logger.info("ModelOptions switching class -> dict")
 412            options = options.to_dict()
 413        self._logger.info("options: %s", options)
 414        self._logger.info("addons: %s", addons)
 415        self._logger.info("headers: %s", headers)
 416        result = await self.get(
 417            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 418        )
 419        self._logger.info("result: %s", result)
 420        res = ModelsResponse.from_json(result)
 421        self._logger.verbose("result: %s", res)
 422        self._logger.notice("get_models succeeded")
 423        self._logger.debug("ManageClient.get_models LEAVE")
 424        return res
 425
 426    async def get_model(
 427        self,
 428        model_id: str,
 429        timeout: Optional[httpx.Timeout] = None,
 430        addons: Optional[Dict] = None,
 431        headers: Optional[Dict] = None,
 432        **kwargs,
 433    ) -> ModelResponse:
 434        """
 435        Gets information for a specific model.
 436
 437        Reference:
 438        https://developers.deepgram.com/reference/get-model
 439
 440        Args:
 441            model_id (str): The ID of the model.
 442            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
 443            addons (Optional[Dict]): Additional options for the request.
 444            headers (Optional[Dict]): Headers to include in the request.
 445            **kwargs: Additional keyword arguments.
 446
 447        Returns:
 448            ModelResponse: A response object containing the model details.
 449        """
 450        self._logger.debug("ManageClient.get_model ENTER")
 451        url = f"{self._config.url}/v1/models/{model_id}"
 452        self._logger.info("url: %s", url)
 453        self._logger.info("model_id: %s", model_id)
 454        self._logger.info("addons: %s", addons)
 455        self._logger.info("headers: %s", headers)
 456        result = await self.get(
 457            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 458        )
 459        self._logger.info("result: %s", result)
 460        res = ModelResponse.from_json(result)
 461        self._logger.verbose("result: %s", res)
 462        self._logger.notice("get_model succeeded")
 463        self._logger.debug("ManageClient.get_model LEAVE")
 464        return res
 465
 466    # keys
 467    async def list_keys(
 468        self,
 469        project_id: str,
 470        timeout: Optional[httpx.Timeout] = None,
 471        addons: Optional[Dict] = None,
 472        headers: Optional[Dict] = None,
 473        **kwargs,
 474    ) -> KeysResponse:
 475        """
 476        Please see get_keys for more information.
 477        """
 478        return await self.get_keys(
 479            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
 480        )
 481
 482    async def get_keys(
 483        self,
 484        project_id: str,
 485        timeout: Optional[httpx.Timeout] = None,
 486        addons: Optional[Dict] = None,
 487        headers: Optional[Dict] = None,
 488        **kwargs,
 489    ) -> KeysResponse:
 490        """
 491        Gets a list of keys for a project.
 492
 493        Reference:
 494        https://developers.deepgram.com/reference/list-keys
 495        """
 496        self._logger.debug("ManageClient.get_keys ENTER")
 497        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys"
 498        self._logger.info("url: %s", url)
 499        self._logger.info("project_id: %s", project_id)
 500        self._logger.info("addons: %s", addons)
 501        self._logger.info("headers: %s", headers)
 502        result = await self.get(
 503            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 504        )
 505        self._logger.info("result: %s", result)
 506        res = KeysResponse.from_json(result)
 507        self._logger.verbose("result: %s", res)
 508        self._logger.notice("get_keys succeeded")
 509        self._logger.debug("ManageClient.get_keys LEAVE")
 510        return res
 511
 512    async def get_key(
 513        self,
 514        project_id: str,
 515        key_id: str,
 516        timeout: Optional[httpx.Timeout] = None,
 517        addons: Optional[Dict] = None,
 518        headers: Optional[Dict] = None,
 519        **kwargs,
 520    ) -> KeyResponse:
 521        """
 522        Gets details for a specific key.
 523
 524        Reference:
 525        https://developers.deepgram.com/reference/get-key
 526        """
 527        self._logger.debug("ManageClient.get_key ENTER")
 528        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys/{key_id}"
 529        self._logger.info("url: %s", url)
 530        self._logger.info("project_id: %s", project_id)
 531        self._logger.info("key_id: %s", key_id)
 532        self._logger.info("addons: %s", addons)
 533        self._logger.info("headers: %s", headers)
 534        result = await self.get(
 535            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 536        )
 537        self._logger.info("result: %s", result)
 538        res = KeyResponse.from_json(result)
 539        self._logger.verbose("result: %s", res)
 540        self._logger.notice("get_key succeeded")
 541        self._logger.debug("ManageClient.get_key LEAVE")
 542        return res
 543
 544    async def create_key(
 545        self,
 546        project_id: str,
 547        options: Union[Dict, KeyOptions],
 548        timeout: Optional[httpx.Timeout] = None,
 549        addons: Optional[Dict] = None,
 550        headers: Optional[Dict] = None,
 551        **kwargs,
 552    ) -> Key:
 553        """
 554        Creates a new key.
 555
 556        Reference:
 557        https://developers.deepgram.com/reference/create-key
 558        """
 559        self._logger.debug("ManageClient.create_key ENTER")
 560        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys"
 561        self._logger.info("url: %s", url)
 562        self._logger.info("project_id: %s", project_id)
 563        if isinstance(options, KeyOptions):
 564            self._logger.info("KeyOptions switching class -> dict")
 565            options = options.to_dict()
 566        self._logger.info("options: %s", options)
 567        self._logger.info("addons: %s", addons)
 568        self._logger.info("headers: %s", headers)
 569        result = await self.post(
 570            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 571        )
 572        self._logger.info("result: %s", result)
 573        res = Key.from_json(result)
 574        self._logger.verbose("result: %s", res)
 575        self._logger.notice("create_key succeeded")
 576        self._logger.debug("ManageClient.create_key LEAVE")
 577        return res
 578
 579    async def delete_key(
 580        self,
 581        project_id: str,
 582        key_id: str,
 583        timeout: Optional[httpx.Timeout] = None,
 584        addons: Optional[Dict] = None,
 585        headers: Optional[Dict] = None,
 586        **kwargs,
 587    ) -> Message:
 588        """
 589        Deletes a key.
 590
 591        Reference:
 592        https://developers.deepgram.com/reference/delete-key
 593        """
 594        self._logger.debug("ManageClient.delete_key ENTER")
 595        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys/{key_id}"
 596        self._logger.info("url: %s", url)
 597        self._logger.info("project_id: %s", project_id)
 598        self._logger.info("key_id: %s", key_id)
 599        self._logger.info("addons: %s", addons)
 600        self._logger.info("headers: %s", headers)
 601        result = await self.delete(
 602            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 603        )
 604        self._logger.info("result: %s", result)
 605        res = Message.from_json(result)
 606        self._logger.verbose("result: %s", res)
 607        self._logger.notice("delete_key succeeded")
 608        self._logger.debug("ManageClient.delete_key LEAVE")
 609        return res
 610
 611    # members
 612    async def list_members(
 613        self,
 614        project_id: str,
 615        timeout: Optional[httpx.Timeout] = None,
 616        addons: Optional[Dict] = None,
 617        headers: Optional[Dict] = None,
 618        **kwargs,
 619    ) -> MembersResponse:
 620        """
 621        Please see get_members for more information.
 622        """
 623        return await self.get_members(
 624            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
 625        )
 626
 627    async def get_members(
 628        self,
 629        project_id: str,
 630        timeout: Optional[httpx.Timeout] = None,
 631        addons: Optional[Dict] = None,
 632        headers: Optional[Dict] = None,
 633        **kwargs,
 634    ) -> MembersResponse:
 635        """
 636        Gets a list of members for a project.
 637
 638        Reference:
 639        https://developers.deepgram.com/reference/get-members
 640        """
 641        self._logger.debug("ManageClient.get_members ENTER")
 642        url = f"{self._config.url}/{self._endpoint}/{project_id}/members"
 643        self._logger.info("url: %s", url)
 644        self._logger.info("project_id: %s", project_id)
 645        self._logger.info("addons: %s", addons)
 646        self._logger.info("headers: %s", headers)
 647        result = await self.get(
 648            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 649        )
 650        self._logger.info("result: %s", result)
 651        res = MembersResponse.from_json(result)
 652        self._logger.verbose("result: %s", res)
 653        self._logger.notice("get_members succeeded")
 654        self._logger.debug("ManageClient.get_members LEAVE")
 655        return res
 656
 657    async def remove_member(
 658        self,
 659        project_id: str,
 660        member_id: str,
 661        timeout: Optional[httpx.Timeout] = None,
 662        addons: Optional[Dict] = None,
 663        headers: Optional[Dict] = None,
 664        **kwargs,
 665    ) -> Message:
 666        """
 667        Removes a member from a project.
 668
 669        Reference:
 670        https://developers.deepgram.com/reference/remove-member
 671        """
 672        self._logger.debug("ManageClient.remove_member ENTER")
 673        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}"
 674        self._logger.info("url: %s", url)
 675        self._logger.info("project_id: %s", project_id)
 676        self._logger.info("member_id: %s", member_id)
 677        self._logger.info("addons: %s", addons)
 678        self._logger.info("headers: %s", headers)
 679        result = await self.delete(
 680            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 681        )
 682        self._logger.info("result: %s", result)
 683        res = Message.from_json(result)
 684        self._logger.verbose("result: %s", res)
 685        self._logger.notice("remove_member succeeded")
 686        self._logger.debug("ManageClient.remove_member LEAVE")
 687        return res
 688
 689    # scopes
 690    async def get_member_scopes(
 691        self,
 692        project_id: str,
 693        member_id: str,
 694        timeout: Optional[httpx.Timeout] = None,
 695        addons: Optional[Dict] = None,
 696        headers: Optional[Dict] = None,
 697        **kwargs,
 698    ) -> ScopesResponse:
 699        """
 700        Gets a list of scopes for a member.
 701
 702        Reference:
 703        https://developers.deepgram.com/reference/get-member-scopes
 704        """
 705        self._logger.debug("ManageClient.get_member_scopes ENTER")
 706        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}/scopes"
 707        self._logger.info("url: %s", url)
 708        self._logger.info("project_id: %s", project_id)
 709        self._logger.info("member_id: %s", member_id)
 710        self._logger.info("addons: %s", addons)
 711        self._logger.info("headers: %s", headers)
 712        result = await self.get(
 713            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 714        )
 715        self._logger.info("result: %s", result)
 716        res = ScopesResponse.from_json(result)
 717        self._logger.verbose("result: %s", res)
 718        self._logger.notice("get_member_scopes succeeded")
 719        self._logger.debug("ManageClient.get_member_scopes LEAVE")
 720        return res
 721
 722    async def update_member_scope(
 723        self,
 724        project_id: str,
 725        member_id: str,
 726        options: Union[Dict, ScopeOptions],
 727        timeout: Optional[httpx.Timeout] = None,
 728        addons: Optional[Dict] = None,
 729        headers: Optional[Dict] = None,
 730        **kwargs,
 731    ) -> Message:
 732        """
 733        Updates a member's scopes.
 734
 735        Reference:
 736        https://developers.deepgram.com/reference/update-scope
 737        """
 738        self._logger.debug("ManageClient.update_member_scope ENTER")
 739        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}/scopes"
 740        self._logger.info("url: %s", url)
 741        self._logger.info("project_id: %s", project_id)
 742        if isinstance(options, ScopeOptions):
 743            self._logger.info("ScopeOptions switching class -> dict")
 744            options = options.to_dict()
 745        self._logger.info("options: %s", options)
 746        self._logger.info("addons: %s", addons)
 747        self._logger.info("headers: %s", headers)
 748        result = await self.put(
 749            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 750        )
 751        self._logger.info("result: %s", result)
 752        res = Message.from_json(result)
 753        self._logger.verbose("result: %s", res)
 754        self._logger.notice("update_member_scope succeeded")
 755        self._logger.debug("ManageClient.update_member_scope LEAVE")
 756        return res
 757
 758    # invites
 759    async def list_invites(
 760        self,
 761        project_id: str,
 762        timeout: Optional[httpx.Timeout] = None,
 763        addons: Optional[Dict] = None,
 764        headers: Optional[Dict] = None,
 765        **kwargs,
 766    ) -> InvitesResponse:
 767        """
 768        Please see get_invites for more information.
 769        """
 770        return await self.get_invites(
 771            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
 772        )
 773
 774    async def get_invites(
 775        self,
 776        project_id: str,
 777        timeout: Optional[httpx.Timeout] = None,
 778        addons: Optional[Dict] = None,
 779        headers: Optional[Dict] = None,
 780        **kwargs,
 781    ) -> InvitesResponse:
 782        """
 783        Gets a list of invites for a project.
 784
 785        Reference:
 786        https://developers.deepgram.com/reference/list-invites
 787        """
 788        self._logger.debug("ManageClient.get_invites ENTER")
 789        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
 790        self._logger.info("url: %s", url)
 791        self._logger.info("project_id: %s", project_id)
 792        self._logger.info("addons: %s", addons)
 793        self._logger.info("headers: %s", headers)
 794        result = await self.get(
 795            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 796        )
 797        self._logger.info("result: %s", result)
 798        res = InvitesResponse.from_json(result)
 799        self._logger.verbose("result: %s", res)
 800        self._logger.notice("get_invites succeeded")
 801        self._logger.debug("ManageClient.get_invites LEAVE")
 802        return res
 803
 804    async def send_invite_options(
 805        self,
 806        project_id: str,
 807        options: Union[Dict, InviteOptions],
 808        timeout: Optional[httpx.Timeout] = None,
 809        addons: Optional[Dict] = None,
 810        headers: Optional[Dict] = None,
 811        **kwargs,
 812    ) -> Message:
 813        """
 814        Sends an invite to a project.
 815
 816        Reference:
 817        https://developers.deepgram.com/reference/send-invite
 818        """
 819        self._logger.debug("ManageClient.send_invite_options ENTER")
 820        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
 821        self._logger.info("url: %s", url)
 822        self._logger.info("project_id: %s", project_id)
 823        if isinstance(options, InviteOptions):
 824            self._logger.info("InviteOptions switching class -> dict")
 825            options = options.to_dict()
 826        self._logger.info("options: %s", options)
 827        self._logger.info("addons: %s", addons)
 828        self._logger.info("headers: %s", headers)
 829        result = await self.post(
 830            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 831        )
 832        self._logger.info("result: %s", result)
 833        res = Message.from_json(result)
 834        self._logger.verbose("result: %s", res)
 835        self._logger.notice("send_invite_options succeeded")
 836        self._logger.debug("ManageClient.send_invite_options LEAVE")
 837        return res
 838
 839    async def send_invite(
 840        self,
 841        project_id: str,
 842        email: str,
 843        scope="member",
 844        timeout: Optional[httpx.Timeout] = None,
 845        addons: Optional[Dict] = None,
 846        headers: Optional[Dict] = None,
 847        **kwargs,
 848    ) -> Message:
 849        """
 850        Sends an invite to a project.
 851
 852        Reference:
 853        https://developers.deepgram.com/reference/send-invite
 854        """
 855        self._logger.debug("ManageClient.send_invite ENTER")
 856        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
 857        options = {
 858            "email": email,
 859            "scope": scope,
 860        }
 861        self._logger.info("url: %s", url)
 862        self._logger.info("project_id: %s", project_id)
 863        self._logger.info("options: %s", options)
 864        self._logger.info("addons: %s", addons)
 865        self._logger.info("headers: %s", headers)
 866        result = await self.post(
 867            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
 868        )
 869        self._logger.info("result: %s", result)
 870        res = Message.from_json(result)
 871        self._logger.verbose("result: %s", res)
 872        self._logger.notice("send_invite succeeded")
 873        self._logger.debug("ManageClient.send_invite LEAVE")
 874        return res
 875
 876    async def delete_invite(
 877        self,
 878        project_id: str,
 879        email: str,
 880        timeout: Optional[httpx.Timeout] = None,
 881        addons: Optional[Dict] = None,
 882        headers: Optional[Dict] = None,
 883        **kwargs,
 884    ) -> Message:
 885        """
 886        Deletes an invite from a project.
 887
 888        Reference:
 889        https://developers.deepgram.com/reference/delete-invite
 890        """
 891        self._logger.debug("ManageClient.delete_invite ENTER")
 892        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites/{email}"
 893        self._logger.info("url: %s", url)
 894        self._logger.info("project_id: %s", project_id)
 895        self._logger.info("email: %s", email)
 896        self._logger.info("addons: %s", addons)
 897        self._logger.info("headers: %s", headers)
 898        result = await self.delete(
 899            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 900        )
 901        self._logger.info("result: %s", result)
 902        res = Message.from_json(result)
 903        self._logger.verbose("result: %s", res)
 904        self._logger.notice("delete_invite succeeded")
 905        self._logger.debug("ManageClient.delete_invite LEAVE")
 906        return res
 907
 908    async def leave_project(
 909        self,
 910        project_id: str,
 911        timeout: Optional[httpx.Timeout] = None,
 912        addons: Optional[Dict] = None,
 913        headers: Optional[Dict] = None,
 914        **kwargs,
 915    ) -> Message:
 916        """
 917        Leaves a project.
 918
 919        Reference:
 920        https://developers.deepgram.com/reference/leave-project
 921        """
 922        self._logger.debug("ManageClient.leave_project ENTER")
 923        url = f"{self._config.url}/{self._endpoint}/{project_id}/leave"
 924        self._logger.info("url: %s", url)
 925        self._logger.info("project_id: %s", project_id)
 926        self._logger.info("addons: %s", addons)
 927        self._logger.info("headers: %s", headers)
 928        result = await self.delete(
 929            url, timeout=timeout, addons=addons, headers=headers, **kwargs
 930        )
 931        self._logger.info("result: %s", result)
 932        res = Message.from_json(result)
 933        self._logger.verbose("result: %s", res)
 934        self._logger.notice("leave_project succeeded")
 935        self._logger.debug("ManageClient.leave_project LEAVE")
 936        return res
 937
 938    # usage
 939    async def get_usage_requests(
 940        self,
 941        project_id: str,
 942        options: Union[Dict, UsageRequestOptions],
 943        timeout: Optional[httpx.Timeout] = None,
 944        addons: Optional[Dict] = None,
 945        headers: Optional[Dict] = None,
 946        **kwargs,
 947    ) -> UsageRequestsResponse:
 948        """
 949        Gets a list of usage requests for a project.
 950
 951        Reference:
 952        https://developers.deepgram.com/reference/get-all-requests
 953        """
 954        self._logger.debug("ManageClient.get_usage_requests ENTER")
 955        url = f"{self._config.url}/{self._endpoint}/{project_id}/requests"
 956        self._logger.info("url: %s", url)
 957        self._logger.info("project_id: %s", project_id)
 958        if isinstance(options, UsageRequestOptions):
 959            self._logger.info("UsageRequestOptions switching class -> dict")
 960            options = options.to_dict()
 961        self._logger.info("options: %s", options)
 962        self._logger.info("addons: %s", addons)
 963        self._logger.info("headers: %s", headers)
 964        result = await self.get(
 965            url,
 966            options=options,
 967            timeout=timeout,
 968            addons=addons,
 969            headers=headers,
 970            **kwargs,
 971        )
 972        self._logger.info("result: %s", result)
 973        res = UsageRequestsResponse.from_json(result)
 974        self._logger.verbose("result: %s", res)
 975        self._logger.notice("get_usage_requests succeeded")
 976        self._logger.debug("ManageClient.get_usage_requests LEAVE")
 977        return res
 978
 979    async def get_usage_request(
 980        self,
 981        project_id: str,
 982        request_id: str,
 983        timeout: Optional[httpx.Timeout] = None,
 984        addons: Optional[Dict] = None,
 985        headers: Optional[Dict] = None,
 986        **kwargs,
 987    ) -> UsageRequest:
 988        """
 989        Gets details for a specific usage request.
 990
 991        Reference:
 992        https://developers.deepgram.com/reference/get-request
 993        """
 994        self._logger.debug("ManageClient.get_usage_request ENTER")
 995        url = f"{self._config.url}/{self._endpoint}/{project_id}/requests/{request_id}"
 996        self._logger.info("url: %s", url)
 997        self._logger.info("project_id: %s", project_id)
 998        self._logger.info("request_id: %s", request_id)
 999        self._logger.info("addons: %s", addons)
1000        self._logger.info("headers: %s", headers)
1001        result = await self.get(
1002            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1003        )
1004        self._logger.info("result: %s", result)
1005
1006        # convert str to JSON to check response field
1007        json_result = json.loads(result)
1008        if json_result.get("response") is None:
1009            raise DeepgramError(
1010                "Response is not available yet. Please try again later."
1011            )
1012
1013        res = UsageRequest.from_json(result)
1014        self._logger.verbose("result: %s", res)
1015        self._logger.notice("get_usage_request succeeded")
1016        self._logger.debug("ManageClient.get_usage_request LEAVE")
1017        return res
1018
1019    async def get_usage_summary(
1020        self,
1021        project_id: str,
1022        options: Union[Dict, UsageSummaryOptions],
1023        timeout: Optional[httpx.Timeout] = None,
1024        addons: Optional[Dict] = None,
1025        headers: Optional[Dict] = None,
1026        **kwargs,
1027    ) -> UsageSummaryResponse:
1028        """
1029        Gets a summary of usage for a project.
1030
1031        Reference:
1032        https://developers.deepgram.com/reference/summarize-usage
1033        """
1034        self._logger.debug("ManageClient.get_usage_summary ENTER")
1035        url = f"{self._config.url}/{self._endpoint}/{project_id}/usage"
1036        self._logger.info("url: %s", url)
1037        self._logger.info("project_id: %s", project_id)
1038        if isinstance(options, UsageSummaryOptions):
1039            self._logger.info("UsageSummaryOptions switching class -> dict")
1040            options = options.to_dict()
1041        self._logger.info("options: %s", options)
1042        self._logger.info("addons: %s", addons)
1043        self._logger.info("headers: %s", headers)
1044        result = await self.get(
1045            url,
1046            options=options,
1047            timeout=timeout,
1048            addons=addons,
1049            headers=headers,
1050            **kwargs,
1051        )
1052        self._logger.info("result: %s", result)
1053        res = UsageSummaryResponse.from_json(result)
1054        self._logger.verbose("result: %s", res)
1055        self._logger.notice("get_usage_summary succeeded")
1056        self._logger.debug("ManageClient.get_usage_summary LEAVE")
1057        return res
1058
1059    async def get_usage_fields(
1060        self,
1061        project_id: str,
1062        options: Union[Dict, UsageFieldsOptions],
1063        timeout: Optional[httpx.Timeout] = None,
1064        addons: Optional[Dict] = None,
1065        headers: Optional[Dict] = None,
1066        **kwargs,
1067    ) -> UsageFieldsResponse:
1068        """
1069        Gets a list of usage fields for a project.
1070
1071        Reference:
1072        https://developers.deepgram.com/reference/get-fields
1073        """
1074        self._logger.debug("ManageClient.get_usage_fields ENTER")
1075        url = f"{self._config.url}/{self._endpoint}/{project_id}/usage/fields"
1076        self._logger.info("url: %s", url)
1077        self._logger.info("project_id: %s", project_id)
1078        if isinstance(options, UsageFieldsOptions):
1079            self._logger.info("UsageFieldsOptions switching class -> dict")
1080            options = options.to_dict()
1081        self._logger.info("options: %s", options)
1082        self._logger.info("addons: %s", addons)
1083        self._logger.info("headers: %s", headers)
1084        result = await self.get(
1085            url,
1086            options=options,
1087            timeout=timeout,
1088            addons=addons,
1089            headers=headers,
1090            **kwargs,
1091        )
1092        self._logger.info("result: %s", result)
1093        res = UsageFieldsResponse.from_json(result)
1094        self._logger.verbose("result: %s", res)
1095        self._logger.notice("get_usage_fields succeeded")
1096        self._logger.debug("ManageClient.get_usage_fields LEAVE")
1097        return res
1098
1099    # balances
1100    async def list_balances(
1101        self,
1102        project_id: str,
1103        timeout: Optional[httpx.Timeout] = None,
1104        addons: Optional[Dict] = None,
1105        headers: Optional[Dict] = None,
1106        **kwargs,
1107    ) -> BalancesResponse:
1108        """
1109        Please see get_balances for more information.
1110        """
1111        return await self.get_balances(
1112            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
1113        )
1114
1115    async def get_balances(
1116        self,
1117        project_id: str,
1118        timeout: Optional[httpx.Timeout] = None,
1119        addons: Optional[Dict] = None,
1120        headers: Optional[Dict] = None,
1121        **kwargs,
1122    ) -> BalancesResponse:
1123        """
1124        Gets a list of balances for a project.
1125
1126        Reference:
1127        https://developers.deepgram.com/reference/get-all-balances
1128        """
1129        self._logger.debug("ManageClient.get_balances ENTER")
1130        url = f"{self._config.url}/{self._endpoint}/{project_id}/balances"
1131        self._logger.info("url: %s", url)
1132        self._logger.info("project_id: %s", project_id)
1133        self._logger.info("addons: %s", addons)
1134        self._logger.info("headers: %s", headers)
1135        result = await self.get(
1136            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1137        )
1138        self._logger.info("result: %s", result)
1139        res = BalancesResponse.from_json(result)
1140        self._logger.verbose("result: %s", res)
1141        self._logger.notice("get_balances succeeded")
1142        self._logger.debug("ManageClient.get_balances LEAVE")
1143        return res
1144
1145    async def get_balance(
1146        self,
1147        project_id: str,
1148        balance_id: str,
1149        timeout: Optional[httpx.Timeout] = None,
1150        addons: Optional[Dict] = None,
1151        headers: Optional[Dict] = None,
1152        **kwargs,
1153    ) -> Balance:
1154        """
1155        Gets details for a specific balance.
1156
1157        Reference:
1158        https://developers.deepgram.com/reference/get-balance
1159        """
1160        self._logger.debug("ManageClient.get_balance ENTER")
1161        url = f"{self._config.url}/{self._endpoint}/{project_id}/balances/{balance_id}"
1162        self._logger.info("url: %s", url)
1163        self._logger.info("project_id: %s", project_id)
1164        self._logger.info("balance_id: %s", balance_id)
1165        self._logger.info("addons: %s", addons)
1166        self._logger.info("headers: %s", headers)
1167        result = await self.get(
1168            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1169        )
1170        self._logger.info("result: %s", result)
1171        res = Balance.from_json(result)
1172        self._logger.verbose("result: %s", res)
1173        self._logger.notice("get_balance succeeded")
1174        self._logger.debug("ManageClient.get_balance LEAVE")
1175        return res
1176
1177    # pylint: enable=too-many-positional-arguments

A client for managing Deepgram projects and associated resources via the Deepgram API.

This class provides methods for performing various operations on Deepgram projects, including:

  • Retrieving project details
  • Updating project settings
  • Managing project members and scopes
  • Handling project invitations
  • Monitoring project usage and balances

Args: config (DeepgramClientOptions): all the options for the client.

AsyncManageClient(config: deepgram.options.DeepgramClientOptions)
68    def __init__(self, config: DeepgramClientOptions):
69        self._logger = verboselogs.VerboseLogger(__name__)
70        self._logger.addHandler(logging.StreamHandler())
71        self._logger.setLevel(config.verbose)
72        self._config = config
73        self._endpoint = "v1/projects"
74        super().__init__(config)
async def list_projects( self, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ProjectsResponse:
79    async def list_projects(
80        self,
81        timeout: Optional[httpx.Timeout] = None,
82        addons: Optional[Dict] = None,
83        headers: Optional[Dict] = None,
84        **kwargs,
85    ) -> ProjectsResponse:
86        """
87        Please see get_projects for more information.
88        """
89        return await self.get_projects(
90            timeout=timeout, addons=addons, headers=headers, **kwargs
91        )

Please see get_projects for more information.

async def get_projects( self, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ProjectsResponse:
 93    async def get_projects(
 94        self,
 95        timeout: Optional[httpx.Timeout] = None,
 96        addons: Optional[Dict] = None,
 97        headers: Optional[Dict] = None,
 98        **kwargs,
 99    ) -> ProjectsResponse:
100        """
101        Gets a list of projects for the authenticated user.
102
103        Reference:
104        https://developers.deepgram.com/reference/get-projects
105        """
106        self._logger.debug("ManageClient.get_projects ENTER")
107        url = f"{self._config.url}/{self._endpoint}"
108        self._logger.info("url: %s", url)
109        self._logger.info("addons: %s", addons)
110        self._logger.info("headers: %s", headers)
111        result = await self.get(
112            url, timeout=timeout, addons=addons, headers=headers, **kwargs
113        )
114        self._logger.info("result: %s", result)
115        res = ProjectsResponse.from_json(result)
116        self._logger.verbose("result: %s", res)
117        self._logger.notice("get_projects succeeded")
118        self._logger.debug("ManageClient.get_projects LEAVE")
119        return res

Gets a list of projects for the authenticated user.

Reference: https://developers.deepgram.com/reference/get-projects

async def get_project( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Project:
121    async def get_project(
122        self,
123        project_id: str,
124        timeout: Optional[httpx.Timeout] = None,
125        addons: Optional[Dict] = None,
126        headers: Optional[Dict] = None,
127        **kwargs,
128    ) -> Project:
129        """
130        Gets details for a specific project.
131
132        Reference:
133        https://developers.deepgram.com/reference/get-project
134        """
135        self._logger.debug("ManageClient.get_project ENTER")
136        url = f"{self._config.url}/{self._endpoint}/{project_id}"
137        self._logger.info("url: %s", url)
138        self._logger.info("project_id: %s", project_id)
139        self._logger.info("addons: %s", addons)
140        self._logger.info("headers: %s", headers)
141        result = await self.get(
142            url, timeout=timeout, addons=addons, headers=headers, **kwargs
143        )
144        self._logger.info("result: %s", result)
145        res = Project.from_json(result)
146        self._logger.verbose("result: %s", res)
147        self._logger.notice("get_project succeeded")
148        self._logger.debug("ManageClient.get_project LEAVE")
149        return res

Gets details for a specific project.

Reference: https://developers.deepgram.com/reference/get-project

async def update_project_option( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.ProjectOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
151    async def update_project_option(
152        self,
153        project_id: str,
154        options: Union[Dict, ProjectOptions],
155        timeout: Optional[httpx.Timeout] = None,
156        addons: Optional[Dict] = None,
157        headers: Optional[Dict] = None,
158        **kwargs,
159    ) -> Message:
160        """
161        Updates a project's settings.
162
163        Reference:
164        https://developers.deepgram.com/reference/update-project
165        """
166        self._logger.debug("ManageClient.update_project_option ENTER")
167        url = f"{self._config.url}/{self._endpoint}/{project_id}"
168        self._logger.info("url: %s", url)
169        self._logger.info("project_id: %s", project_id)
170        if isinstance(options, ProjectOptions):
171            self._logger.info("ProjectOptions switching class -> dict")
172            options = options.to_dict()
173        self._logger.info("options: %s", options)
174        self._logger.info("addons: %s", addons)
175        self._logger.info("headers: %s", headers)
176        result = await self.patch(
177            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
178        )
179        self._logger.info("result: %s", result)
180        res = Message.from_json(result)
181        self._logger.verbose("result: %s", res)
182        self._logger.notice("update_project_option succeeded")
183        self._logger.debug("ManageClient.update_project_option LEAVE")
184        return res

Updates a project's settings.

Reference: https://developers.deepgram.com/reference/update-project

async def update_project( self, project_id: str, name='', timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
186    async def update_project(
187        self,
188        project_id: str,
189        name="",
190        timeout: Optional[httpx.Timeout] = None,
191        addons: Optional[Dict] = None,
192        headers: Optional[Dict] = None,
193        **kwargs,
194    ) -> Message:
195        """
196        Updates a project's settings.
197
198        Reference:
199        https://developers.deepgram.com/reference/update-project
200        """
201        self._logger.debug("ManageClient.update_project ENTER")
202        url = f"{self._config.url}/{self._endpoint}/{project_id}"
203        options = {
204            "name": name,
205        }
206        self._logger.info("url: %s", url)
207        self._logger.info("project_id: %s", project_id)
208        self._logger.info("options: %s", options)
209        self._logger.info("addons: %s", addons)
210        self._logger.info("headers: %s", headers)
211        result = await self.patch(
212            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
213        )
214        self._logger.info("result: %s", result)
215        res = Message.from_json(result)
216        self._logger.verbose("result: %s", res)
217        self._logger.notice("update_project succeeded")
218        self._logger.debug("ManageClient.update_project LEAVE")
219        return res

Updates a project's settings.

Reference: https://developers.deepgram.com/reference/update-project

async def delete_project( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
221    async def delete_project(
222        self,
223        project_id: str,
224        timeout: Optional[httpx.Timeout] = None,
225        addons: Optional[Dict] = None,
226        headers: Optional[Dict] = None,
227        **kwargs,
228    ) -> Message:
229        """
230        Deletes a project.
231
232        Reference:
233        https://developers.deepgram.com/reference/delete-project
234        """
235        self._logger.debug("ManageClient.delete_project ENTER")
236        url = f"{self._config.url}/{self._endpoint}/{project_id}"
237        self._logger.info("addons: %s", addons)
238        self._logger.info("headers: %s", headers)
239        result = await self.delete(
240            url, timeout=timeout, addons=addons, headers=headers, **kwargs
241        )
242        self._logger.info("result: %s", result)
243        res = Message.from_json(result)
244        self._logger.verbose("result: %s", res)
245        self._logger.notice("delete_project succeeded")
246        self._logger.debug("ManageClient.delete_project LEAVE")
247        return res
async def list_project_models( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.ModelOptions, NoneType] = None, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ModelsResponse:
249    async def list_project_models(
250        self,
251        project_id: str,
252        options: Optional[Union[Dict, ModelOptions]] = None,
253        timeout: Optional[httpx.Timeout] = None,
254        addons: Optional[Dict] = None,
255        headers: Optional[Dict] = None,
256        **kwargs,
257    ) -> ModelsResponse:
258        """
259        Please see get_project_models.
260        """
261        return await self.get_project_models(
262            project_id,
263            options=options,
264            timeout=timeout,
265            addons=addons,
266            headers=headers,
267            **kwargs,
268        )

Please see get_project_models.

async def get_project_models( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.ModelOptions, NoneType] = None, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ModelsResponse:
270    async def get_project_models(
271        self,
272        project_id: str,
273        options: Optional[Union[Dict, ModelOptions]] = None,
274        timeout: Optional[httpx.Timeout] = None,
275        addons: Optional[Dict] = None,
276        headers: Optional[Dict] = None,
277        **kwargs,
278    ) -> ModelsResponse:
279        """
280        Gets models for a specific project.
281
282        Reference:
283        https://developers.deepgram.com/reference/get-project
284        https://developers.deepgram.com/reference/get-model
285
286        Args:
287            project_id (str): The ID of the project.
288            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
289            addons (Optional[Dict]): Additional options for the request.
290            headers (Optional[Dict]): Headers to include in the request.
291            **kwargs: Additional keyword arguments.
292
293        Returns:
294            ModelsResponse: A response object containing the model details.
295        """
296        self._logger.debug("ManageClient.get_project_models ENTER")
297
298        if options is None:
299            options = ModelOptions()
300
301        url = f"{self._config.url}/{self._endpoint}/{project_id}/models"
302        self._logger.info("url: %s", url)
303        self._logger.info("project_id: %s", project_id)
304        if isinstance(options, ModelOptions):
305            self._logger.info("ModelOptions switching class -> dict")
306            options = options.to_dict()
307        self._logger.info("options: %s", options)
308        self._logger.info("addons: %s", addons)
309        self._logger.info("headers: %s", headers)
310        result = await self.get(
311            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
312        )
313        self._logger.info("json: %s", result)
314        res = ModelsResponse.from_json(result)
315        self._logger.verbose("result: %s", res)
316        self._logger.notice("get_project_models succeeded")
317        self._logger.debug("ManageClient.get_project_models LEAVE")
318        return res

Gets models for a specific project.

Reference: https://developers.deepgram.com/reference/get-project https://developers.deepgram.com/reference/get-model

Args: project_id (str): The ID of the project. timeout (Optional[httpx.Timeout]): The timeout setting for the request. addons (Optional[Dict]): Additional options for the request. headers (Optional[Dict]): Headers to include in the request. **kwargs: Additional keyword arguments.

Returns: ModelsResponse: A response object containing the model details.

async def get_project_model( self, project_id: str, model_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ModelResponse:
320    async def get_project_model(
321        self,
322        project_id: str,
323        model_id: str,
324        timeout: Optional[httpx.Timeout] = None,
325        addons: Optional[Dict] = None,
326        headers: Optional[Dict] = None,
327        **kwargs,
328    ) -> ModelResponse:
329        """
330        Gets a single model for a specific project.
331
332        Reference:
333        https://developers.deepgram.com/reference/get-project
334        https://developers.deepgram.com/reference/get-model
335
336        Args:
337            project_id (str): The ID of the project.
338            model_id (str): The ID of the model.
339            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
340            addons (Optional[Dict]): Additional options for the request.
341            headers (Optional[Dict]): Headers to include in the request.
342            **kwargs: Additional keyword arguments.
343
344        Returns:
345            ModelResponse: A response object containing the model details.
346        """
347        self._logger.debug("ManageClient.get_project_model ENTER")
348        url = f"{self._config.url}/{self._endpoint}/{project_id}/models/{model_id}"
349        self._logger.info("url: %s", url)
350        self._logger.info("project_id: %s", project_id)
351        self._logger.info("model_id: %s", model_id)
352        self._logger.info("addons: %s", addons)
353        self._logger.info("headers: %s", headers)
354        result = await self.get(
355            url, timeout=timeout, addons=addons, headers=headers, **kwargs
356        )
357        self._logger.info("json: %s", result)
358        res = ModelResponse.from_json(result)
359        self._logger.verbose("result: %s", res)
360        self._logger.notice("get_project_model succeeded")
361        self._logger.debug("ManageClient.get_project_model LEAVE")
362        return res

Gets a single model for a specific project.

Reference: https://developers.deepgram.com/reference/get-project https://developers.deepgram.com/reference/get-model

Args: project_id (str): The ID of the project. model_id (str): The ID of the model. timeout (Optional[httpx.Timeout]): The timeout setting for the request. addons (Optional[Dict]): Additional options for the request. headers (Optional[Dict]): Headers to include in the request. **kwargs: Additional keyword arguments.

Returns: ModelResponse: A response object containing the model details.

async def list_models( self, options: Union[Dict, deepgram.clients.manage.v1.options.ModelOptions, NoneType] = None, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ModelsResponse:
365    async def list_models(
366        self,
367        options: Optional[Union[Dict, ModelOptions]] = None,
368        timeout: Optional[httpx.Timeout] = None,
369        addons: Optional[Dict] = None,
370        headers: Optional[Dict] = None,
371        **kwargs,
372    ) -> ModelsResponse:
373        """
374        Please see get_models for more information.
375        """
376        return await self.get_models(
377            options=options, timeout=timeout, addons=addons, headers=headers, **kwargs
378        )

Please see get_models for more information.

async def get_models( self, options: Union[Dict, deepgram.clients.manage.v1.options.ModelOptions, NoneType] = None, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ModelsResponse:
380    async def get_models(
381        self,
382        options: Optional[Union[Dict, ModelOptions]] = None,
383        timeout: Optional[httpx.Timeout] = None,
384        addons: Optional[Dict] = None,
385        headers: Optional[Dict] = None,
386        **kwargs,
387    ) -> ModelsResponse:
388        """
389        Gets all models available.
390
391        Reference:
392        https://developers.deepgram.com/reference/get-model
393
394        Args:
395            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
396            addons (Optional[Dict]): Additional options for the request.
397            headers (Optional[Dict]): Headers to include in the request.
398            **kwargs: Additional keyword arguments.
399
400        Returns:
401            ModelsResponse: A response object containing the model details.
402        """
403        self._logger.debug("ManageClient.get_models ENTER")
404
405        if options is None:
406            options = ModelOptions()
407
408        url = f"{self._config.url}/v1/models"
409        self._logger.info("url: %s", url)
410        if isinstance(options, ModelOptions):
411            self._logger.info("ModelOptions switching class -> dict")
412            options = options.to_dict()
413        self._logger.info("options: %s", options)
414        self._logger.info("addons: %s", addons)
415        self._logger.info("headers: %s", headers)
416        result = await self.get(
417            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
418        )
419        self._logger.info("result: %s", result)
420        res = ModelsResponse.from_json(result)
421        self._logger.verbose("result: %s", res)
422        self._logger.notice("get_models succeeded")
423        self._logger.debug("ManageClient.get_models LEAVE")
424        return res

Gets all models available.

Reference: https://developers.deepgram.com/reference/get-model

Args: timeout (Optional[httpx.Timeout]): The timeout setting for the request. addons (Optional[Dict]): Additional options for the request. headers (Optional[Dict]): Headers to include in the request. **kwargs: Additional keyword arguments.

Returns: ModelsResponse: A response object containing the model details.

async def get_model( self, model_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ModelResponse:
426    async def get_model(
427        self,
428        model_id: str,
429        timeout: Optional[httpx.Timeout] = None,
430        addons: Optional[Dict] = None,
431        headers: Optional[Dict] = None,
432        **kwargs,
433    ) -> ModelResponse:
434        """
435        Gets information for a specific model.
436
437        Reference:
438        https://developers.deepgram.com/reference/get-model
439
440        Args:
441            model_id (str): The ID of the model.
442            timeout (Optional[httpx.Timeout]): The timeout setting for the request.
443            addons (Optional[Dict]): Additional options for the request.
444            headers (Optional[Dict]): Headers to include in the request.
445            **kwargs: Additional keyword arguments.
446
447        Returns:
448            ModelResponse: A response object containing the model details.
449        """
450        self._logger.debug("ManageClient.get_model ENTER")
451        url = f"{self._config.url}/v1/models/{model_id}"
452        self._logger.info("url: %s", url)
453        self._logger.info("model_id: %s", model_id)
454        self._logger.info("addons: %s", addons)
455        self._logger.info("headers: %s", headers)
456        result = await self.get(
457            url, timeout=timeout, addons=addons, headers=headers, **kwargs
458        )
459        self._logger.info("result: %s", result)
460        res = ModelResponse.from_json(result)
461        self._logger.verbose("result: %s", res)
462        self._logger.notice("get_model succeeded")
463        self._logger.debug("ManageClient.get_model LEAVE")
464        return res

Gets information for a specific model.

Reference: https://developers.deepgram.com/reference/get-model

Args: model_id (str): The ID of the model. timeout (Optional[httpx.Timeout]): The timeout setting for the request. addons (Optional[Dict]): Additional options for the request. headers (Optional[Dict]): Headers to include in the request. **kwargs: Additional keyword arguments.

Returns: ModelResponse: A response object containing the model details.

async def list_keys( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.KeysResponse:
467    async def list_keys(
468        self,
469        project_id: str,
470        timeout: Optional[httpx.Timeout] = None,
471        addons: Optional[Dict] = None,
472        headers: Optional[Dict] = None,
473        **kwargs,
474    ) -> KeysResponse:
475        """
476        Please see get_keys for more information.
477        """
478        return await self.get_keys(
479            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
480        )

Please see get_keys for more information.

async def get_keys( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.KeysResponse:
482    async def get_keys(
483        self,
484        project_id: str,
485        timeout: Optional[httpx.Timeout] = None,
486        addons: Optional[Dict] = None,
487        headers: Optional[Dict] = None,
488        **kwargs,
489    ) -> KeysResponse:
490        """
491        Gets a list of keys for a project.
492
493        Reference:
494        https://developers.deepgram.com/reference/list-keys
495        """
496        self._logger.debug("ManageClient.get_keys ENTER")
497        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys"
498        self._logger.info("url: %s", url)
499        self._logger.info("project_id: %s", project_id)
500        self._logger.info("addons: %s", addons)
501        self._logger.info("headers: %s", headers)
502        result = await self.get(
503            url, timeout=timeout, addons=addons, headers=headers, **kwargs
504        )
505        self._logger.info("result: %s", result)
506        res = KeysResponse.from_json(result)
507        self._logger.verbose("result: %s", res)
508        self._logger.notice("get_keys succeeded")
509        self._logger.debug("ManageClient.get_keys LEAVE")
510        return res

Gets a list of keys for a project.

Reference: https://developers.deepgram.com/reference/list-keys

async def get_key( self, project_id: str, key_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.KeyResponse:
512    async def get_key(
513        self,
514        project_id: str,
515        key_id: str,
516        timeout: Optional[httpx.Timeout] = None,
517        addons: Optional[Dict] = None,
518        headers: Optional[Dict] = None,
519        **kwargs,
520    ) -> KeyResponse:
521        """
522        Gets details for a specific key.
523
524        Reference:
525        https://developers.deepgram.com/reference/get-key
526        """
527        self._logger.debug("ManageClient.get_key ENTER")
528        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys/{key_id}"
529        self._logger.info("url: %s", url)
530        self._logger.info("project_id: %s", project_id)
531        self._logger.info("key_id: %s", key_id)
532        self._logger.info("addons: %s", addons)
533        self._logger.info("headers: %s", headers)
534        result = await self.get(
535            url, timeout=timeout, addons=addons, headers=headers, **kwargs
536        )
537        self._logger.info("result: %s", result)
538        res = KeyResponse.from_json(result)
539        self._logger.verbose("result: %s", res)
540        self._logger.notice("get_key succeeded")
541        self._logger.debug("ManageClient.get_key LEAVE")
542        return res

Gets details for a specific key.

Reference: https://developers.deepgram.com/reference/get-key

async def create_key( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.KeyOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Key:
544    async def create_key(
545        self,
546        project_id: str,
547        options: Union[Dict, KeyOptions],
548        timeout: Optional[httpx.Timeout] = None,
549        addons: Optional[Dict] = None,
550        headers: Optional[Dict] = None,
551        **kwargs,
552    ) -> Key:
553        """
554        Creates a new key.
555
556        Reference:
557        https://developers.deepgram.com/reference/create-key
558        """
559        self._logger.debug("ManageClient.create_key ENTER")
560        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys"
561        self._logger.info("url: %s", url)
562        self._logger.info("project_id: %s", project_id)
563        if isinstance(options, KeyOptions):
564            self._logger.info("KeyOptions switching class -> dict")
565            options = options.to_dict()
566        self._logger.info("options: %s", options)
567        self._logger.info("addons: %s", addons)
568        self._logger.info("headers: %s", headers)
569        result = await self.post(
570            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
571        )
572        self._logger.info("result: %s", result)
573        res = Key.from_json(result)
574        self._logger.verbose("result: %s", res)
575        self._logger.notice("create_key succeeded")
576        self._logger.debug("ManageClient.create_key LEAVE")
577        return res
async def delete_key( self, project_id: str, key_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
579    async def delete_key(
580        self,
581        project_id: str,
582        key_id: str,
583        timeout: Optional[httpx.Timeout] = None,
584        addons: Optional[Dict] = None,
585        headers: Optional[Dict] = None,
586        **kwargs,
587    ) -> Message:
588        """
589        Deletes a key.
590
591        Reference:
592        https://developers.deepgram.com/reference/delete-key
593        """
594        self._logger.debug("ManageClient.delete_key ENTER")
595        url = f"{self._config.url}/{self._endpoint}/{project_id}/keys/{key_id}"
596        self._logger.info("url: %s", url)
597        self._logger.info("project_id: %s", project_id)
598        self._logger.info("key_id: %s", key_id)
599        self._logger.info("addons: %s", addons)
600        self._logger.info("headers: %s", headers)
601        result = await self.delete(
602            url, timeout=timeout, addons=addons, headers=headers, **kwargs
603        )
604        self._logger.info("result: %s", result)
605        res = Message.from_json(result)
606        self._logger.verbose("result: %s", res)
607        self._logger.notice("delete_key succeeded")
608        self._logger.debug("ManageClient.delete_key LEAVE")
609        return res
async def list_members( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.MembersResponse:
612    async def list_members(
613        self,
614        project_id: str,
615        timeout: Optional[httpx.Timeout] = None,
616        addons: Optional[Dict] = None,
617        headers: Optional[Dict] = None,
618        **kwargs,
619    ) -> MembersResponse:
620        """
621        Please see get_members for more information.
622        """
623        return await self.get_members(
624            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
625        )

Please see get_members for more information.

async def get_members( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.MembersResponse:
627    async def get_members(
628        self,
629        project_id: str,
630        timeout: Optional[httpx.Timeout] = None,
631        addons: Optional[Dict] = None,
632        headers: Optional[Dict] = None,
633        **kwargs,
634    ) -> MembersResponse:
635        """
636        Gets a list of members for a project.
637
638        Reference:
639        https://developers.deepgram.com/reference/get-members
640        """
641        self._logger.debug("ManageClient.get_members ENTER")
642        url = f"{self._config.url}/{self._endpoint}/{project_id}/members"
643        self._logger.info("url: %s", url)
644        self._logger.info("project_id: %s", project_id)
645        self._logger.info("addons: %s", addons)
646        self._logger.info("headers: %s", headers)
647        result = await self.get(
648            url, timeout=timeout, addons=addons, headers=headers, **kwargs
649        )
650        self._logger.info("result: %s", result)
651        res = MembersResponse.from_json(result)
652        self._logger.verbose("result: %s", res)
653        self._logger.notice("get_members succeeded")
654        self._logger.debug("ManageClient.get_members LEAVE")
655        return res

Gets a list of members for a project.

Reference: https://developers.deepgram.com/reference/get-members

async def remove_member( self, project_id: str, member_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
657    async def remove_member(
658        self,
659        project_id: str,
660        member_id: str,
661        timeout: Optional[httpx.Timeout] = None,
662        addons: Optional[Dict] = None,
663        headers: Optional[Dict] = None,
664        **kwargs,
665    ) -> Message:
666        """
667        Removes a member from a project.
668
669        Reference:
670        https://developers.deepgram.com/reference/remove-member
671        """
672        self._logger.debug("ManageClient.remove_member ENTER")
673        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}"
674        self._logger.info("url: %s", url)
675        self._logger.info("project_id: %s", project_id)
676        self._logger.info("member_id: %s", member_id)
677        self._logger.info("addons: %s", addons)
678        self._logger.info("headers: %s", headers)
679        result = await self.delete(
680            url, timeout=timeout, addons=addons, headers=headers, **kwargs
681        )
682        self._logger.info("result: %s", result)
683        res = Message.from_json(result)
684        self._logger.verbose("result: %s", res)
685        self._logger.notice("remove_member succeeded")
686        self._logger.debug("ManageClient.remove_member LEAVE")
687        return res

Removes a member from a project.

Reference: https://developers.deepgram.com/reference/remove-member

async def get_member_scopes( self, project_id: str, member_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ScopesResponse:
690    async def get_member_scopes(
691        self,
692        project_id: str,
693        member_id: str,
694        timeout: Optional[httpx.Timeout] = None,
695        addons: Optional[Dict] = None,
696        headers: Optional[Dict] = None,
697        **kwargs,
698    ) -> ScopesResponse:
699        """
700        Gets a list of scopes for a member.
701
702        Reference:
703        https://developers.deepgram.com/reference/get-member-scopes
704        """
705        self._logger.debug("ManageClient.get_member_scopes ENTER")
706        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}/scopes"
707        self._logger.info("url: %s", url)
708        self._logger.info("project_id: %s", project_id)
709        self._logger.info("member_id: %s", member_id)
710        self._logger.info("addons: %s", addons)
711        self._logger.info("headers: %s", headers)
712        result = await self.get(
713            url, timeout=timeout, addons=addons, headers=headers, **kwargs
714        )
715        self._logger.info("result: %s", result)
716        res = ScopesResponse.from_json(result)
717        self._logger.verbose("result: %s", res)
718        self._logger.notice("get_member_scopes succeeded")
719        self._logger.debug("ManageClient.get_member_scopes LEAVE")
720        return res

Gets a list of scopes for a member.

Reference: https://developers.deepgram.com/reference/get-member-scopes

async def update_member_scope( self, project_id: str, member_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.ScopeOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
722    async def update_member_scope(
723        self,
724        project_id: str,
725        member_id: str,
726        options: Union[Dict, ScopeOptions],
727        timeout: Optional[httpx.Timeout] = None,
728        addons: Optional[Dict] = None,
729        headers: Optional[Dict] = None,
730        **kwargs,
731    ) -> Message:
732        """
733        Updates a member's scopes.
734
735        Reference:
736        https://developers.deepgram.com/reference/update-scope
737        """
738        self._logger.debug("ManageClient.update_member_scope ENTER")
739        url = f"{self._config.url}/{self._endpoint}/{project_id}/members/{member_id}/scopes"
740        self._logger.info("url: %s", url)
741        self._logger.info("project_id: %s", project_id)
742        if isinstance(options, ScopeOptions):
743            self._logger.info("ScopeOptions switching class -> dict")
744            options = options.to_dict()
745        self._logger.info("options: %s", options)
746        self._logger.info("addons: %s", addons)
747        self._logger.info("headers: %s", headers)
748        result = await self.put(
749            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
750        )
751        self._logger.info("result: %s", result)
752        res = Message.from_json(result)
753        self._logger.verbose("result: %s", res)
754        self._logger.notice("update_member_scope succeeded")
755        self._logger.debug("ManageClient.update_member_scope LEAVE")
756        return res

Updates a member's scopes.

Reference: https://developers.deepgram.com/reference/update-scope

async def list_invites( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.InvitesResponse:
759    async def list_invites(
760        self,
761        project_id: str,
762        timeout: Optional[httpx.Timeout] = None,
763        addons: Optional[Dict] = None,
764        headers: Optional[Dict] = None,
765        **kwargs,
766    ) -> InvitesResponse:
767        """
768        Please see get_invites for more information.
769        """
770        return await self.get_invites(
771            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
772        )

Please see get_invites for more information.

async def get_invites( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.InvitesResponse:
774    async def get_invites(
775        self,
776        project_id: str,
777        timeout: Optional[httpx.Timeout] = None,
778        addons: Optional[Dict] = None,
779        headers: Optional[Dict] = None,
780        **kwargs,
781    ) -> InvitesResponse:
782        """
783        Gets a list of invites for a project.
784
785        Reference:
786        https://developers.deepgram.com/reference/list-invites
787        """
788        self._logger.debug("ManageClient.get_invites ENTER")
789        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
790        self._logger.info("url: %s", url)
791        self._logger.info("project_id: %s", project_id)
792        self._logger.info("addons: %s", addons)
793        self._logger.info("headers: %s", headers)
794        result = await self.get(
795            url, timeout=timeout, addons=addons, headers=headers, **kwargs
796        )
797        self._logger.info("result: %s", result)
798        res = InvitesResponse.from_json(result)
799        self._logger.verbose("result: %s", res)
800        self._logger.notice("get_invites succeeded")
801        self._logger.debug("ManageClient.get_invites LEAVE")
802        return res

Gets a list of invites for a project.

Reference: https://developers.deepgram.com/reference/list-invites

async def send_invite_options( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.InviteOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
804    async def send_invite_options(
805        self,
806        project_id: str,
807        options: Union[Dict, InviteOptions],
808        timeout: Optional[httpx.Timeout] = None,
809        addons: Optional[Dict] = None,
810        headers: Optional[Dict] = None,
811        **kwargs,
812    ) -> Message:
813        """
814        Sends an invite to a project.
815
816        Reference:
817        https://developers.deepgram.com/reference/send-invite
818        """
819        self._logger.debug("ManageClient.send_invite_options ENTER")
820        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
821        self._logger.info("url: %s", url)
822        self._logger.info("project_id: %s", project_id)
823        if isinstance(options, InviteOptions):
824            self._logger.info("InviteOptions switching class -> dict")
825            options = options.to_dict()
826        self._logger.info("options: %s", options)
827        self._logger.info("addons: %s", addons)
828        self._logger.info("headers: %s", headers)
829        result = await self.post(
830            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
831        )
832        self._logger.info("result: %s", result)
833        res = Message.from_json(result)
834        self._logger.verbose("result: %s", res)
835        self._logger.notice("send_invite_options succeeded")
836        self._logger.debug("ManageClient.send_invite_options LEAVE")
837        return res

Sends an invite to a project.

Reference: https://developers.deepgram.com/reference/send-invite

async def send_invite( self, project_id: str, email: str, scope='member', timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
839    async def send_invite(
840        self,
841        project_id: str,
842        email: str,
843        scope="member",
844        timeout: Optional[httpx.Timeout] = None,
845        addons: Optional[Dict] = None,
846        headers: Optional[Dict] = None,
847        **kwargs,
848    ) -> Message:
849        """
850        Sends an invite to a project.
851
852        Reference:
853        https://developers.deepgram.com/reference/send-invite
854        """
855        self._logger.debug("ManageClient.send_invite ENTER")
856        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites"
857        options = {
858            "email": email,
859            "scope": scope,
860        }
861        self._logger.info("url: %s", url)
862        self._logger.info("project_id: %s", project_id)
863        self._logger.info("options: %s", options)
864        self._logger.info("addons: %s", addons)
865        self._logger.info("headers: %s", headers)
866        result = await self.post(
867            url, json=options, timeout=timeout, addons=addons, headers=headers, **kwargs
868        )
869        self._logger.info("result: %s", result)
870        res = Message.from_json(result)
871        self._logger.verbose("result: %s", res)
872        self._logger.notice("send_invite succeeded")
873        self._logger.debug("ManageClient.send_invite LEAVE")
874        return res

Sends an invite to a project.

Reference: https://developers.deepgram.com/reference/send-invite

async def delete_invite( self, project_id: str, email: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
876    async def delete_invite(
877        self,
878        project_id: str,
879        email: str,
880        timeout: Optional[httpx.Timeout] = None,
881        addons: Optional[Dict] = None,
882        headers: Optional[Dict] = None,
883        **kwargs,
884    ) -> Message:
885        """
886        Deletes an invite from a project.
887
888        Reference:
889        https://developers.deepgram.com/reference/delete-invite
890        """
891        self._logger.debug("ManageClient.delete_invite ENTER")
892        url = f"{self._config.url}/{self._endpoint}/{project_id}/invites/{email}"
893        self._logger.info("url: %s", url)
894        self._logger.info("project_id: %s", project_id)
895        self._logger.info("email: %s", email)
896        self._logger.info("addons: %s", addons)
897        self._logger.info("headers: %s", headers)
898        result = await self.delete(
899            url, timeout=timeout, addons=addons, headers=headers, **kwargs
900        )
901        self._logger.info("result: %s", result)
902        res = Message.from_json(result)
903        self._logger.verbose("result: %s", res)
904        self._logger.notice("delete_invite succeeded")
905        self._logger.debug("ManageClient.delete_invite LEAVE")
906        return res

Deletes an invite from a project.

Reference: https://developers.deepgram.com/reference/delete-invite

async def leave_project( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Message:
908    async def leave_project(
909        self,
910        project_id: str,
911        timeout: Optional[httpx.Timeout] = None,
912        addons: Optional[Dict] = None,
913        headers: Optional[Dict] = None,
914        **kwargs,
915    ) -> Message:
916        """
917        Leaves a project.
918
919        Reference:
920        https://developers.deepgram.com/reference/leave-project
921        """
922        self._logger.debug("ManageClient.leave_project ENTER")
923        url = f"{self._config.url}/{self._endpoint}/{project_id}/leave"
924        self._logger.info("url: %s", url)
925        self._logger.info("project_id: %s", project_id)
926        self._logger.info("addons: %s", addons)
927        self._logger.info("headers: %s", headers)
928        result = await self.delete(
929            url, timeout=timeout, addons=addons, headers=headers, **kwargs
930        )
931        self._logger.info("result: %s", result)
932        res = Message.from_json(result)
933        self._logger.verbose("result: %s", res)
934        self._logger.notice("leave_project succeeded")
935        self._logger.debug("ManageClient.leave_project LEAVE")
936        return res
async def get_usage_requests( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.UsageRequestOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.UsageRequestsResponse:
939    async def get_usage_requests(
940        self,
941        project_id: str,
942        options: Union[Dict, UsageRequestOptions],
943        timeout: Optional[httpx.Timeout] = None,
944        addons: Optional[Dict] = None,
945        headers: Optional[Dict] = None,
946        **kwargs,
947    ) -> UsageRequestsResponse:
948        """
949        Gets a list of usage requests for a project.
950
951        Reference:
952        https://developers.deepgram.com/reference/get-all-requests
953        """
954        self._logger.debug("ManageClient.get_usage_requests ENTER")
955        url = f"{self._config.url}/{self._endpoint}/{project_id}/requests"
956        self._logger.info("url: %s", url)
957        self._logger.info("project_id: %s", project_id)
958        if isinstance(options, UsageRequestOptions):
959            self._logger.info("UsageRequestOptions switching class -> dict")
960            options = options.to_dict()
961        self._logger.info("options: %s", options)
962        self._logger.info("addons: %s", addons)
963        self._logger.info("headers: %s", headers)
964        result = await self.get(
965            url,
966            options=options,
967            timeout=timeout,
968            addons=addons,
969            headers=headers,
970            **kwargs,
971        )
972        self._logger.info("result: %s", result)
973        res = UsageRequestsResponse.from_json(result)
974        self._logger.verbose("result: %s", res)
975        self._logger.notice("get_usage_requests succeeded")
976        self._logger.debug("ManageClient.get_usage_requests LEAVE")
977        return res

Gets a list of usage requests for a project.

Reference: https://developers.deepgram.com/reference/get-all-requests

async def get_usage_request( self, project_id: str, request_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.UsageRequest:
 979    async def get_usage_request(
 980        self,
 981        project_id: str,
 982        request_id: str,
 983        timeout: Optional[httpx.Timeout] = None,
 984        addons: Optional[Dict] = None,
 985        headers: Optional[Dict] = None,
 986        **kwargs,
 987    ) -> UsageRequest:
 988        """
 989        Gets details for a specific usage request.
 990
 991        Reference:
 992        https://developers.deepgram.com/reference/get-request
 993        """
 994        self._logger.debug("ManageClient.get_usage_request ENTER")
 995        url = f"{self._config.url}/{self._endpoint}/{project_id}/requests/{request_id}"
 996        self._logger.info("url: %s", url)
 997        self._logger.info("project_id: %s", project_id)
 998        self._logger.info("request_id: %s", request_id)
 999        self._logger.info("addons: %s", addons)
1000        self._logger.info("headers: %s", headers)
1001        result = await self.get(
1002            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1003        )
1004        self._logger.info("result: %s", result)
1005
1006        # convert str to JSON to check response field
1007        json_result = json.loads(result)
1008        if json_result.get("response") is None:
1009            raise DeepgramError(
1010                "Response is not available yet. Please try again later."
1011            )
1012
1013        res = UsageRequest.from_json(result)
1014        self._logger.verbose("result: %s", res)
1015        self._logger.notice("get_usage_request succeeded")
1016        self._logger.debug("ManageClient.get_usage_request LEAVE")
1017        return res

Gets details for a specific usage request.

Reference: https://developers.deepgram.com/reference/get-request

async def get_usage_summary( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.UsageSummaryOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.UsageSummaryResponse:
1019    async def get_usage_summary(
1020        self,
1021        project_id: str,
1022        options: Union[Dict, UsageSummaryOptions],
1023        timeout: Optional[httpx.Timeout] = None,
1024        addons: Optional[Dict] = None,
1025        headers: Optional[Dict] = None,
1026        **kwargs,
1027    ) -> UsageSummaryResponse:
1028        """
1029        Gets a summary of usage for a project.
1030
1031        Reference:
1032        https://developers.deepgram.com/reference/summarize-usage
1033        """
1034        self._logger.debug("ManageClient.get_usage_summary ENTER")
1035        url = f"{self._config.url}/{self._endpoint}/{project_id}/usage"
1036        self._logger.info("url: %s", url)
1037        self._logger.info("project_id: %s", project_id)
1038        if isinstance(options, UsageSummaryOptions):
1039            self._logger.info("UsageSummaryOptions switching class -> dict")
1040            options = options.to_dict()
1041        self._logger.info("options: %s", options)
1042        self._logger.info("addons: %s", addons)
1043        self._logger.info("headers: %s", headers)
1044        result = await self.get(
1045            url,
1046            options=options,
1047            timeout=timeout,
1048            addons=addons,
1049            headers=headers,
1050            **kwargs,
1051        )
1052        self._logger.info("result: %s", result)
1053        res = UsageSummaryResponse.from_json(result)
1054        self._logger.verbose("result: %s", res)
1055        self._logger.notice("get_usage_summary succeeded")
1056        self._logger.debug("ManageClient.get_usage_summary LEAVE")
1057        return res

Gets a summary of usage for a project.

Reference: https://developers.deepgram.com/reference/summarize-usage

async def get_usage_fields( self, project_id: str, options: Union[Dict, deepgram.clients.manage.v1.options.UsageFieldsOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.UsageFieldsResponse:
1059    async def get_usage_fields(
1060        self,
1061        project_id: str,
1062        options: Union[Dict, UsageFieldsOptions],
1063        timeout: Optional[httpx.Timeout] = None,
1064        addons: Optional[Dict] = None,
1065        headers: Optional[Dict] = None,
1066        **kwargs,
1067    ) -> UsageFieldsResponse:
1068        """
1069        Gets a list of usage fields for a project.
1070
1071        Reference:
1072        https://developers.deepgram.com/reference/get-fields
1073        """
1074        self._logger.debug("ManageClient.get_usage_fields ENTER")
1075        url = f"{self._config.url}/{self._endpoint}/{project_id}/usage/fields"
1076        self._logger.info("url: %s", url)
1077        self._logger.info("project_id: %s", project_id)
1078        if isinstance(options, UsageFieldsOptions):
1079            self._logger.info("UsageFieldsOptions switching class -> dict")
1080            options = options.to_dict()
1081        self._logger.info("options: %s", options)
1082        self._logger.info("addons: %s", addons)
1083        self._logger.info("headers: %s", headers)
1084        result = await self.get(
1085            url,
1086            options=options,
1087            timeout=timeout,
1088            addons=addons,
1089            headers=headers,
1090            **kwargs,
1091        )
1092        self._logger.info("result: %s", result)
1093        res = UsageFieldsResponse.from_json(result)
1094        self._logger.verbose("result: %s", res)
1095        self._logger.notice("get_usage_fields succeeded")
1096        self._logger.debug("ManageClient.get_usage_fields LEAVE")
1097        return res

Gets a list of usage fields for a project.

Reference: https://developers.deepgram.com/reference/get-fields

async def list_balances( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.BalancesResponse:
1100    async def list_balances(
1101        self,
1102        project_id: str,
1103        timeout: Optional[httpx.Timeout] = None,
1104        addons: Optional[Dict] = None,
1105        headers: Optional[Dict] = None,
1106        **kwargs,
1107    ) -> BalancesResponse:
1108        """
1109        Please see get_balances for more information.
1110        """
1111        return await self.get_balances(
1112            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
1113        )

Please see get_balances for more information.

async def get_balances( self, project_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.BalancesResponse:
1115    async def get_balances(
1116        self,
1117        project_id: str,
1118        timeout: Optional[httpx.Timeout] = None,
1119        addons: Optional[Dict] = None,
1120        headers: Optional[Dict] = None,
1121        **kwargs,
1122    ) -> BalancesResponse:
1123        """
1124        Gets a list of balances for a project.
1125
1126        Reference:
1127        https://developers.deepgram.com/reference/get-all-balances
1128        """
1129        self._logger.debug("ManageClient.get_balances ENTER")
1130        url = f"{self._config.url}/{self._endpoint}/{project_id}/balances"
1131        self._logger.info("url: %s", url)
1132        self._logger.info("project_id: %s", project_id)
1133        self._logger.info("addons: %s", addons)
1134        self._logger.info("headers: %s", headers)
1135        result = await self.get(
1136            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1137        )
1138        self._logger.info("result: %s", result)
1139        res = BalancesResponse.from_json(result)
1140        self._logger.verbose("result: %s", res)
1141        self._logger.notice("get_balances succeeded")
1142        self._logger.debug("ManageClient.get_balances LEAVE")
1143        return res

Gets a list of balances for a project.

Reference: https://developers.deepgram.com/reference/get-all-balances

async def get_balance( self, project_id: str, balance_id: str, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.Balance:
1145    async def get_balance(
1146        self,
1147        project_id: str,
1148        balance_id: str,
1149        timeout: Optional[httpx.Timeout] = None,
1150        addons: Optional[Dict] = None,
1151        headers: Optional[Dict] = None,
1152        **kwargs,
1153    ) -> Balance:
1154        """
1155        Gets details for a specific balance.
1156
1157        Reference:
1158        https://developers.deepgram.com/reference/get-balance
1159        """
1160        self._logger.debug("ManageClient.get_balance ENTER")
1161        url = f"{self._config.url}/{self._endpoint}/{project_id}/balances/{balance_id}"
1162        self._logger.info("url: %s", url)
1163        self._logger.info("project_id: %s", project_id)
1164        self._logger.info("balance_id: %s", balance_id)
1165        self._logger.info("addons: %s", addons)
1166        self._logger.info("headers: %s", headers)
1167        result = await self.get(
1168            url, timeout=timeout, addons=addons, headers=headers, **kwargs
1169        )
1170        self._logger.info("result: %s", result)
1171        res = Balance.from_json(result)
1172        self._logger.verbose("result: %s", res)
1173        self._logger.notice("get_balance succeeded")
1174        self._logger.debug("ManageClient.get_balance LEAVE")
1175        return res

Gets details for a specific balance.

Reference: https://developers.deepgram.com/reference/get-balance