pangea-sdk 6.2.0b1__py3-none-any.whl → 6.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pangea/__init__.py +9 -1
- pangea/asyncio/__init__.py +1 -0
- pangea/asyncio/file_uploader.py +4 -2
- pangea/asyncio/request.py +70 -169
- pangea/asyncio/services/__init__.py +2 -1
- pangea/asyncio/services/ai_guard.py +9 -12
- pangea/asyncio/services/audit.py +13 -307
- pangea/asyncio/services/authn.py +40 -32
- pangea/asyncio/services/authz.py +51 -17
- pangea/asyncio/services/base.py +4 -0
- pangea/asyncio/services/file_scan.py +8 -2
- pangea/asyncio/services/intel.py +26 -28
- pangea/asyncio/services/redact.py +11 -268
- pangea/asyncio/services/sanitize.py +5 -1
- pangea/asyncio/services/share.py +5 -1
- pangea/asyncio/services/vault.py +71 -55
- pangea/audit_logger.py +3 -1
- pangea/deep_verify.py +13 -13
- pangea/deprecated.py +1 -1
- pangea/dump_audit.py +2 -3
- pangea/exceptions.py +8 -5
- pangea/file_uploader.py +4 -0
- pangea/request.py +80 -200
- pangea/response.py +21 -18
- pangea/services/__init__.py +2 -1
- pangea/services/ai_guard.py +35 -24
- pangea/services/audit/audit.py +17 -314
- pangea/services/audit/models.py +69 -307
- pangea/services/audit/signing.py +1 -1
- pangea/services/audit/util.py +10 -10
- pangea/services/authn/authn.py +39 -31
- pangea/services/authn/models.py +183 -148
- pangea/services/authz.py +108 -60
- pangea/services/base.py +7 -4
- pangea/services/embargo.py +6 -0
- pangea/services/file_scan.py +8 -2
- pangea/services/intel.py +36 -19
- pangea/services/redact.py +14 -476
- pangea/services/sanitize.py +5 -1
- pangea/services/share/share.py +13 -7
- pangea/services/vault/models/asymmetric.py +4 -0
- pangea/services/vault/models/common.py +15 -12
- pangea/services/vault/models/keys.py +4 -9
- pangea/services/vault/models/secret.py +3 -8
- pangea/services/vault/models/symmetric.py +4 -0
- pangea/services/vault/vault.py +69 -59
- pangea/tools.py +13 -9
- pangea/utils.py +3 -5
- pangea/verify_audit.py +23 -27
- {pangea_sdk-6.2.0b1.dist-info → pangea_sdk-6.3.0.dist-info}/METADATA +36 -17
- pangea_sdk-6.3.0.dist-info/RECORD +60 -0
- {pangea_sdk-6.2.0b1.dist-info → pangea_sdk-6.3.0.dist-info}/WHEEL +1 -1
- pangea/asyncio/services/management.py +0 -576
- pangea/services/management.py +0 -720
- pangea_sdk-6.2.0b1.dist-info/RECORD +0 -62
pangea/services/authn/models.py
CHANGED
@@ -4,63 +4,25 @@
|
|
4
4
|
from __future__ import annotations
|
5
5
|
|
6
6
|
import enum
|
7
|
-
from
|
8
|
-
from
|
7
|
+
from collections.abc import Mapping
|
8
|
+
from typing import Annotated, Literal, Optional, Union
|
9
9
|
|
10
|
-
from
|
10
|
+
from pydantic import Field
|
11
11
|
|
12
12
|
import pangea.services.intel as im
|
13
|
-
from pangea.
|
14
|
-
from pangea.response import APIRequestModel, APIResponseModel, PangeaResponseResult
|
13
|
+
from pangea.response import APIRequestModel, APIResponseModel, PangeaDateTime, PangeaResponseResult
|
15
14
|
from pangea.services.vault.models.common import JWK, JWKec, JWKrsa
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
@first_name.setter
|
29
|
-
def first_name(self, value: str) -> None:
|
30
|
-
warn(
|
31
|
-
'`Profile.first_name` is deprecated. Use `Profile["first_name"]` instead.', DeprecationWarning, stacklevel=2
|
32
|
-
)
|
33
|
-
self["first_name"] = value
|
34
|
-
|
35
|
-
@property
|
36
|
-
def last_name(self) -> str:
|
37
|
-
warn('`Profile.last_name` is deprecated. Use `Profile["last_name"]` instead.', DeprecationWarning, stacklevel=2)
|
38
|
-
return self["last_name"]
|
39
|
-
|
40
|
-
@last_name.setter
|
41
|
-
def last_name(self, value: str) -> None:
|
42
|
-
warn('`Profile.last_name` is deprecated. Use `Profile["last_name"]` instead.', DeprecationWarning, stacklevel=2)
|
43
|
-
self["last_name"] = value
|
44
|
-
|
45
|
-
@property
|
46
|
-
def phone(self) -> str:
|
47
|
-
warn('`Profile.phone` is deprecated. Use `Profile["phone"]` instead.', DeprecationWarning, stacklevel=2)
|
48
|
-
return self["phone"]
|
49
|
-
|
50
|
-
@phone.setter
|
51
|
-
def phone(self, value: str) -> None:
|
52
|
-
warn('`Profile.phone` is deprecated. Use `Profile["phone"]` instead.', DeprecationWarning, stacklevel=2)
|
53
|
-
self["phone"] = value
|
54
|
-
|
55
|
-
@deprecated("`Profile.model_dump()` is deprecated. `Profile` is already a `dict[str, str]`.")
|
56
|
-
@pangea_deprecated(reason="`Profile` is already a `dict[str, str]`.")
|
57
|
-
def model_dump(self, *, exclude_none: bool = False) -> dict[str, str]:
|
58
|
-
warn(
|
59
|
-
"`Profile.model_dump()` is deprecated. `Profile` is already a `dict[str, str]`.",
|
60
|
-
DeprecationWarning,
|
61
|
-
stacklevel=2,
|
62
|
-
)
|
63
|
-
return self
|
16
|
+
GroupId = Annotated[str, Field(pattern="^pgi_[a-z2-7]{32}$")]
|
17
|
+
Identity = Annotated[str, Field(pattern="^[a-zA-Z0-9 '.:/_-]+$")]
|
18
|
+
Scope = Annotated[str, Field(pattern="^[a-zA-Z0-9:*/_=-]+$")]
|
19
|
+
Token = Annotated[
|
20
|
+
str, Field(pattern="^(p(ti|tr|ts|tu|cl)_[a-z2-7]{32})|([A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+)$")
|
21
|
+
]
|
22
|
+
TokenId = Annotated[str, Field(pattern="^pmt_[a-z2-7]{32}$")]
|
23
|
+
TokenType = Literal[
|
24
|
+
"client", "service", "service_account", "service_account_client", "service_account_pangea", "session", "user"
|
25
|
+
]
|
64
26
|
|
65
27
|
|
66
28
|
class ClientPasswordChangeRequest(APIRequestModel):
|
@@ -73,10 +35,6 @@ class ClientPasswordChangeResult(PangeaResponseResult):
|
|
73
35
|
pass
|
74
36
|
|
75
37
|
|
76
|
-
class ClientTokenCheckRequest(APIRequestModel):
|
77
|
-
token: str
|
78
|
-
|
79
|
-
|
80
38
|
class IPIntelligence(PangeaResponseResult):
|
81
39
|
is_bad: bool
|
82
40
|
is_vpn: bool
|
@@ -104,8 +62,8 @@ class SessionToken(PangeaResponseResult):
|
|
104
62
|
expire: str
|
105
63
|
identity: str
|
106
64
|
email: str
|
107
|
-
scopes: Optional[
|
108
|
-
profile:
|
65
|
+
scopes: Optional[list[Scope]] = None
|
66
|
+
profile: dict[str, str]
|
109
67
|
created_at: str
|
110
68
|
intelligence: Optional[Intelligence] = None
|
111
69
|
|
@@ -114,8 +72,45 @@ class LoginToken(SessionToken):
|
|
114
72
|
token: str
|
115
73
|
|
116
74
|
|
117
|
-
class ClientTokenCheckResult(
|
118
|
-
|
75
|
+
class ClientTokenCheckResult(PangeaResponseResult):
|
76
|
+
id: TokenId
|
77
|
+
"""An ID for a token"""
|
78
|
+
|
79
|
+
type: TokenType
|
80
|
+
"""A token type"""
|
81
|
+
|
82
|
+
life: Annotated[int, Field(gt=0)]
|
83
|
+
"""A positive time duration in seconds"""
|
84
|
+
|
85
|
+
expire: PangeaDateTime
|
86
|
+
"""A time in ISO-8601 format"""
|
87
|
+
|
88
|
+
enabled: Optional[bool] = None
|
89
|
+
identity: Identity
|
90
|
+
"""The identity of a user or a service"""
|
91
|
+
|
92
|
+
email: str
|
93
|
+
scopes: Annotated[Optional[list[Scope]], Field(examples=[["scope1", "scope2"]])] = None
|
94
|
+
"""A list of scopes"""
|
95
|
+
|
96
|
+
profile: Annotated[dict[str, str], Field(examples=[{"first_name": "Joe", "last_name": "User"}])]
|
97
|
+
"""A user profile as a collection of string properties"""
|
98
|
+
|
99
|
+
created_at: PangeaDateTime
|
100
|
+
"""A time in ISO-8601 format"""
|
101
|
+
|
102
|
+
intelligence: Optional[Intelligence] = None
|
103
|
+
audience: Optional[list[str]] = None
|
104
|
+
client_id: Annotated[
|
105
|
+
Optional[str],
|
106
|
+
Field(
|
107
|
+
examples=["psa_wuk7tvtpswyjtlsx52b7yyi2l7zotv4a"],
|
108
|
+
pattern="^psa_[a-z2-7]{32}$",
|
109
|
+
),
|
110
|
+
] = None
|
111
|
+
"""An ID for a service account"""
|
112
|
+
|
113
|
+
claims: Optional[object] = None
|
119
114
|
|
120
115
|
|
121
116
|
class IDProvider(str, enum.Enum):
|
@@ -245,7 +240,7 @@ class User(PangeaResponseResult):
|
|
245
240
|
username: str
|
246
241
|
"""A username."""
|
247
242
|
|
248
|
-
profile:
|
243
|
+
profile: dict[str, str]
|
249
244
|
"""A user profile as a collection of string properties."""
|
250
245
|
|
251
246
|
verified: bool
|
@@ -270,7 +265,7 @@ class User(PangeaResponseResult):
|
|
270
265
|
last_login_ip: Optional[str] = None
|
271
266
|
last_login_city: Optional[str] = None
|
272
267
|
last_login_country: Optional[str] = None
|
273
|
-
authenticators:
|
268
|
+
authenticators: list[Authenticator] = []
|
274
269
|
"""A list of authenticators."""
|
275
270
|
|
276
271
|
|
@@ -278,7 +273,7 @@ class UserCreateRequest(APIRequestModel):
|
|
278
273
|
email: str
|
279
274
|
"""An email address."""
|
280
275
|
|
281
|
-
profile:
|
276
|
+
profile: Mapping[str, str]
|
282
277
|
"""A user profile as a collection of string properties."""
|
283
278
|
|
284
279
|
username: Optional[str] = None
|
@@ -306,8 +301,8 @@ class UserDeleteResult(PangeaResponseResult):
|
|
306
301
|
|
307
302
|
class UserListFilter(APIRequestModel):
|
308
303
|
accepted_eula_id: Optional[str] = None
|
309
|
-
accepted_eula_id__contains: Optional[
|
310
|
-
accepted_eula_id__in: Optional[
|
304
|
+
accepted_eula_id__contains: Optional[list[str]] = None
|
305
|
+
accepted_eula_id__in: Optional[list[str]] = None
|
311
306
|
created_at: Optional[str] = None
|
312
307
|
created_at__gt: Optional[str] = None
|
313
308
|
created_at__gte: Optional[str] = None
|
@@ -315,32 +310,32 @@ class UserListFilter(APIRequestModel):
|
|
315
310
|
created_at__lte: Optional[str] = None
|
316
311
|
disabled: Optional[bool] = None
|
317
312
|
email: Optional[str] = None
|
318
|
-
email__contains: Optional[
|
319
|
-
email__in: Optional[
|
313
|
+
email__contains: Optional[list[str]] = None
|
314
|
+
email__in: Optional[list[str]] = None
|
320
315
|
id: Optional[str] = None
|
321
|
-
id__contains: Optional[
|
322
|
-
id__in: Optional[
|
316
|
+
id__contains: Optional[list[str]] = None
|
317
|
+
id__in: Optional[list[str]] = None
|
323
318
|
last_login_at: Optional[str] = None
|
324
319
|
last_login_at__gt: Optional[str] = None
|
325
320
|
last_login_at__gte: Optional[str] = None
|
326
321
|
last_login_at__lt: Optional[str] = None
|
327
322
|
last_login_at__lte: Optional[str] = None
|
328
323
|
last_login_ip: Optional[str] = None
|
329
|
-
last_login_ip__contains: Optional[
|
330
|
-
last_login_ip__in: Optional[
|
324
|
+
last_login_ip__contains: Optional[list[str]] = None
|
325
|
+
last_login_ip__in: Optional[list[str]] = None
|
331
326
|
last_login_city: Optional[str] = None
|
332
|
-
last_login_city__contains: Optional[
|
333
|
-
last_login_city__in: Optional[
|
327
|
+
last_login_city__contains: Optional[list[str]] = None
|
328
|
+
last_login_city__in: Optional[list[str]] = None
|
334
329
|
last_login_country: Optional[str] = None
|
335
|
-
last_login_country__contains: Optional[
|
336
|
-
last_login_country__in: Optional[
|
330
|
+
last_login_country__contains: Optional[list[str]] = None
|
331
|
+
last_login_country__in: Optional[list[str]] = None
|
337
332
|
login_count: Optional[int] = None
|
338
333
|
login_count__gt: Optional[int] = None
|
339
334
|
login_count__gte: Optional[int] = None
|
340
335
|
login_count__lt: Optional[int] = None
|
341
336
|
login_count__lte: Optional[int] = None
|
342
337
|
require_mfa: Optional[bool] = None
|
343
|
-
scopes: Optional[
|
338
|
+
scopes: Optional[list[str]] = None
|
344
339
|
verified: Optional[bool] = None
|
345
340
|
|
346
341
|
|
@@ -353,7 +348,7 @@ class UserListRequest(APIRequestModel):
|
|
353
348
|
|
354
349
|
|
355
350
|
class UserListResult(PangeaResponseResult):
|
356
|
-
users:
|
351
|
+
users: list[User]
|
357
352
|
last: Optional[str] = None
|
358
353
|
count: int
|
359
354
|
|
@@ -401,35 +396,35 @@ class UserInviterOrderBy(enum.Enum):
|
|
401
396
|
|
402
397
|
class UserInviteListFilter(APIRequestModel):
|
403
398
|
callback: Optional[str] = None
|
404
|
-
callback__contains: Optional[
|
405
|
-
callback__in: Optional[
|
399
|
+
callback__contains: Optional[list[str]] = None
|
400
|
+
callback__in: Optional[list[str]] = None
|
406
401
|
created_at: Optional[str] = None
|
407
402
|
created_at__gt: Optional[str] = None
|
408
403
|
created_at__gte: Optional[str] = None
|
409
404
|
created_at__lt: Optional[str] = None
|
410
405
|
created_at__lte: Optional[str] = None
|
411
406
|
email: Optional[str] = None
|
412
|
-
email__contains: Optional[
|
413
|
-
email__in: Optional[
|
407
|
+
email__contains: Optional[list[str]] = None
|
408
|
+
email__in: Optional[list[str]] = None
|
414
409
|
expire: Optional[str] = None
|
415
410
|
expire__gt: Optional[str] = None
|
416
411
|
expire__gte: Optional[str] = None
|
417
412
|
expire__lt: Optional[str] = None
|
418
413
|
expire__lte: Optional[str] = None
|
419
414
|
id: Optional[str] = None
|
420
|
-
id__contains: Optional[
|
421
|
-
id__in: Optional[
|
415
|
+
id__contains: Optional[list[str]] = None
|
416
|
+
id__in: Optional[list[str]] = None
|
422
417
|
invite_org: Optional[str] = None
|
423
|
-
invite_org__contains: Optional[
|
424
|
-
invite_org__in: Optional[
|
418
|
+
invite_org__contains: Optional[list[str]] = None
|
419
|
+
invite_org__in: Optional[list[str]] = None
|
425
420
|
inviter: Optional[str] = None
|
426
|
-
inviter__contains: Optional[
|
427
|
-
inviter__in: Optional[
|
421
|
+
inviter__contains: Optional[list[str]] = None
|
422
|
+
inviter__in: Optional[list[str]] = None
|
428
423
|
is_signup: Optional[bool] = None
|
429
424
|
require_mfa: Optional[bool] = None
|
430
425
|
state: Optional[str] = None
|
431
|
-
state__contains: Optional[
|
432
|
-
state__in: Optional[
|
426
|
+
state__contains: Optional[list[str]] = None
|
427
|
+
state__in: Optional[list[str]] = None
|
433
428
|
|
434
429
|
|
435
430
|
class UserInviteListRequest(APIRequestModel):
|
@@ -441,7 +436,7 @@ class UserInviteListRequest(APIRequestModel):
|
|
441
436
|
|
442
437
|
|
443
438
|
class UserInviteListResult(PangeaResponseResult):
|
444
|
-
invites:
|
439
|
+
invites: list[UserInvite]
|
445
440
|
|
446
441
|
|
447
442
|
class UserInviteDeleteRequest(APIRequestModel):
|
@@ -468,7 +463,7 @@ class UserProfileGetResult(User):
|
|
468
463
|
|
469
464
|
|
470
465
|
class UserProfileUpdateRequest(APIRequestModel):
|
471
|
-
profile:
|
466
|
+
profile: Mapping[str, str]
|
472
467
|
"""Updates to a user profile."""
|
473
468
|
|
474
469
|
id: Optional[str] = None
|
@@ -522,7 +517,7 @@ class ClientUserinfoRequest(APIRequestModel):
|
|
522
517
|
|
523
518
|
|
524
519
|
class ClientJWKSResult(PangeaResponseResult):
|
525
|
-
keys:
|
520
|
+
keys: list[Union[JWKec, JWKrsa, JWK]]
|
526
521
|
|
527
522
|
|
528
523
|
class UserAuthenticatorsDeleteRequest(APIRequestModel):
|
@@ -555,7 +550,7 @@ class UserAuthenticatorsListRequest(APIRequestModel):
|
|
555
550
|
|
556
551
|
|
557
552
|
class UserAuthenticatorsListResult(PangeaResponseResult):
|
558
|
-
authenticators:
|
553
|
+
authenticators: list[Authenticator] = []
|
559
554
|
"""A list of authenticators."""
|
560
555
|
|
561
556
|
|
@@ -570,16 +565,16 @@ class FlowCompleteResult(PangeaResponseResult):
|
|
570
565
|
|
571
566
|
class FlowChoiceItem(APIResponseModel):
|
572
567
|
choice: str
|
573
|
-
data:
|
568
|
+
data: dict = {}
|
574
569
|
|
575
570
|
|
576
571
|
class CommonFlowResult(PangeaResponseResult):
|
577
572
|
flow_id: str
|
578
|
-
flow_type:
|
573
|
+
flow_type: list[str] = []
|
579
574
|
email: Optional[str] = None
|
580
575
|
disclaimer: Optional[str] = None
|
581
576
|
flow_phase: str
|
582
|
-
flow_choices:
|
577
|
+
flow_choices: list[FlowChoiceItem] = []
|
583
578
|
|
584
579
|
|
585
580
|
class FlowChoice(enum.Enum):
|
@@ -609,7 +604,7 @@ class FlowRestartDataSMSOTP(APIRequestModel):
|
|
609
604
|
phone: str
|
610
605
|
|
611
606
|
|
612
|
-
FlowRestartData = Union[
|
607
|
+
FlowRestartData = Union[dict, FlowRestartDataSMSOTP]
|
613
608
|
|
614
609
|
|
615
610
|
class FlowRestartRequest(APIRequestModel):
|
@@ -625,7 +620,7 @@ class FlowRestartResult(CommonFlowResult):
|
|
625
620
|
class FlowStartRequest(APIRequestModel):
|
626
621
|
cb_uri: Optional[str] = None
|
627
622
|
email: Optional[str] = None
|
628
|
-
flow_types: Optional[
|
623
|
+
flow_types: Optional[list[FlowType]] = None
|
629
624
|
invitation: Optional[str] = None
|
630
625
|
|
631
626
|
|
@@ -634,7 +629,7 @@ class FlowStartResult(CommonFlowResult):
|
|
634
629
|
|
635
630
|
|
636
631
|
class FlowUpdateDataAgreements(APIRequestModel):
|
637
|
-
agreed:
|
632
|
+
agreed: list[str]
|
638
633
|
|
639
634
|
|
640
635
|
class FlowUpdateDataCaptcha(APIRequestModel):
|
@@ -655,7 +650,7 @@ class FlowUpdateDataPassword(APIRequestModel):
|
|
655
650
|
|
656
651
|
|
657
652
|
class FlowUpdateDataProfile(APIRequestModel):
|
658
|
-
profile:
|
653
|
+
profile: dict[str, str]
|
659
654
|
|
660
655
|
|
661
656
|
class FlowUpdateDataProvisionalEnrollment(APIRequestModel):
|
@@ -695,7 +690,7 @@ class FlowUpdateDataVerifyEmail(APIRequestModel):
|
|
695
690
|
|
696
691
|
|
697
692
|
FlowUpdateData = Union[
|
698
|
-
|
693
|
+
dict,
|
699
694
|
FlowUpdateDataAgreements,
|
700
695
|
FlowUpdateDataCaptcha,
|
701
696
|
FlowUpdateDataEmailOTP,
|
@@ -734,31 +729,31 @@ class ClientSessionInvalidateResult(PangeaResponseResult):
|
|
734
729
|
|
735
730
|
class SessionListFilter(APIRequestModel):
|
736
731
|
active_token_id: Optional[str] = None
|
737
|
-
active_token_id__contains: Optional[
|
738
|
-
active_token_id__in: Optional[
|
732
|
+
active_token_id__contains: Optional[list[str]] = None
|
733
|
+
active_token_id__in: Optional[list[str]] = None
|
739
734
|
created_at: Optional[str] = None
|
740
735
|
created_at__gt: Optional[str] = None
|
741
736
|
created_at__gte: Optional[str] = None
|
742
737
|
created_at__lt: Optional[str] = None
|
743
738
|
created_at__lte: Optional[str] = None
|
744
739
|
email: Optional[str] = None
|
745
|
-
email__contains: Optional[
|
746
|
-
email__in: Optional[
|
740
|
+
email__contains: Optional[list[str]] = None
|
741
|
+
email__in: Optional[list[str]] = None
|
747
742
|
expire: Optional[str] = None
|
748
743
|
expire__gt: Optional[str] = None
|
749
744
|
expire__gte: Optional[str] = None
|
750
745
|
expire__lt: Optional[str] = None
|
751
746
|
expire__lte: Optional[str] = None
|
752
747
|
id: Optional[str] = None
|
753
|
-
id__contains: Optional[
|
754
|
-
id__in: Optional[
|
748
|
+
id__contains: Optional[list[str]] = None
|
749
|
+
id__in: Optional[list[str]] = None
|
755
750
|
identity: Optional[str] = None
|
756
|
-
identity__contains: Optional[
|
757
|
-
identity__in: Optional[
|
758
|
-
scopes: Optional[
|
751
|
+
identity__contains: Optional[list[str]] = None
|
752
|
+
identity__in: Optional[list[str]] = None
|
753
|
+
scopes: Optional[list[str]] = None
|
759
754
|
type: Optional[str] = None
|
760
|
-
type__contains: Optional[
|
761
|
-
type__in: Optional[
|
755
|
+
type__contains: Optional[list[str]] = None
|
756
|
+
type__in: Optional[list[str]] = None
|
762
757
|
|
763
758
|
|
764
759
|
class ClientSessionListRequest(APIRequestModel):
|
@@ -776,19 +771,19 @@ class SessionItem(APIResponseModel):
|
|
776
771
|
life: int
|
777
772
|
expire: str
|
778
773
|
email: str
|
779
|
-
scopes: Optional[
|
780
|
-
profile:
|
774
|
+
scopes: Optional[list[Scope]] = None
|
775
|
+
profile: dict[str, str]
|
781
776
|
created_at: str
|
782
777
|
active_token: Optional[SessionToken] = None
|
783
778
|
|
784
779
|
|
785
780
|
class ClientSessionListResults(PangeaResponseResult):
|
786
|
-
sessions:
|
781
|
+
sessions: list[SessionItem]
|
787
782
|
last: str
|
788
783
|
|
789
784
|
|
790
785
|
class SessionListResults(PangeaResponseResult):
|
791
|
-
sessions:
|
786
|
+
sessions: list[SessionItem]
|
792
787
|
last: str
|
793
788
|
|
794
789
|
|
@@ -891,28 +886,61 @@ class AgreementListOrderBy(enum.Enum):
|
|
891
886
|
|
892
887
|
class AgreementListFilter(APIRequestModel):
|
893
888
|
active: Optional[bool] = None
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
type__contains: Optional[List[str]] = None
|
906
|
-
type__in: Optional[List[str]] = None
|
889
|
+
"""Only records where active equals this value."""
|
890
|
+
created_at: Optional[PangeaDateTime] = None
|
891
|
+
"""Only records where created_at equals this value."""
|
892
|
+
created_at__gt: Optional[PangeaDateTime] = None
|
893
|
+
"""Only records where created_at is greater than this value."""
|
894
|
+
created_at__gte: Optional[PangeaDateTime] = None
|
895
|
+
"""Only records where created_at is greater than or equal to this value."""
|
896
|
+
created_at__lt: Optional[PangeaDateTime] = None
|
897
|
+
"""Only records where created_at is less than this value."""
|
898
|
+
created_at__lte: Optional[PangeaDateTime] = None
|
899
|
+
"""Only records where created_at is less than or equal to this value."""
|
907
900
|
id: Optional[str] = None
|
908
|
-
|
909
|
-
|
901
|
+
"""Only records where id equals this value."""
|
902
|
+
id__contains: Optional[list[str]] = None
|
903
|
+
"""Only records where id includes each substring."""
|
904
|
+
id__in: Optional[list[str]] = None
|
905
|
+
"""Only records where id equals one of the provided substrings."""
|
910
906
|
name: Optional[str] = None
|
911
|
-
|
912
|
-
|
907
|
+
"""Only records where name equals this value."""
|
908
|
+
name__contains: Optional[list[str]] = None
|
909
|
+
"""Only records where name includes each substring."""
|
910
|
+
name__in: Optional[list[str]] = None
|
911
|
+
"""Only records where name equals one of the provided substrings."""
|
912
|
+
published_at: Optional[PangeaDateTime] = None
|
913
|
+
"""Only records where published_at equals this value."""
|
914
|
+
published_at__gt: Optional[PangeaDateTime] = None
|
915
|
+
"""Only records where published_at is greater than this value."""
|
916
|
+
published_at__gte: Optional[PangeaDateTime] = None
|
917
|
+
"""Only records where published_at is greater than or equal to this value."""
|
918
|
+
published_at__lt: Optional[PangeaDateTime] = None
|
919
|
+
"""Only records where published_at is less than this value."""
|
920
|
+
published_at__lte: Optional[PangeaDateTime] = None
|
921
|
+
"""Only records where published_at is less than or equal to this value."""
|
913
922
|
text: Optional[str] = None
|
914
|
-
|
915
|
-
|
923
|
+
"""Only records where text equals this value."""
|
924
|
+
text__contains: Optional[list[str]] = None
|
925
|
+
"""Only records where text includes each substring."""
|
926
|
+
text__in: Optional[list[str]] = None
|
927
|
+
"""Only records where text equals one of the provided substrings."""
|
928
|
+
type: Optional[str] = None
|
929
|
+
"""Only records where type equals this value."""
|
930
|
+
type__contains: Optional[list[str]] = None
|
931
|
+
"""Only records where type includes each substring."""
|
932
|
+
type__in: Optional[list[str]] = None
|
933
|
+
"""Only records where type equals one of the provided substrings."""
|
934
|
+
updated_at: Optional[PangeaDateTime] = None
|
935
|
+
"""Only records where updated_at equals this value."""
|
936
|
+
updated_at__gt: Optional[PangeaDateTime] = None
|
937
|
+
"""Only records where updated_at is greater than this value."""
|
938
|
+
updated_at__gte: Optional[PangeaDateTime] = None
|
939
|
+
"""Only records where updated_at is greater than or equal to this value."""
|
940
|
+
updated_at__lt: Optional[PangeaDateTime] = None
|
941
|
+
"""Only records where updated_at is less than this value."""
|
942
|
+
updated_at__lte: Optional[PangeaDateTime] = None
|
943
|
+
"""Only records where updated_at is less than or equal to this value."""
|
916
944
|
|
917
945
|
|
918
946
|
class AgreementListRequest(APIRequestModel):
|
@@ -924,7 +952,7 @@ class AgreementListRequest(APIRequestModel):
|
|
924
952
|
|
925
953
|
|
926
954
|
class AgreementListResult(PangeaResponseResult):
|
927
|
-
agreements:
|
955
|
+
agreements: list[AgreementInfo]
|
928
956
|
count: int
|
929
957
|
last: Optional[str] = None
|
930
958
|
|
@@ -944,14 +972,21 @@ class AgreementUpdateResult(AgreementInfo):
|
|
944
972
|
class GroupInfo(PangeaResponseResult):
|
945
973
|
"""A group and its information"""
|
946
974
|
|
947
|
-
id:
|
975
|
+
id: GroupId
|
976
|
+
"""An ID for a group"""
|
977
|
+
|
948
978
|
name: str
|
949
979
|
type: str
|
950
980
|
|
951
981
|
description: Optional[str] = None
|
952
|
-
attributes: Optional[
|
953
|
-
|
954
|
-
|
982
|
+
attributes: Optional[dict[str, str]] = None
|
983
|
+
"""A collection of key/value pairs"""
|
984
|
+
|
985
|
+
created_at: Optional[PangeaDateTime] = None
|
986
|
+
"""A time in ISO-8601 format"""
|
987
|
+
|
988
|
+
updated_at: Optional[PangeaDateTime] = None
|
989
|
+
"""A time in ISO-8601 format"""
|
955
990
|
|
956
991
|
|
957
992
|
class GroupsFilter(APIRequestModel):
|
@@ -978,28 +1013,28 @@ class GroupsFilter(APIRequestModel):
|
|
978
1013
|
id: Optional[str] = None
|
979
1014
|
"""Only records where id equals this value."""
|
980
1015
|
|
981
|
-
id__contains: Optional[
|
1016
|
+
id__contains: Optional[list[str]] = None
|
982
1017
|
"""Only records where id includes each substring."""
|
983
1018
|
|
984
|
-
id__in: Optional[
|
1019
|
+
id__in: Optional[list[str]] = None
|
985
1020
|
"""Only records where id equals one of the provided substrings."""
|
986
1021
|
|
987
1022
|
name: Optional[str] = None
|
988
1023
|
"""Only records where name equals this value."""
|
989
1024
|
|
990
|
-
name__contains: Optional[
|
1025
|
+
name__contains: Optional[list[str]] = None
|
991
1026
|
"""Only records where name includes each substring."""
|
992
1027
|
|
993
|
-
name__in: Optional[
|
1028
|
+
name__in: Optional[list[str]] = None
|
994
1029
|
"""Only records where name equals one of the provided substrings."""
|
995
1030
|
|
996
1031
|
type: Optional[str] = None
|
997
1032
|
"""Only records where type equals this value."""
|
998
1033
|
|
999
|
-
type__contains: Optional[
|
1034
|
+
type__contains: Optional[list[str]] = None
|
1000
1035
|
"""Only records where type includes each substring."""
|
1001
1036
|
|
1002
|
-
type__in: Optional[
|
1037
|
+
type__in: Optional[list[str]] = None
|
1003
1038
|
"""Only records where type equals one of the provided substrings."""
|
1004
1039
|
|
1005
1040
|
updated_at: Optional[str] = None
|
@@ -1022,7 +1057,7 @@ class GroupsFilter(APIRequestModel):
|
|
1022
1057
|
|
1023
1058
|
|
1024
1059
|
class GroupList(PangeaResponseResult):
|
1025
|
-
groups:
|
1060
|
+
groups: list[GroupInfo]
|
1026
1061
|
"""List of matching groups"""
|
1027
1062
|
|
1028
1063
|
count: int
|
@@ -1030,6 +1065,6 @@ class GroupList(PangeaResponseResult):
|
|
1030
1065
|
|
1031
1066
|
|
1032
1067
|
class GroupUserList(PangeaResponseResult):
|
1033
|
-
users:
|
1068
|
+
users: list[User]
|
1034
1069
|
count: int
|
1035
1070
|
last: Optional[str] = None
|