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
16@dataclass 17class ProjectOptions(BaseResponse): 18 """ 19 Project Options 20 """ 21 22 name: str = ""
Project Options
Inherited Members
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
Inherited Members
61@dataclass 62class ScopeOptions(BaseResponse): 63 """ 64 Scope Options 65 """ 66 67 scope: str = ""
Scope Options
Inherited Members
70@dataclass 71class InviteOptions(BaseResponse): 72 """ 73 Invite Options 74 """ 75 76 email: str = "" 77 scope: str = ""
Invite Options
Inherited Members
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
Inherited Members
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
Inherited Members
171@dataclass 172class UsageFieldsOptions(BaseResponse): 173 """ 174 Usage Fields Options 175 """ 176 177 start: Optional[str] = "" 178 end: Optional[str] = ""
Usage Fields Options
Inherited Members
19@dataclass 20class Message(BaseResponse): 21 """ 22 Message from the Deepgram Platform 23 """ 24 25 message: str = ""
Message from the Deepgram Platform
Inherited Members
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
Inherited Members
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.
Inherited Members
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.
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
31@dataclass 32class Project(BaseResponse): 33 """ 34 Project object 35 """ 36 37 project_id: str = "" 38 name: str = ""
Project object
Inherited Members
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.
Inherited Members
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.
Inherited Members
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.
Inherited Members
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
Inherited Members
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
Inherited Members
285@dataclass 286class Invite(BaseResponse): 287 """ 288 Invite object 289 """ 290 291 email: str = "" 292 scope: str = ""
Invite object
Inherited Members
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
Inherited Members
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
Inherited Members
393@dataclass 394class Callback(BaseResponse): 395 """ 396 Callback object 397 """ 398 399 attempts: int = 0 400 code: int = 0 401 completed: str = ""
Callback object
Inherited Members
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
Inherited Members
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
Inherited Members
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
Inherited Members
531@dataclass 532class STTTokens(BaseResponse): 533 """ 534 STTTokens object 535 """ 536 537 tokens_in: int = 0 538 out: int = 0
STTTokens object
Inherited Members
541@dataclass 542class TTSTokens(BaseResponse): 543 """ 544 TTSTokens object 545 """ 546 547 characters: int = 0 548 requests: int = 0
TTSTokens object
Inherited Members
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
Inherited Members
574@dataclass 575class Resolution(BaseResponse): 576 """ 577 Resolution object 578 """ 579 580 units: str = "" 581 amount: int = 0
Resolution object
Inherited Members
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
Inherited Members
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
Inherited Members
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.
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.
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
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
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
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
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
Deletes a project.
Reference: https://developers.deepgram.com/reference/delete-project
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.
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.
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.
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.
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.
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.
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.
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
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
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
Creates a new key.
Reference: https://developers.deepgram.com/reference/create-key
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
Deletes a key.
Reference: https://developers.deepgram.com/reference/delete-key
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.
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
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
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
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
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.
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
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
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
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
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
Leaves a project.
Reference: https://developers.deepgram.com/reference/leave-project
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
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
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
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
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.
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
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.
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.
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
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
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
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
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
Deletes a project.
Reference: https://developers.deepgram.com/reference/delete-project
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.
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.
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.
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.
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.
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.
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.
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
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
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
Creates a new key.
Reference: https://developers.deepgram.com/reference/create-key
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
Deletes a key.
Reference: https://developers.deepgram.com/reference/delete-key
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.
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
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
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
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
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.
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
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
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
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
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
Leaves a project.
Reference: https://developers.deepgram.com/reference/leave-project
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
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
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
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
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.
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
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