deepgram.clients.manage.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
  5from .v1.client import ManageClient as ManageClientLatest
  6from .v1.async_client import AsyncManageClient as AsyncManageClientLatest
  7
  8# input
  9from .v1.options import (
 10    ProjectOptions as ProjectOptionsLatest,
 11    KeyOptions as KeyOptionsLatest,
 12    ScopeOptions as ScopeOptionsLatest,
 13    InviteOptions as InviteOptionsLatest,
 14    UsageRequestOptions as UsageRequestOptionsLatest,
 15    UsageSummaryOptions as UsageSummaryOptionsLatest,
 16    UsageFieldsOptions as UsageFieldsOptionsLatest,
 17)
 18
 19# responses
 20from .v1.response import (
 21    Message as MessageLatest,
 22    ProjectsResponse as ProjectsResponseLatest,
 23    ModelResponse as ModelResponseLatest,
 24    ModelsResponse as ModelsResponseLatest,
 25    MembersResponse as MembersResponseLatest,
 26    KeyResponse as KeyResponseLatest,
 27    KeysResponse as KeysResponseLatest,
 28    ScopesResponse as ScopesResponseLatest,
 29    InvitesResponse as InvitesResponseLatest,
 30    UsageRequest as UsageRequestLatest,
 31    UsageResponse as UsageResponseLatest,
 32    UsageRequestsResponse as UsageRequestsResponseLatest,
 33    UsageSummaryResponse as UsageSummaryResponseLatest,
 34    UsageFieldsResponse as UsageFieldsResponseLatest,
 35    BalancesResponse as BalancesResponseLatest,
 36    Project as ProjectLatest,
 37    STTDetails as STTDetailsLatest,
 38    TTSMetadata as TTSMetadataLatest,
 39    TTSDetails as TTSDetailsLatest,
 40    Member as MemberLatest,
 41    Key as KeyLatest,
 42    Invite as InviteLatest,
 43    Config as ConfigLatest,
 44    STTUsageDetails as STTUsageDetailsLatest,
 45    Callback as CallbackLatest,
 46    TokenDetail as TokenDetailLatest,
 47    SpeechSegment as SpeechSegmentLatest,
 48    TTSUsageDetails as TTSUsageDetailsLatest,
 49    STTTokens as STTTokensLatest,
 50    TTSTokens as TTSTokensLatest,
 51    UsageSummaryResults as UsageSummaryResultsLatest,
 52    Resolution as ResolutionLatest,
 53    UsageModel as UsageModelLatest,
 54    Balance as BalanceLatest,
 55)
 56
 57
 58# The client.py points to the current supported version in the SDK.
 59# Older versions are supported in the SDK for backwards compatibility.
 60
 61
 62# input
 63ProjectOptions = ProjectOptionsLatest
 64KeyOptions = KeyOptionsLatest
 65ScopeOptions = ScopeOptionsLatest
 66InviteOptions = InviteOptionsLatest
 67UsageRequestOptions = UsageRequestOptionsLatest
 68UsageSummaryOptions = UsageSummaryOptionsLatest
 69UsageFieldsOptions = UsageFieldsOptionsLatest
 70
 71
 72# responses
 73Message = MessageLatest
 74ProjectsResponse = ProjectsResponseLatest
 75ModelResponse = ModelResponseLatest
 76ModelsResponse = ModelsResponseLatest
 77MembersResponse = MembersResponseLatest
 78KeyResponse = KeyResponseLatest
 79KeysResponse = KeysResponseLatest
 80ScopesResponse = ScopesResponseLatest
 81InvitesResponse = InvitesResponseLatest
 82UsageRequest = UsageRequestLatest
 83UsageResponse = UsageResponseLatest
 84UsageRequestsResponse = UsageRequestsResponseLatest
 85UsageSummaryResponse = UsageSummaryResponseLatest
 86UsageFieldsResponse = UsageFieldsResponseLatest
 87BalancesResponse = BalancesResponseLatest
 88Project = ProjectLatest
 89STTDetails = STTDetailsLatest
 90TTSMetadata = TTSMetadataLatest
 91TTSDetails = TTSDetailsLatest
 92Member = MemberLatest
 93Key = KeyLatest
 94Invite = InviteLatest
 95Config = ConfigLatest
 96STTUsageDetails = STTUsageDetailsLatest
 97Callback = CallbackLatest
 98TokenDetail = TokenDetailLatest
 99SpeechSegment = SpeechSegmentLatest
100TTSUsageDetails = TTSUsageDetailsLatest
101STTTokens = STTTokensLatest
102TTSTokens = TTSTokensLatest
103UsageSummaryResults = UsageSummaryResultsLatest
104Resolution = ResolutionLatest
105UsageModel = UsageModelLatest
106Balance = BalanceLatest
107
108# clients
109ManageClient = ManageClientLatest
110AsyncManageClient = AsyncManageClientLatest
@dataclass
class ProjectOptions(deepgram.clients.common.v1.shared_response.BaseResponse):
16@dataclass
17class ProjectOptions(BaseResponse):
18    """
19    Project Options
20    """
21
22    name: str = ""

Project Options

ProjectOptions(name: str = '')
name: str = ''
@dataclass
class KeyOptions(deepgram.clients.common.v1.shared_response.BaseResponse):
34@dataclass
35class KeyOptions(BaseResponse):
36    """
37    Key Options
38    """
39
40    comment: Optional[str] = ""
41    expiration_date: Optional[str] = field(
42        default="", metadata=dataclass_config(exclude=lambda f: f == "")
43    )
44    time_to_live_in_seconds: Optional[int] = field(
45        default=-1, metadata=dataclass_config(exclude=lambda f: f == -1)
46    )
47    scopes: List[str] = field(default_factory=list)
48    tags: Optional[List[str]] = field(
49        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
50    )
51
52    def __getitem__(self, key):
53        _dict = self.to_dict()
54        if _dict["scopes"] is not None:
55            _dict["scopes"] = [str(scopes) for scopes in _dict["scopes"]]
56        if _dict["tags"] is not None:
57            _dict["tags"] = [str(tags) for tags in _dict["tags"]]
58        return _dict[key]

Key Options

KeyOptions( comment: Optional[str] = '', expiration_date: Optional[str] = '', time_to_live_in_seconds: Optional[int] = -1, scopes: List[str] = <factory>, tags: Optional[List[str]] = None)
comment: Optional[str] = ''
expiration_date: Optional[str] = ''
time_to_live_in_seconds: Optional[int] = -1
scopes: List[str]
tags: Optional[List[str]] = None
@dataclass
class ScopeOptions(deepgram.clients.common.v1.shared_response.BaseResponse):
61@dataclass
62class ScopeOptions(BaseResponse):
63    """
64    Scope Options
65    """
66
67    scope: str = ""

Scope Options

ScopeOptions(scope: str = '')
scope: str = ''
@dataclass
class InviteOptions(deepgram.clients.common.v1.shared_response.BaseResponse):
70@dataclass
71class InviteOptions(BaseResponse):
72    """
73    Invite Options
74    """
75
76    email: str = ""
77    scope: str = ""

Invite Options

InviteOptions(email: str = '', scope: str = '')
email: str = ''
scope: str = ''
@dataclass
class UsageRequestOptions(deepgram.clients.common.v1.shared_response.BaseResponse):
80@dataclass
81class UsageRequestOptions(BaseResponse):
82    """
83    Usage Request Options
84    """
85
86    start: Optional[str] = field(
87        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
88    )
89    end: Optional[str] = field(
90        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
91    )
92    limit: Optional[int] = field(
93        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
94    )
95    status: Optional[str] = field(
96        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
97    )

Usage Request Options

UsageRequestOptions( start: Optional[str] = None, end: Optional[str] = None, limit: Optional[int] = None, status: Optional[str] = None)
start: Optional[str] = None
end: Optional[str] = None
limit: Optional[int] = None
status: Optional[str] = None
@dataclass
class UsageSummaryOptions(deepgram.clients.common.v1.shared_response.BaseResponse):
100@dataclass
101class UsageSummaryOptions(BaseResponse):  # pylint: disable=too-many-instance-attributes
102    """
103    Usage Summary Options
104    """
105
106    start: Optional[str] = field(
107        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
108    )
109    end: Optional[str] = field(
110        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
111    )
112    accessor: Optional[str] = field(
113        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
114    )
115    tag: Optional[str] = field(
116        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
117    )
118    method: Optional[str] = field(
119        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
120    )
121    model: Optional[str] = field(
122        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
123    )
124    multichannel: Optional[bool] = field(
125        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
126    )
127    interim_results: Optional[bool] = field(
128        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
129    )
130    punctuate: Optional[bool] = field(
131        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
132    )
133    ner: Optional[bool] = field(
134        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
135    )
136    utterances: Optional[bool] = field(
137        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
138    )
139    replace: Optional[bool] = field(
140        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
141    )
142    profanity_filter: Optional[bool] = field(
143        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
144    )
145    keywords: Optional[bool] = field(
146        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
147    )
148    detect_topics: Optional[bool] = field(
149        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
150    )
151    diarize: Optional[bool] = field(
152        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
153    )
154    search: Optional[bool] = field(
155        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
156    )
157    redact: Optional[bool] = field(
158        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
159    )
160    alternatives: Optional[bool] = field(
161        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
162    )
163    numerals: Optional[bool] = field(
164        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
165    )
166    smart_format: Optional[bool] = field(
167        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
168    )

Usage Summary Options

UsageSummaryOptions( start: Optional[str] = None, end: Optional[str] = None, accessor: Optional[str] = None, tag: Optional[str] = None, method: Optional[str] = None, model: Optional[str] = None, multichannel: Optional[bool] = None, interim_results: Optional[bool] = None, punctuate: Optional[bool] = None, ner: Optional[bool] = None, utterances: Optional[bool] = None, replace: Optional[bool] = None, profanity_filter: Optional[bool] = None, keywords: Optional[bool] = None, detect_topics: Optional[bool] = None, diarize: Optional[bool] = None, search: Optional[bool] = None, redact: Optional[bool] = None, alternatives: Optional[bool] = None, numerals: Optional[bool] = None, smart_format: Optional[bool] = None)
start: Optional[str] = None
end: Optional[str] = None
accessor: Optional[str] = None
tag: Optional[str] = None
method: Optional[str] = None
model: Optional[str] = None
multichannel: Optional[bool] = None
interim_results: Optional[bool] = None
punctuate: Optional[bool] = None
ner: Optional[bool] = None
utterances: Optional[bool] = None
replace: Optional[bool] = None
profanity_filter: Optional[bool] = None
keywords: Optional[bool] = None
detect_topics: Optional[bool] = None
diarize: Optional[bool] = None
search: Optional[bool] = None
redact: Optional[bool] = None
alternatives: Optional[bool] = None
numerals: Optional[bool] = None
smart_format: Optional[bool] = None
@dataclass
class UsageFieldsOptions(deepgram.clients.common.v1.shared_response.BaseResponse):
171@dataclass
172class UsageFieldsOptions(BaseResponse):
173    """
174    Usage Fields Options
175    """
176
177    start: Optional[str] = ""
178    end: Optional[str] = ""

Usage Fields Options

UsageFieldsOptions(start: Optional[str] = '', end: Optional[str] = '')
start: Optional[str] = ''
end: Optional[str] = ''
@dataclass
class Message(deepgram.clients.common.v1.shared_response.BaseResponse):
19@dataclass
20class Message(BaseResponse):
21    """
22    Message from the Deepgram Platform
23    """
24
25    message: str = ""

Message from the Deepgram Platform

Message(message: str = '')
message: str = ''
@dataclass
class ProjectsResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
41@dataclass
42class ProjectsResponse(BaseResponse):
43    """
44    Projects Response object
45    """
46
47    projects: List[Project] = field(default_factory=list)
48
49    def __getitem__(self, key):
50        _dict = self.to_dict()
51        if "projects" in _dict:
52            _dict["projects"] = [
53                Project.from_dict(projects) for projects in _dict["projects"]
54            ]
55        return _dict[key]

Projects Response object

ProjectsResponse( projects: List[Project] = <factory>)
projects: List[Project]
@dataclass
class ModelResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
127@dataclass
128class ModelResponse(BaseResponse):
129    """
130    ModelResponse class used to define the properties of a single model.
131    """
132
133    name: str = ""
134    canonical_name: str = ""
135    architecture: str = ""
136    language: str = ""
137    version: str = ""
138    uuid: str = ""
139    metadata: Optional[TTSMetadata] = field(
140        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
141    )
142
143    def __getitem__(self, key):
144        _dict = self.to_dict()
145        if "metadata" in _dict:
146            _dict["metadata"] = [
147                TTSMetadata.from_dict(metadata) for metadata in _dict["metadata"]
148            ]
149        return _dict[key]

ModelResponse class used to define the properties of a single model.

ModelResponse( name: str = '', canonical_name: str = '', architecture: str = '', language: str = '', version: str = '', uuid: str = '', metadata: Optional[TTSMetadata] = None)
name: str = ''
canonical_name: str = ''
architecture: str = ''
language: str = ''
version: str = ''
uuid: str = ''
metadata: Optional[TTSMetadata] = None
@dataclass
class ModelsResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
152@dataclass
153class ModelsResponse(BaseResponse):
154    """
155    ModelsResponse class used to obtain a list of models.
156    """
157
158    stt: List[STTDetails] = field(default_factory=list)
159    tts: List[TTSDetails] = field(default_factory=list)
160
161    def __getitem__(self, key):
162        _dict = self.to_dict()
163        if "stt" in _dict:
164            _dict["stt"] = [STTDetails.from_dict(stt) for stt in _dict["stt"]]
165        if "tts" in _dict:
166            _dict["tts"] = [TTSDetails.from_dict(tts) for tts in _dict["tts"]]
167        return _dict[key]

ModelsResponse class used to obtain a list of models.

ModelsResponse( stt: List[STTDetails] = <factory>, tts: List[TTSDetails] = <factory>)
stt: List[STTDetails]
tts: List[TTSDetails]
@dataclass
class MembersResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
185@dataclass
186class MembersResponse(BaseResponse):
187    """
188    Members Response object
189    """
190
191    members: List[Member] = field(default_factory=list)
192
193    def __getitem__(self, key):
194        _dict = self.to_dict()
195        if "members" in _dict:
196            _dict["members"] = [
197                Member.from_dict(members) for members in _dict["members"]
198            ]
199        return _dict[key]

Members Response object

MembersResponse( members: List[Member] = <factory>)
members: List[Member]
@dataclass
class KeyResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
229@dataclass
230class KeyResponse(BaseResponse):
231    """
232    Key Response object
233    """
234
235    api_key: Key
236    member: Member
237
238    def __getitem__(self, key):
239        _dict = self.to_dict()
240        if "api_key" in _dict:
241            _dict["api_key"] = Key.from_dict(_dict["api_key"])
242        if "member" in _dict:
243            _dict["member"] = Member.from_dict(_dict["member"])
244        return _dict[key]

Key Response object

KeyResponse( api_key: Key, member: Member)
api_key: Key
member: Member
@dataclass
class KeysResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
247@dataclass
248class KeysResponse(BaseResponse):
249    """
250    Keys Response object
251    """
252
253    api_keys: List[KeyResponse] = field(default_factory=list)
254
255    def __getitem__(self, key):
256        _dict = self.to_dict()
257        if "api_keys" in _dict:
258            _dict["api_keys"] = [
259                KeyResponse.from_dict(api_keys) for api_keys in _dict["api_keys"]
260            ]
261        return _dict[key]

Keys Response object

KeysResponse( api_keys: List[KeyResponse] = <factory>)
api_keys: List[KeyResponse]
@dataclass
class ScopesResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
267@dataclass
268class ScopesResponse(BaseResponse):
269    """
270    Scopes Response object
271    """
272
273    scopes: List[str] = field(default_factory=list)
274
275    def __getitem__(self, key):
276        _dict = self.to_dict()
277        if "scopes" in _dict:
278            _dict["scopes"] = [str(scopes) for scopes in _dict["scopes"]]
279        return _dict[key]

Scopes Response object

ScopesResponse(scopes: List[str] = <factory>)
scopes: List[str]
@dataclass
class InvitesResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
295@dataclass
296class InvitesResponse(BaseResponse):
297    """
298    Invites Response object
299    """
300
301    invites: List[Invite] = field(default_factory=list)
302
303    def __getitem__(self, key):
304        _dict = self.to_dict()
305        if "invites" in _dict:
306            _dict["invites"] = [
307                Invite.from_dict(invites) for invites in _dict["invites"]
308            ]
309        return _dict[key]

Invites Response object

InvitesResponse( invites: List[Invite] = <factory>)
invites: List[Invite]
@dataclass
class UsageRequest(deepgram.clients.common.v1.shared_response.BaseResponse):
484@dataclass
485class UsageRequest(BaseResponse):  # pylint: disable=too-many-instance-attributes
486    """
487    Usage Request object
488    """
489
490    response: UsageResponse
491    project_uuid: str = ""
492    request_id: str = ""
493    created: str = ""
494    path: str = ""
495    api_key_id: str = ""
496    callback: Optional[Callback] = field(
497        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
498    )
499    accessor: Optional[str] = field(
500        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
501    )
502
503    def __getitem__(self, key):
504        _dict = self.to_dict()
505        if "response" in _dict:
506            _dict["response"] = UsageResponse.from_dict(_dict["response"])
507        if "callback" in _dict:
508            _dict["callback"] = Callback.from_dict(_dict["callback"])
509        return _dict[key]

Usage Request object

UsageRequest( response: UsageResponse, project_uuid: str = '', request_id: str = '', created: str = '', path: str = '', api_key_id: str = '', callback: Optional[Callback] = None, accessor: Optional[str] = None)
response: UsageResponse
project_uuid: str = ''
request_id: str = ''
created: str = ''
path: str = ''
api_key_id: str = ''
callback: Optional[Callback] = None
accessor: Optional[str] = None
@dataclass
class UsageResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
449@dataclass
450class UsageResponse(BaseResponse):
451    """
452    UsageResponse object
453    """
454
455    details: Optional[STTUsageDetails] = field(
456        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
457    )
458    code: int = 0
459    completed: str = ""
460    message: Optional[str] = field(
461        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
462    )
463    tts_details: Optional[TTSUsageDetails] = field(
464        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
465    )
466    token_details: List[TokenDetail] = field(
467        default_factory=list, metadata=dataclass_config(exclude=lambda f: f is list)
468    )
469
470    def __getitem__(self, key):
471        _dict = self.to_dict()
472        if "details" in _dict:
473            _dict["details"] = STTUsageDetails.from_dict(_dict["details"])
474        if "tts_details" in _dict:
475            _dict["tts_details"] = TTSUsageDetails.from_dict(_dict["tts_details"])
476        if "token_details" in _dict:
477            _dict["token_details"] = [
478                TokenDetail.from_dict(token_details)
479                for token_details in _dict["token_details"]
480            ]
481        return _dict[key]

UsageResponse object

UsageResponse( details: Optional[STTUsageDetails] = None, code: int = 0, completed: str = '', message: Optional[str] = None, tts_details: Optional[TTSUsageDetails] = None, token_details: List[TokenDetail] = <factory>)
details: Optional[STTUsageDetails] = None
code: int = 0
completed: str = ''
message: Optional[str] = None
tts_details: Optional[TTSUsageDetails] = None
token_details: List[TokenDetail]
@dataclass
class UsageRequestsResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
512@dataclass
513class UsageRequestsResponse(BaseResponse):
514    """
515    Usage Requests Response object
516    """
517
518    page: int = 0
519    limit: int = 0
520    requests: List[UsageRequest] = field(default_factory=list)
521
522    def __getitem__(self, key):
523        _dict = self.to_dict()
524        if "requests" in _dict:
525            _dict["requests"] = [
526                UsageRequest.from_dict(requests) for requests in _dict["requests"]
527            ]
528        return _dict[key]

Usage Requests Response object

UsageRequestsResponse( page: int = 0, limit: int = 0, requests: List[UsageRequest] = <factory>)
page: int = 0
limit: int = 0
requests: List[UsageRequest]
@dataclass
class UsageSummaryResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
584@dataclass
585class UsageSummaryResponse(BaseResponse):
586    """
587    Usage Summary Response object
588    """
589
590    resolution: Resolution
591    start: str = ""
592    end: str = ""
593    results: List[UsageSummaryResults] = field(default_factory=list)
594
595    def __getitem__(self, key):
596        _dict = self.to_dict()
597        if "resolution" in _dict:
598            _dict["resolution"] = Resolution.from_dict(_dict["resolution"])
599        if "results" in _dict:
600            _dict["results"] = [
601                UsageSummaryResults.from_dict(results) for results in _dict["results"]
602            ]
603        return _dict[key]

Usage Summary Response object

UsageSummaryResponse( resolution: Resolution, start: str = '', end: str = '', results: List[UsageSummaryResults] = <factory>)
resolution: Resolution
start: str = ''
end: str = ''
results: List[UsageSummaryResults]
@dataclass
class UsageFieldsResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
618@dataclass
619class UsageFieldsResponse(BaseResponse):
620    """
621    Usage Fields Response object
622    """
623
624    tags: Optional[List[str]] = field(
625        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
626    )
627    models: List[UsageModel] = field(default_factory=list)
628    processing_methods: List[str] = field(default_factory=list)
629    features: List[str] = field(default_factory=list)
630    languages: Optional[List[str]] = field(
631        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
632    )
633
634    def __getitem__(self, key):
635        _dict = self.to_dict()
636        if "tags" in _dict:
637            _dict["tags"] = [str(tags) for tags in _dict["tags"]]
638        if "models" in _dict:
639            _dict["models"] = [
640                UsageModel.from_dict(models) for models in _dict["models"]
641            ]
642        if "processing_methods" in _dict:
643            _dict["processing_methods"] = [
644                str(processing_methods)
645                for processing_methods in _dict["processing_methods"]
646            ]
647        if "features" in _dict:
648            _dict["features"] = [str(features) for features in _dict["features"]]
649        if "languages" in _dict:
650            _dict["languages"] = [str(languages) for languages in _dict["languages"]]
651        return _dict[key]

Usage Fields Response object

UsageFieldsResponse( tags: Optional[List[str]] = None, models: List[UsageModel] = <factory>, processing_methods: List[str] = <factory>, features: List[str] = <factory>, languages: Optional[List[str]] = None)
tags: Optional[List[str]] = None
models: List[UsageModel]
processing_methods: List[str]
features: List[str]
languages: Optional[List[str]] = None
@dataclass
class BalancesResponse(deepgram.clients.common.v1.shared_response.BaseResponse):
669@dataclass
670class BalancesResponse(BaseResponse):
671    """
672    Balances Response object
673    """
674
675    balances: List[Balance] = field(default_factory=list)
676
677    def __getitem__(self, key):
678        _dict = self.to_dict()
679        if "balances" in _dict:
680            _dict["balances"] = [
681                Balance.from_dict(balances) for balances in _dict["balances"]
682            ]
683        return _dict[key]

Balances Response object

BalancesResponse( balances: List[Balance] = <factory>)
balances: List[Balance]
@dataclass
class Project(deepgram.clients.common.v1.shared_response.BaseResponse):
31@dataclass
32class Project(BaseResponse):
33    """
34    Project object
35    """
36
37    project_id: str = ""
38    name: str = ""

Project object

Project(project_id: str = '', name: str = '')
project_id: str = ''
name: str = ''
@dataclass
class STTDetails(deepgram.clients.common.v1.shared_response.BaseResponse):
61@dataclass
62class STTDetails(BaseResponse):  # pylint: disable=too-many-instance-attributes
63    """
64    STTDetails class used to define the properties of the Speech-to-Text model response object.
65    """
66
67    name: str = ""
68    canonical_name: str = ""
69    architecture: str = ""
70    languages: List[str] = field(default_factory=list)
71    version: str = ""
72    uuid: str = ""
73    batch: bool = False
74    streaming: bool = False
75    formatted_output: bool = False
76
77    def __getitem__(self, key):
78        _dict = self.to_dict()
79        if "languages" in _dict:
80            _dict["languages"] = [str(languages) for languages in _dict["languages"]]
81        return _dict[key]

STTDetails class used to define the properties of the Speech-to-Text model response object.

STTDetails( name: str = '', canonical_name: str = '', architecture: str = '', languages: List[str] = <factory>, version: str = '', uuid: str = '', batch: bool = False, streaming: bool = False, formatted_output: bool = False)
name: str = ''
canonical_name: str = ''
architecture: str = ''
languages: List[str]
version: str = ''
uuid: str = ''
batch: bool = False
streaming: bool = False
formatted_output: bool = False
@dataclass
class TTSMetadata(deepgram.clients.common.v1.shared_response.BaseResponse):
84@dataclass
85class TTSMetadata(BaseResponse):
86    """
87    TTSMetadata class used to define the properties for a given STT or TTS model.
88    """
89
90    accent: str = ""
91    color: str = ""
92    image: str = ""
93    sample: str = ""
94    tags: Optional[List[str]] = field(
95        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
96    )

TTSMetadata class used to define the properties for a given STT or TTS model.

TTSMetadata( accent: str = '', color: str = '', image: str = '', sample: str = '', tags: Optional[List[str]] = None)
accent: str = ''
color: str = ''
image: str = ''
sample: str = ''
tags: Optional[List[str]] = None
@dataclass
class TTSDetails(deepgram.clients.common.v1.shared_response.BaseResponse):
 99@dataclass
100class TTSDetails(BaseResponse):
101    """
102    TTSDetails class used to define the properties of the Text-to-Speech model response object.
103    """
104
105    name: str = ""
106    canonical_name: str = ""
107    architecture: str = ""
108    languages: List[str] = field(default_factory=list)
109    version: str = ""
110    uuid: str = ""
111    metadata: Optional[TTSMetadata] = field(
112        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
113    )
114
115    def __getitem__(self, key):
116        _dict = self.to_dict()
117        if "metadata" in _dict:
118            _dict["metadata"] = [
119                TTSMetadata.from_dict(metadata) for metadata in _dict["metadata"]
120            ]
121        return _dict[key]

TTSDetails class used to define the properties of the Text-to-Speech model response object.

TTSDetails( name: str = '', canonical_name: str = '', architecture: str = '', languages: List[str] = <factory>, version: str = '', uuid: str = '', metadata: Optional[TTSMetadata] = None)
name: str = ''
canonical_name: str = ''
architecture: str = ''
languages: List[str]
version: str = ''
uuid: str = ''
metadata: Optional[TTSMetadata] = None
@dataclass
class Member(deepgram.clients.common.v1.shared_response.BaseResponse):
173@dataclass
174class Member(BaseResponse):
175    """
176    Member object
177    """
178
179    email: str = ""
180    first_name: str = ""
181    last_name: str = ""
182    member_id: str = ""

Member object

Member( email: str = '', first_name: str = '', last_name: str = '', member_id: str = '')
email: str = ''
first_name: str = ''
last_name: str = ''
member_id: str = ''
@dataclass
class Key(deepgram.clients.common.v1.shared_response.BaseResponse):
205@dataclass
206class Key(BaseResponse):
207    """
208    Key object
209    """
210
211    api_key_id: str = ""
212    key: Optional[str] = field(
213        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
214    )
215    comment: Optional[str] = ""
216    created: str = ""
217    scopes: List[str] = field(default_factory=list)
218    expiration_date: str = field(
219        default="", metadata=dataclass_config(exclude=lambda f: f is None)
220    )
221
222    def __getitem__(self, key):
223        _dict = self.to_dict()
224        if "scopes" in _dict:
225            _dict["scopes"] = [str(scopes) for scopes in _dict["scopes"]]
226        return _dict[key]

Key object

Key( api_key_id: str = '', key: Optional[str] = None, comment: Optional[str] = '', created: str = '', scopes: List[str] = <factory>, expiration_date: str = '')
api_key_id: str = ''
key: Optional[str] = None
comment: Optional[str] = ''
created: str = ''
scopes: List[str]
expiration_date: str = ''
@dataclass
class Invite(deepgram.clients.common.v1.shared_response.BaseResponse):
285@dataclass
286class Invite(BaseResponse):
287    """
288    Invite object
289    """
290
291    email: str = ""
292    scope: str = ""

Invite object

Invite(email: str = '', scope: str = '')
email: str = ''
scope: str = ''
@dataclass
class Config(deepgram.clients.common.v1.shared_response.BaseResponse):
315@dataclass
316class Config(BaseResponse):  # pylint: disable=too-many-instance-attributes
317    """
318    Config object
319    """
320
321    language: str = ""
322    model: str = ""
323    punctuate: Optional[bool] = field(
324        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
325    )
326    utterances: Optional[bool] = field(
327        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
328    )
329    diarize: Optional[bool] = field(
330        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
331    )
332    smart_format: Optional[bool] = field(
333        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
334    )
335    interim_results: Optional[bool] = field(
336        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
337    )
338    topics: Optional[bool] = field(
339        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
340    )
341    intents: Optional[bool] = field(
342        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
343    )
344    sentiment: Optional[bool] = field(
345        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
346    )
347    summarize: Optional[bool] = field(
348        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
349    )

Config object

Config( language: str = '', model: str = '', punctuate: Optional[bool] = None, utterances: Optional[bool] = None, diarize: Optional[bool] = None, smart_format: Optional[bool] = None, interim_results: Optional[bool] = None, topics: Optional[bool] = None, intents: Optional[bool] = None, sentiment: Optional[bool] = None, summarize: Optional[bool] = None)
language: str = ''
model: str = ''
punctuate: Optional[bool] = None
utterances: Optional[bool] = None
diarize: Optional[bool] = None
smart_format: Optional[bool] = None
interim_results: Optional[bool] = None
topics: Optional[bool] = None
intents: Optional[bool] = None
sentiment: Optional[bool] = None
summarize: Optional[bool] = None
@dataclass
class STTUsageDetails(deepgram.clients.common.v1.shared_response.BaseResponse):
352@dataclass
353class STTUsageDetails(BaseResponse):  # pylint: disable=too-many-instance-attributes
354    """
355    Details object
356    """
357
358    config: Config
359    usd: float = 0
360    duration: Optional[float] = field(
361        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
362    )
363    total_audio: Optional[float] = field(
364        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
365    )
366    channels: Optional[int] = field(
367        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
368    )
369    streams: Optional[int] = field(
370        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
371    )
372    method: str = ""
373    tier: Optional[str] = ""
374    models: List[str] = field(default_factory=list)
375    tags: Optional[List[str]] = field(
376        default=None, metadata=dataclass_config(exclude=lambda f: f is None)
377    )
378    features: List[str] = field(default_factory=list)
379
380    def __getitem__(self, key):
381        _dict = self.to_dict()
382        if "models" in _dict:
383            _dict["models"] = [str(models) for models in _dict["models"]]
384        if "tags" in _dict:
385            _dict["tags"] = [str(tags) for tags in _dict["tags"]]
386        if "features" in _dict:
387            _dict["features"] = [str(features) for features in _dict["features"]]
388        if "config" in _dict:
389            _dict["config"] = Config.from_dict(_dict["config"])
390        return _dict[key]

Details object

STTUsageDetails( config: Config, usd: float = 0, duration: Optional[float] = None, total_audio: Optional[float] = None, channels: Optional[int] = None, streams: Optional[int] = None, method: str = '', tier: Optional[str] = '', models: List[str] = <factory>, tags: Optional[List[str]] = None, features: List[str] = <factory>)
config: Config
usd: float = 0
duration: Optional[float] = None
total_audio: Optional[float] = None
channels: Optional[int] = None
streams: Optional[int] = None
method: str = ''
tier: Optional[str] = ''
models: List[str]
tags: Optional[List[str]] = None
features: List[str]
@dataclass
class Callback(deepgram.clients.common.v1.shared_response.BaseResponse):
393@dataclass
394class Callback(BaseResponse):
395    """
396    Callback object
397    """
398
399    attempts: int = 0
400    code: int = 0
401    completed: str = ""

Callback object

Callback(attempts: int = 0, code: int = 0, completed: str = '')
attempts: int = 0
code: int = 0
completed: str = ''
@dataclass
class TokenDetail(deepgram.clients.common.v1.shared_response.BaseResponse):
404@dataclass
405class TokenDetail(BaseResponse):
406    """
407    Token Detail object
408    """
409
410    feature: str = ""
411    input: int = 0
412    model: str = ""
413    output: int = 0

Token Detail object

TokenDetail(feature: str = '', input: int = 0, model: str = '', output: int = 0)
feature: str = ''
input: int = 0
model: str = ''
output: int = 0
@dataclass
class SpeechSegment(deepgram.clients.common.v1.shared_response.BaseResponse):
416@dataclass
417class SpeechSegment(BaseResponse):
418    """
419    Speech Segment object
420    """
421
422    characters: int = 0
423    model: str = ""
424    tier: str = ""

Speech Segment object

SpeechSegment(characters: int = 0, model: str = '', tier: str = '')
characters: int = 0
model: str = ''
tier: str = ''
@dataclass
class TTSUsageDetails(deepgram.clients.common.v1.shared_response.BaseResponse):
427@dataclass
428class TTSUsageDetails(BaseResponse):
429    """
430    TTS Details object
431    """
432
433    duration: float = 0
434    speech_segments: List[SpeechSegment] = field(default_factory=list)
435    # pylint: disable=fixme
436    # TODO: audio_metadata: None
437    # pylint: enable=fixme
438
439    def __getitem__(self, key):
440        _dict = self.to_dict()
441        if "speech_segments" in _dict:
442            _dict["speech_segments"] = [
443                SpeechSegment.from_dict(speech_segments)
444                for speech_segments in _dict["speech_segments"]
445            ]
446        return _dict[key]

TTS Details object

TTSUsageDetails( duration: float = 0, speech_segments: List[SpeechSegment] = <factory>)
duration: float = 0
speech_segments: List[SpeechSegment]
@dataclass
class STTTokens(deepgram.clients.common.v1.shared_response.BaseResponse):
531@dataclass
532class STTTokens(BaseResponse):
533    """
534    STTTokens object
535    """
536
537    tokens_in: int = 0
538    out: int = 0

STTTokens object

STTTokens(tokens_in: int = 0, out: int = 0)
tokens_in: int = 0
out: int = 0
@dataclass
class TTSTokens(deepgram.clients.common.v1.shared_response.BaseResponse):
541@dataclass
542class TTSTokens(BaseResponse):
543    """
544    TTSTokens object
545    """
546
547    characters: int = 0
548    requests: int = 0

TTSTokens object

TTSTokens(characters: int = 0, requests: int = 0)
characters: int = 0
requests: int = 0
@dataclass
class UsageSummaryResults(deepgram.clients.common.v1.shared_response.BaseResponse):
551@dataclass
552class UsageSummaryResults(BaseResponse):
553    """
554    Results object
555    """
556
557    tokens: STTTokens
558    tts: TTSTokens
559    start: str = ""
560    end: str = ""
561    hours: int = 0
562    total_hours: int = 0
563    requests: int = 0
564
565    def __getitem__(self, key):
566        _dict = self.to_dict()
567        if "tokens" in _dict:
568            _dict["tokens"] = STTTokens.from_dict(_dict["tokens"])
569        if "tts" in _dict:
570            _dict["tts"] = TTSTokens.from_dict(_dict["tts"])
571        return _dict[key]

Results object

UsageSummaryResults( tokens: STTTokens, tts: TTSTokens, start: str = '', end: str = '', hours: int = 0, total_hours: int = 0, requests: int = 0)
tokens: STTTokens
tts: TTSTokens
start: str = ''
end: str = ''
hours: int = 0
total_hours: int = 0
requests: int = 0
@dataclass
class Resolution(deepgram.clients.common.v1.shared_response.BaseResponse):
574@dataclass
575class Resolution(BaseResponse):
576    """
577    Resolution object
578    """
579
580    units: str = ""
581    amount: int = 0

Resolution object

Resolution(units: str = '', amount: int = 0)
units: str = ''
amount: int = 0
@dataclass
class UsageModel(deepgram.clients.common.v1.shared_response.BaseResponse):
606@dataclass
607class UsageModel(BaseResponse):
608    """
609    Usage Model object
610    """
611
612    name: str = ""
613    language: str = ""
614    version: str = ""
615    model_id: str = ""

Usage Model object

UsageModel( name: str = '', language: str = '', version: str = '', model_id: str = '')
name: str = ''
language: str = ''
version: str = ''
model_id: str = ''
@dataclass
class Balance(deepgram.clients.common.v1.shared_response.BaseResponse):
657@dataclass
658class Balance(BaseResponse):
659    """
660    Balance object
661    """
662
663    balance_id: str = ""
664    amount: str = ""
665    units: str = ""
666    purchase_order_id: str = ""

Balance object

Balance( balance_id: str = '', amount: str = '', units: str = '', purchase_order_id: str = '')
balance_id: str = ''
amount: str = ''
units: str = ''
purchase_order_id: str = ''
  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) -> 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) -> 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) -> 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, ProjectOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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, KeyOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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, ScopeOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> 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) -> 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) -> 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, InviteOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> 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) -> 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) -> 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) -> 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, UsageRequestOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> 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) -> 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, UsageSummaryOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> 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, UsageFieldsOptions], timeout: Optional[httpx.Timeout] = None, addons: Optional[Dict] = None, headers: Optional[Dict] = None, **kwargs) -> 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) -> 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) -> 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) -> 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

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

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

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

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

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

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

Please see get_projects for more information.

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

Gets a list of projects for the authenticated user.

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

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

Gets details for a specific project.

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

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

Updates a project's settings.

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

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

Updates a project's settings.

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

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

Please see get_project_models.

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

Gets models for a specific project.

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

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

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

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

Gets a single model for a specific project.

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

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

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

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

Please see get_models for more information.

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

Gets all models available.

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

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

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

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

Gets information for a specific model.

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

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

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

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

Please see get_keys for more information.

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

Gets a list of keys for a project.

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

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

Gets details for a specific key.

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

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

Please see get_members for more information.

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

Gets a list of members for a project.

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

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

Removes a member from a project.

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

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

Gets a list of scopes for a member.

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

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

Updates a member's scopes.

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

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

Please see get_invites for more information.

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

Gets a list of invites for a project.

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

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

Sends an invite to a project.

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

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

Sends an invite to a project.

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

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

Deletes an invite from a project.

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

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

Gets a list of usage requests for a project.

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

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

Gets details for a specific usage request.

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

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

Gets a summary of usage for a project.

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

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

Gets a list of usage fields for a project.

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

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

Please see get_balances for more information.

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

Gets a list of balances for a project.

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

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

Gets details for a specific balance.

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