pangea-sdk 6.2.0b2__py3-none-any.whl → 6.4.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 +1 -1
- pangea/asyncio/request.py +25 -154
- pangea/asyncio/services/__init__.py +0 -1
- pangea/asyncio/services/ai_guard.py +40 -130
- pangea/asyncio/services/audit.py +1 -301
- pangea/asyncio/services/authn.py +7 -9
- pangea/asyncio/services/authz.py +45 -11
- pangea/asyncio/services/intel.py +20 -26
- pangea/asyncio/services/prompt_guard.py +2 -112
- pangea/asyncio/services/redact.py +4 -265
- pangea/asyncio/services/vault.py +52 -40
- pangea/request.py +30 -167
- pangea/response.py +6 -6
- pangea/services/__init__.py +0 -1
- pangea/services/ai_guard.py +96 -542
- pangea/services/audit/audit.py +2 -301
- pangea/services/audit/models.py +65 -307
- pangea/services/authn/authn.py +6 -8
- pangea/services/authn/models.py +183 -151
- pangea/services/authz.py +101 -57
- pangea/services/base.py +2 -3
- pangea/services/intel.py +32 -19
- pangea/services/prompt_guard.py +2 -193
- pangea/services/redact.py +7 -473
- pangea/services/vault/models/common.py +11 -12
- pangea/services/vault/models/keys.py +4 -9
- pangea/services/vault/models/secret.py +3 -8
- pangea/services/vault/vault.py +52 -40
- {pangea_sdk-6.2.0b2.dist-info → pangea_sdk-6.4.0.dist-info}/METADATA +34 -15
- pangea_sdk-6.4.0.dist-info/RECORD +60 -0
- pangea/asyncio/services/management.py +0 -576
- pangea/services/management.py +0 -720
- pangea_sdk-6.2.0b2.dist-info/RECORD +0 -62
- {pangea_sdk-6.2.0b2.dist-info → pangea_sdk-6.4.0.dist-info}/WHEEL +0 -0
pangea/services/authn/models.py
CHANGED
@@ -1,69 +1,28 @@
|
|
1
1
|
# Copyright 2022 Pangea Cyber Corporation
|
2
2
|
# Author: Pangea Cyber Corporation
|
3
3
|
|
4
|
-
# TODO: Modernize.
|
5
|
-
# ruff: noqa: UP006, UP035
|
6
|
-
|
7
4
|
from __future__ import annotations
|
8
5
|
|
9
6
|
import enum
|
10
|
-
from
|
11
|
-
from
|
7
|
+
from collections.abc import Mapping
|
8
|
+
from typing import Annotated, Literal, Optional, Union
|
12
9
|
|
13
|
-
from
|
10
|
+
from pydantic import Field
|
14
11
|
|
15
12
|
import pangea.services.intel as im
|
16
|
-
from pangea.
|
17
|
-
from pangea.response import APIRequestModel, APIResponseModel, PangeaResponseResult
|
13
|
+
from pangea.response import APIRequestModel, APIResponseModel, PangeaDateTime, PangeaResponseResult
|
18
14
|
from pangea.services.vault.models.common import JWK, JWKec, JWKrsa
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
@first_name.setter
|
32
|
-
def first_name(self, value: str) -> None:
|
33
|
-
warn(
|
34
|
-
'`Profile.first_name` is deprecated. Use `Profile["first_name"]` instead.', DeprecationWarning, stacklevel=2
|
35
|
-
)
|
36
|
-
self["first_name"] = value
|
37
|
-
|
38
|
-
@property
|
39
|
-
def last_name(self) -> str:
|
40
|
-
warn('`Profile.last_name` is deprecated. Use `Profile["last_name"]` instead.', DeprecationWarning, stacklevel=2)
|
41
|
-
return self["last_name"]
|
42
|
-
|
43
|
-
@last_name.setter
|
44
|
-
def last_name(self, value: str) -> None:
|
45
|
-
warn('`Profile.last_name` is deprecated. Use `Profile["last_name"]` instead.', DeprecationWarning, stacklevel=2)
|
46
|
-
self["last_name"] = value
|
47
|
-
|
48
|
-
@property
|
49
|
-
def phone(self) -> str:
|
50
|
-
warn('`Profile.phone` is deprecated. Use `Profile["phone"]` instead.', DeprecationWarning, stacklevel=2)
|
51
|
-
return self["phone"]
|
52
|
-
|
53
|
-
@phone.setter
|
54
|
-
def phone(self, value: str) -> None:
|
55
|
-
warn('`Profile.phone` is deprecated. Use `Profile["phone"]` instead.', DeprecationWarning, stacklevel=2)
|
56
|
-
self["phone"] = value
|
57
|
-
|
58
|
-
@deprecated("`Profile.model_dump()` is deprecated. `Profile` is already a `dict[str, str]`.")
|
59
|
-
@pangea_deprecated(reason="`Profile` is already a `dict[str, str]`.")
|
60
|
-
def model_dump(self, *, exclude_none: bool = False) -> dict[str, str]:
|
61
|
-
warn(
|
62
|
-
"`Profile.model_dump()` is deprecated. `Profile` is already a `dict[str, str]`.",
|
63
|
-
DeprecationWarning,
|
64
|
-
stacklevel=2,
|
65
|
-
)
|
66
|
-
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
|
+
]
|
67
26
|
|
68
27
|
|
69
28
|
class ClientPasswordChangeRequest(APIRequestModel):
|
@@ -76,10 +35,6 @@ class ClientPasswordChangeResult(PangeaResponseResult):
|
|
76
35
|
pass
|
77
36
|
|
78
37
|
|
79
|
-
class ClientTokenCheckRequest(APIRequestModel):
|
80
|
-
token: str
|
81
|
-
|
82
|
-
|
83
38
|
class IPIntelligence(PangeaResponseResult):
|
84
39
|
is_bad: bool
|
85
40
|
is_vpn: bool
|
@@ -107,8 +62,8 @@ class SessionToken(PangeaResponseResult):
|
|
107
62
|
expire: str
|
108
63
|
identity: str
|
109
64
|
email: str
|
110
|
-
scopes: Optional[
|
111
|
-
profile:
|
65
|
+
scopes: Optional[list[Scope]] = None
|
66
|
+
profile: dict[str, str]
|
112
67
|
created_at: str
|
113
68
|
intelligence: Optional[Intelligence] = None
|
114
69
|
|
@@ -117,8 +72,45 @@ class LoginToken(SessionToken):
|
|
117
72
|
token: str
|
118
73
|
|
119
74
|
|
120
|
-
class ClientTokenCheckResult(
|
121
|
-
|
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
|
122
114
|
|
123
115
|
|
124
116
|
class IDProvider(str, enum.Enum):
|
@@ -248,7 +240,7 @@ class User(PangeaResponseResult):
|
|
248
240
|
username: str
|
249
241
|
"""A username."""
|
250
242
|
|
251
|
-
profile:
|
243
|
+
profile: dict[str, str]
|
252
244
|
"""A user profile as a collection of string properties."""
|
253
245
|
|
254
246
|
verified: bool
|
@@ -273,7 +265,7 @@ class User(PangeaResponseResult):
|
|
273
265
|
last_login_ip: Optional[str] = None
|
274
266
|
last_login_city: Optional[str] = None
|
275
267
|
last_login_country: Optional[str] = None
|
276
|
-
authenticators:
|
268
|
+
authenticators: list[Authenticator] = []
|
277
269
|
"""A list of authenticators."""
|
278
270
|
|
279
271
|
|
@@ -281,7 +273,7 @@ class UserCreateRequest(APIRequestModel):
|
|
281
273
|
email: str
|
282
274
|
"""An email address."""
|
283
275
|
|
284
|
-
profile:
|
276
|
+
profile: Mapping[str, str]
|
285
277
|
"""A user profile as a collection of string properties."""
|
286
278
|
|
287
279
|
username: Optional[str] = None
|
@@ -309,8 +301,8 @@ class UserDeleteResult(PangeaResponseResult):
|
|
309
301
|
|
310
302
|
class UserListFilter(APIRequestModel):
|
311
303
|
accepted_eula_id: Optional[str] = None
|
312
|
-
accepted_eula_id__contains: Optional[
|
313
|
-
accepted_eula_id__in: Optional[
|
304
|
+
accepted_eula_id__contains: Optional[list[str]] = None
|
305
|
+
accepted_eula_id__in: Optional[list[str]] = None
|
314
306
|
created_at: Optional[str] = None
|
315
307
|
created_at__gt: Optional[str] = None
|
316
308
|
created_at__gte: Optional[str] = None
|
@@ -318,32 +310,32 @@ class UserListFilter(APIRequestModel):
|
|
318
310
|
created_at__lte: Optional[str] = None
|
319
311
|
disabled: Optional[bool] = None
|
320
312
|
email: Optional[str] = None
|
321
|
-
email__contains: Optional[
|
322
|
-
email__in: Optional[
|
313
|
+
email__contains: Optional[list[str]] = None
|
314
|
+
email__in: Optional[list[str]] = None
|
323
315
|
id: Optional[str] = None
|
324
|
-
id__contains: Optional[
|
325
|
-
id__in: Optional[
|
316
|
+
id__contains: Optional[list[str]] = None
|
317
|
+
id__in: Optional[list[str]] = None
|
326
318
|
last_login_at: Optional[str] = None
|
327
319
|
last_login_at__gt: Optional[str] = None
|
328
320
|
last_login_at__gte: Optional[str] = None
|
329
321
|
last_login_at__lt: Optional[str] = None
|
330
322
|
last_login_at__lte: Optional[str] = None
|
331
323
|
last_login_ip: Optional[str] = None
|
332
|
-
last_login_ip__contains: Optional[
|
333
|
-
last_login_ip__in: Optional[
|
324
|
+
last_login_ip__contains: Optional[list[str]] = None
|
325
|
+
last_login_ip__in: Optional[list[str]] = None
|
334
326
|
last_login_city: Optional[str] = None
|
335
|
-
last_login_city__contains: Optional[
|
336
|
-
last_login_city__in: Optional[
|
327
|
+
last_login_city__contains: Optional[list[str]] = None
|
328
|
+
last_login_city__in: Optional[list[str]] = None
|
337
329
|
last_login_country: Optional[str] = None
|
338
|
-
last_login_country__contains: Optional[
|
339
|
-
last_login_country__in: Optional[
|
330
|
+
last_login_country__contains: Optional[list[str]] = None
|
331
|
+
last_login_country__in: Optional[list[str]] = None
|
340
332
|
login_count: Optional[int] = None
|
341
333
|
login_count__gt: Optional[int] = None
|
342
334
|
login_count__gte: Optional[int] = None
|
343
335
|
login_count__lt: Optional[int] = None
|
344
336
|
login_count__lte: Optional[int] = None
|
345
337
|
require_mfa: Optional[bool] = None
|
346
|
-
scopes: Optional[
|
338
|
+
scopes: Optional[list[str]] = None
|
347
339
|
verified: Optional[bool] = None
|
348
340
|
|
349
341
|
|
@@ -356,7 +348,7 @@ class UserListRequest(APIRequestModel):
|
|
356
348
|
|
357
349
|
|
358
350
|
class UserListResult(PangeaResponseResult):
|
359
|
-
users:
|
351
|
+
users: list[User]
|
360
352
|
last: Optional[str] = None
|
361
353
|
count: int
|
362
354
|
|
@@ -404,35 +396,35 @@ class UserInviterOrderBy(enum.Enum):
|
|
404
396
|
|
405
397
|
class UserInviteListFilter(APIRequestModel):
|
406
398
|
callback: Optional[str] = None
|
407
|
-
callback__contains: Optional[
|
408
|
-
callback__in: Optional[
|
399
|
+
callback__contains: Optional[list[str]] = None
|
400
|
+
callback__in: Optional[list[str]] = None
|
409
401
|
created_at: Optional[str] = None
|
410
402
|
created_at__gt: Optional[str] = None
|
411
403
|
created_at__gte: Optional[str] = None
|
412
404
|
created_at__lt: Optional[str] = None
|
413
405
|
created_at__lte: Optional[str] = None
|
414
406
|
email: Optional[str] = None
|
415
|
-
email__contains: Optional[
|
416
|
-
email__in: Optional[
|
407
|
+
email__contains: Optional[list[str]] = None
|
408
|
+
email__in: Optional[list[str]] = None
|
417
409
|
expire: Optional[str] = None
|
418
410
|
expire__gt: Optional[str] = None
|
419
411
|
expire__gte: Optional[str] = None
|
420
412
|
expire__lt: Optional[str] = None
|
421
413
|
expire__lte: Optional[str] = None
|
422
414
|
id: Optional[str] = None
|
423
|
-
id__contains: Optional[
|
424
|
-
id__in: Optional[
|
415
|
+
id__contains: Optional[list[str]] = None
|
416
|
+
id__in: Optional[list[str]] = None
|
425
417
|
invite_org: Optional[str] = None
|
426
|
-
invite_org__contains: Optional[
|
427
|
-
invite_org__in: Optional[
|
418
|
+
invite_org__contains: Optional[list[str]] = None
|
419
|
+
invite_org__in: Optional[list[str]] = None
|
428
420
|
inviter: Optional[str] = None
|
429
|
-
inviter__contains: Optional[
|
430
|
-
inviter__in: Optional[
|
421
|
+
inviter__contains: Optional[list[str]] = None
|
422
|
+
inviter__in: Optional[list[str]] = None
|
431
423
|
is_signup: Optional[bool] = None
|
432
424
|
require_mfa: Optional[bool] = None
|
433
425
|
state: Optional[str] = None
|
434
|
-
state__contains: Optional[
|
435
|
-
state__in: Optional[
|
426
|
+
state__contains: Optional[list[str]] = None
|
427
|
+
state__in: Optional[list[str]] = None
|
436
428
|
|
437
429
|
|
438
430
|
class UserInviteListRequest(APIRequestModel):
|
@@ -444,7 +436,7 @@ class UserInviteListRequest(APIRequestModel):
|
|
444
436
|
|
445
437
|
|
446
438
|
class UserInviteListResult(PangeaResponseResult):
|
447
|
-
invites:
|
439
|
+
invites: list[UserInvite]
|
448
440
|
|
449
441
|
|
450
442
|
class UserInviteDeleteRequest(APIRequestModel):
|
@@ -471,7 +463,7 @@ class UserProfileGetResult(User):
|
|
471
463
|
|
472
464
|
|
473
465
|
class UserProfileUpdateRequest(APIRequestModel):
|
474
|
-
profile:
|
466
|
+
profile: Mapping[str, str]
|
475
467
|
"""Updates to a user profile."""
|
476
468
|
|
477
469
|
id: Optional[str] = None
|
@@ -525,7 +517,7 @@ class ClientUserinfoRequest(APIRequestModel):
|
|
525
517
|
|
526
518
|
|
527
519
|
class ClientJWKSResult(PangeaResponseResult):
|
528
|
-
keys:
|
520
|
+
keys: list[Union[JWKec, JWKrsa, JWK]]
|
529
521
|
|
530
522
|
|
531
523
|
class UserAuthenticatorsDeleteRequest(APIRequestModel):
|
@@ -558,7 +550,7 @@ class UserAuthenticatorsListRequest(APIRequestModel):
|
|
558
550
|
|
559
551
|
|
560
552
|
class UserAuthenticatorsListResult(PangeaResponseResult):
|
561
|
-
authenticators:
|
553
|
+
authenticators: list[Authenticator] = []
|
562
554
|
"""A list of authenticators."""
|
563
555
|
|
564
556
|
|
@@ -573,16 +565,16 @@ class FlowCompleteResult(PangeaResponseResult):
|
|
573
565
|
|
574
566
|
class FlowChoiceItem(APIResponseModel):
|
575
567
|
choice: str
|
576
|
-
data:
|
568
|
+
data: dict = {}
|
577
569
|
|
578
570
|
|
579
571
|
class CommonFlowResult(PangeaResponseResult):
|
580
572
|
flow_id: str
|
581
|
-
flow_type:
|
573
|
+
flow_type: list[str] = []
|
582
574
|
email: Optional[str] = None
|
583
575
|
disclaimer: Optional[str] = None
|
584
576
|
flow_phase: str
|
585
|
-
flow_choices:
|
577
|
+
flow_choices: list[FlowChoiceItem] = []
|
586
578
|
|
587
579
|
|
588
580
|
class FlowChoice(enum.Enum):
|
@@ -612,7 +604,7 @@ class FlowRestartDataSMSOTP(APIRequestModel):
|
|
612
604
|
phone: str
|
613
605
|
|
614
606
|
|
615
|
-
FlowRestartData = Union[
|
607
|
+
FlowRestartData = Union[dict, FlowRestartDataSMSOTP]
|
616
608
|
|
617
609
|
|
618
610
|
class FlowRestartRequest(APIRequestModel):
|
@@ -628,7 +620,7 @@ class FlowRestartResult(CommonFlowResult):
|
|
628
620
|
class FlowStartRequest(APIRequestModel):
|
629
621
|
cb_uri: Optional[str] = None
|
630
622
|
email: Optional[str] = None
|
631
|
-
flow_types: Optional[
|
623
|
+
flow_types: Optional[list[FlowType]] = None
|
632
624
|
invitation: Optional[str] = None
|
633
625
|
|
634
626
|
|
@@ -637,7 +629,7 @@ class FlowStartResult(CommonFlowResult):
|
|
637
629
|
|
638
630
|
|
639
631
|
class FlowUpdateDataAgreements(APIRequestModel):
|
640
|
-
agreed:
|
632
|
+
agreed: list[str]
|
641
633
|
|
642
634
|
|
643
635
|
class FlowUpdateDataCaptcha(APIRequestModel):
|
@@ -658,7 +650,7 @@ class FlowUpdateDataPassword(APIRequestModel):
|
|
658
650
|
|
659
651
|
|
660
652
|
class FlowUpdateDataProfile(APIRequestModel):
|
661
|
-
profile:
|
653
|
+
profile: dict[str, str]
|
662
654
|
|
663
655
|
|
664
656
|
class FlowUpdateDataProvisionalEnrollment(APIRequestModel):
|
@@ -698,7 +690,7 @@ class FlowUpdateDataVerifyEmail(APIRequestModel):
|
|
698
690
|
|
699
691
|
|
700
692
|
FlowUpdateData = Union[
|
701
|
-
|
693
|
+
dict,
|
702
694
|
FlowUpdateDataAgreements,
|
703
695
|
FlowUpdateDataCaptcha,
|
704
696
|
FlowUpdateDataEmailOTP,
|
@@ -737,31 +729,31 @@ class ClientSessionInvalidateResult(PangeaResponseResult):
|
|
737
729
|
|
738
730
|
class SessionListFilter(APIRequestModel):
|
739
731
|
active_token_id: Optional[str] = None
|
740
|
-
active_token_id__contains: Optional[
|
741
|
-
active_token_id__in: Optional[
|
732
|
+
active_token_id__contains: Optional[list[str]] = None
|
733
|
+
active_token_id__in: Optional[list[str]] = None
|
742
734
|
created_at: Optional[str] = None
|
743
735
|
created_at__gt: Optional[str] = None
|
744
736
|
created_at__gte: Optional[str] = None
|
745
737
|
created_at__lt: Optional[str] = None
|
746
738
|
created_at__lte: Optional[str] = None
|
747
739
|
email: Optional[str] = None
|
748
|
-
email__contains: Optional[
|
749
|
-
email__in: Optional[
|
740
|
+
email__contains: Optional[list[str]] = None
|
741
|
+
email__in: Optional[list[str]] = None
|
750
742
|
expire: Optional[str] = None
|
751
743
|
expire__gt: Optional[str] = None
|
752
744
|
expire__gte: Optional[str] = None
|
753
745
|
expire__lt: Optional[str] = None
|
754
746
|
expire__lte: Optional[str] = None
|
755
747
|
id: Optional[str] = None
|
756
|
-
id__contains: Optional[
|
757
|
-
id__in: Optional[
|
748
|
+
id__contains: Optional[list[str]] = None
|
749
|
+
id__in: Optional[list[str]] = None
|
758
750
|
identity: Optional[str] = None
|
759
|
-
identity__contains: Optional[
|
760
|
-
identity__in: Optional[
|
761
|
-
scopes: Optional[
|
751
|
+
identity__contains: Optional[list[str]] = None
|
752
|
+
identity__in: Optional[list[str]] = None
|
753
|
+
scopes: Optional[list[str]] = None
|
762
754
|
type: Optional[str] = None
|
763
|
-
type__contains: Optional[
|
764
|
-
type__in: Optional[
|
755
|
+
type__contains: Optional[list[str]] = None
|
756
|
+
type__in: Optional[list[str]] = None
|
765
757
|
|
766
758
|
|
767
759
|
class ClientSessionListRequest(APIRequestModel):
|
@@ -779,19 +771,19 @@ class SessionItem(APIResponseModel):
|
|
779
771
|
life: int
|
780
772
|
expire: str
|
781
773
|
email: str
|
782
|
-
scopes: Optional[
|
783
|
-
profile:
|
774
|
+
scopes: Optional[list[Scope]] = None
|
775
|
+
profile: dict[str, str]
|
784
776
|
created_at: str
|
785
777
|
active_token: Optional[SessionToken] = None
|
786
778
|
|
787
779
|
|
788
780
|
class ClientSessionListResults(PangeaResponseResult):
|
789
|
-
sessions:
|
781
|
+
sessions: list[SessionItem]
|
790
782
|
last: str
|
791
783
|
|
792
784
|
|
793
785
|
class SessionListResults(PangeaResponseResult):
|
794
|
-
sessions:
|
786
|
+
sessions: list[SessionItem]
|
795
787
|
last: str
|
796
788
|
|
797
789
|
|
@@ -894,28 +886,61 @@ class AgreementListOrderBy(enum.Enum):
|
|
894
886
|
|
895
887
|
class AgreementListFilter(APIRequestModel):
|
896
888
|
active: Optional[bool] = None
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
type__contains: Optional[List[str]] = None
|
909
|
-
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."""
|
910
900
|
id: Optional[str] = None
|
911
|
-
|
912
|
-
|
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."""
|
913
906
|
name: Optional[str] = None
|
914
|
-
|
915
|
-
|
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."""
|
916
922
|
text: Optional[str] = None
|
917
|
-
|
918
|
-
|
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."""
|
919
944
|
|
920
945
|
|
921
946
|
class AgreementListRequest(APIRequestModel):
|
@@ -927,7 +952,7 @@ class AgreementListRequest(APIRequestModel):
|
|
927
952
|
|
928
953
|
|
929
954
|
class AgreementListResult(PangeaResponseResult):
|
930
|
-
agreements:
|
955
|
+
agreements: list[AgreementInfo]
|
931
956
|
count: int
|
932
957
|
last: Optional[str] = None
|
933
958
|
|
@@ -947,14 +972,21 @@ class AgreementUpdateResult(AgreementInfo):
|
|
947
972
|
class GroupInfo(PangeaResponseResult):
|
948
973
|
"""A group and its information"""
|
949
974
|
|
950
|
-
id:
|
975
|
+
id: GroupId
|
976
|
+
"""An ID for a group"""
|
977
|
+
|
951
978
|
name: str
|
952
979
|
type: str
|
953
980
|
|
954
981
|
description: Optional[str] = None
|
955
|
-
attributes: Optional[
|
956
|
-
|
957
|
-
|
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"""
|
958
990
|
|
959
991
|
|
960
992
|
class GroupsFilter(APIRequestModel):
|
@@ -981,28 +1013,28 @@ class GroupsFilter(APIRequestModel):
|
|
981
1013
|
id: Optional[str] = None
|
982
1014
|
"""Only records where id equals this value."""
|
983
1015
|
|
984
|
-
id__contains: Optional[
|
1016
|
+
id__contains: Optional[list[str]] = None
|
985
1017
|
"""Only records where id includes each substring."""
|
986
1018
|
|
987
|
-
id__in: Optional[
|
1019
|
+
id__in: Optional[list[str]] = None
|
988
1020
|
"""Only records where id equals one of the provided substrings."""
|
989
1021
|
|
990
1022
|
name: Optional[str] = None
|
991
1023
|
"""Only records where name equals this value."""
|
992
1024
|
|
993
|
-
name__contains: Optional[
|
1025
|
+
name__contains: Optional[list[str]] = None
|
994
1026
|
"""Only records where name includes each substring."""
|
995
1027
|
|
996
|
-
name__in: Optional[
|
1028
|
+
name__in: Optional[list[str]] = None
|
997
1029
|
"""Only records where name equals one of the provided substrings."""
|
998
1030
|
|
999
1031
|
type: Optional[str] = None
|
1000
1032
|
"""Only records where type equals this value."""
|
1001
1033
|
|
1002
|
-
type__contains: Optional[
|
1034
|
+
type__contains: Optional[list[str]] = None
|
1003
1035
|
"""Only records where type includes each substring."""
|
1004
1036
|
|
1005
|
-
type__in: Optional[
|
1037
|
+
type__in: Optional[list[str]] = None
|
1006
1038
|
"""Only records where type equals one of the provided substrings."""
|
1007
1039
|
|
1008
1040
|
updated_at: Optional[str] = None
|
@@ -1025,7 +1057,7 @@ class GroupsFilter(APIRequestModel):
|
|
1025
1057
|
|
1026
1058
|
|
1027
1059
|
class GroupList(PangeaResponseResult):
|
1028
|
-
groups:
|
1060
|
+
groups: list[GroupInfo]
|
1029
1061
|
"""List of matching groups"""
|
1030
1062
|
|
1031
1063
|
count: int
|
@@ -1033,6 +1065,6 @@ class GroupList(PangeaResponseResult):
|
|
1033
1065
|
|
1034
1066
|
|
1035
1067
|
class GroupUserList(PangeaResponseResult):
|
1036
|
-
users:
|
1068
|
+
users: list[User]
|
1037
1069
|
count: int
|
1038
1070
|
last: Optional[str] = None
|