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

ManageClient(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
73        self._config = config
74        self._endpoint = "v1/projects"
75        super().__init__(config)
def list_projects( self, timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> deepgram.clients.manage.v1.response.ProjectsResponse:
78    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        List all projects for the current user.
87        """
88        return self.get_projects(
89            timeout=timeout, addons=addons, headers=headers, **kwargs
90        )

List all projects for the current user.

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

Gets a list of projects for the authenticated user.

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

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

Gets details for a specific project.

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

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

Updates a project's settings.

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

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

Updates a project's settings.

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

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

Please see get_project_models.

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

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

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:
367    def list_models(
368        self,
369        options: Optional[Union[Dict, ModelOptions]] = None,
370        timeout: Optional[httpx.Timeout] = None,
371        addons: Optional[Dict] = None,
372        headers: Optional[Dict] = None,
373        **kwargs,
374    ) -> ModelsResponse:
375        """
376        Please see get_models for more information.
377        """
378        return self.get_models(
379            options=options, timeout=timeout, addons=addons, headers=headers, **kwargs
380        )

Please see get_models for more information.

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

Gets all models available.

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

Args: options (Optional[Union[Dict, ModelOptions]]): The options for the request. 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.

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

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:
470    def list_keys(
471        self,
472        project_id: str,
473        timeout: Optional[httpx.Timeout] = None,
474        addons: Optional[Dict] = None,
475        headers: Optional[Dict] = None,
476        **kwargs,
477    ) -> KeysResponse:
478        """
479        Please see get_keys for more information.
480        """
481        return self.get_keys(
482            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
483        )

Please see get_keys for more information.

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

Gets a list of keys for a project.

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

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

Gets details for a specific key.

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

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

Please see get_members for more information.

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

Gets a list of members for a project.

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

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

Removes a member from a project.

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

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

Gets a list of scopes for a member.

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

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

Updates a member's scopes.

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

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:
762    def list_invites(
763        self,
764        project_id: str,
765        timeout: Optional[httpx.Timeout] = None,
766        addons: Optional[Dict] = None,
767        headers: Optional[Dict] = None,
768        **kwargs,
769    ) -> InvitesResponse:
770        """
771        Please see get_invites for more information.
772        """
773        return self.get_invites(
774            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
775        )

Please see get_invites for more information.

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

Gets a list of invites for a project.

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

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

Sends an invite to a project.

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

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

Sends an invite to a project.

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

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

Deletes an invite from a project.

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

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

Gets a list of usage requests for a project.

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

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

Gets details for a specific usage request.

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

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

Gets a summary of usage for a project.

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

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

Gets a list of usage fields for a project.

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

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:
1103    def list_balances(
1104        self,
1105        project_id: str,
1106        timeout: Optional[httpx.Timeout] = None,
1107        addons: Optional[Dict] = None,
1108        headers: Optional[Dict] = None,
1109        **kwargs,
1110    ) -> BalancesResponse:
1111        """
1112        Please see get_balances for more information.
1113        """
1114        return self.get_balances(
1115            project_id, timeout=timeout, addons=addons, headers=headers, **kwargs
1116        )

Please see get_balances for more information.

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

Gets a list of balances for a project.

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

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

Gets details for a specific balance.

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