pangea-sdk 3.8.0b1__py3-none-any.whl → 5.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.
Files changed (48) hide show
  1. pangea/__init__.py +1 -1
  2. pangea/asyncio/file_uploader.py +1 -1
  3. pangea/asyncio/request.py +49 -31
  4. pangea/asyncio/services/__init__.py +2 -0
  5. pangea/asyncio/services/audit.py +192 -31
  6. pangea/asyncio/services/authn.py +187 -109
  7. pangea/asyncio/services/authz.py +285 -0
  8. pangea/asyncio/services/base.py +21 -2
  9. pangea/asyncio/services/embargo.py +2 -2
  10. pangea/asyncio/services/file_scan.py +24 -9
  11. pangea/asyncio/services/intel.py +108 -34
  12. pangea/asyncio/services/redact.py +72 -4
  13. pangea/asyncio/services/sanitize.py +217 -0
  14. pangea/asyncio/services/share.py +246 -73
  15. pangea/asyncio/services/vault.py +1710 -750
  16. pangea/crypto/rsa.py +135 -0
  17. pangea/deep_verify.py +7 -1
  18. pangea/dump_audit.py +9 -8
  19. pangea/request.py +83 -59
  20. pangea/response.py +49 -31
  21. pangea/services/__init__.py +2 -0
  22. pangea/services/audit/audit.py +205 -42
  23. pangea/services/audit/models.py +56 -8
  24. pangea/services/audit/signing.py +6 -5
  25. pangea/services/audit/util.py +3 -3
  26. pangea/services/authn/authn.py +140 -70
  27. pangea/services/authn/models.py +167 -11
  28. pangea/services/authz.py +400 -0
  29. pangea/services/base.py +39 -8
  30. pangea/services/embargo.py +2 -2
  31. pangea/services/file_scan.py +32 -15
  32. pangea/services/intel.py +157 -32
  33. pangea/services/redact.py +152 -4
  34. pangea/services/sanitize.py +388 -0
  35. pangea/services/share/share.py +683 -107
  36. pangea/services/vault/models/asymmetric.py +120 -18
  37. pangea/services/vault/models/common.py +439 -141
  38. pangea/services/vault/models/keys.py +94 -0
  39. pangea/services/vault/models/secret.py +27 -3
  40. pangea/services/vault/models/symmetric.py +68 -22
  41. pangea/services/vault/vault.py +1690 -749
  42. pangea/tools.py +6 -7
  43. pangea/utils.py +16 -27
  44. pangea/verify_audit.py +270 -83
  45. {pangea_sdk-3.8.0b1.dist-info → pangea_sdk-5.3.0.dist-info}/METADATA +43 -35
  46. pangea_sdk-5.3.0.dist-info/RECORD +56 -0
  47. {pangea_sdk-3.8.0b1.dist-info → pangea_sdk-5.3.0.dist-info}/WHEEL +1 -1
  48. pangea_sdk-3.8.0b1.dist-info/RECORD +0 -50
@@ -1,10 +1,12 @@
1
1
  # Copyright 2022 Pangea Cyber Corporation
2
2
  # Author: Pangea Cyber Corporation
3
+ from __future__ import annotations
3
4
 
4
5
  from typing import Dict, List, Optional, Union
5
6
 
6
7
  import pangea.services.authn.models as m
7
- from pangea.response import PangeaResponse
8
+ from pangea.config import PangeaConfig
9
+ from pangea.response import PangeaResponse, PangeaResponseResult
8
10
  from pangea.services.base import ServiceBase
9
11
 
10
12
  SERVICE_NAME = "authn"
@@ -37,10 +39,24 @@ class AuthN(ServiceBase):
37
39
 
38
40
  def __init__(
39
41
  self,
40
- token,
41
- config=None,
42
- logger_name="pangea",
43
- ):
42
+ token: str,
43
+ config: PangeaConfig | None = None,
44
+ logger_name: str = "pangea",
45
+ ) -> None:
46
+ """
47
+ AuthN client
48
+
49
+ Initializes a new AuthN client.
50
+
51
+ Args:
52
+ token: Pangea API token.
53
+ config: Configuration.
54
+ logger_name: Logger name.
55
+
56
+ Examples:
57
+ config = PangeaConfig(domain="pangea_domain")
58
+ authn = AuthN(token="pangea_token", config=config)
59
+ """
44
60
  super().__init__(token, config, logger_name=logger_name)
45
61
  self.user = AuthN.User(token, config, logger_name=logger_name)
46
62
  self.flow = AuthN.Flow(token, config, logger_name=logger_name)
@@ -80,7 +96,7 @@ class AuthN(ServiceBase):
80
96
  """
81
97
  input = m.SessionInvalidateRequest(session_id=session_id)
82
98
  return self.request.post(
83
- "v2/session/invalidate", m.SessionInvalidateResult, data=input.dict(exclude_none=True)
99
+ "v2/session/invalidate", m.SessionInvalidateResult, data=input.model_dump(exclude_none=True)
84
100
  )
85
101
 
86
102
  def list(
@@ -118,7 +134,7 @@ class AuthN(ServiceBase):
118
134
  filter = m.SessionListFilter(**filter)
119
135
 
120
136
  input = m.SessionListRequest(filter=filter, last=last, order=order, order_by=order_by, size=size)
121
- return self.request.post("v2/session/list", m.SessionListResults, data=input.dict(exclude_none=True))
137
+ return self.request.post("v2/session/list", m.SessionListResults, data=input.model_dump(exclude_none=True))
122
138
 
123
139
  def logout(self, user_id: str) -> PangeaResponse[m.SessionLogoutResult]:
124
140
  """
@@ -140,7 +156,9 @@ class AuthN(ServiceBase):
140
156
  )
141
157
  """
142
158
  input = m.SessionLogoutRequest(user_id=user_id)
143
- return self.request.post("v2/session/logout", m.SessionLogoutResult, data=input.dict(exclude_none=True))
159
+ return self.request.post(
160
+ "v2/session/logout", m.SessionLogoutResult, data=input.model_dump(exclude_none=True)
161
+ )
144
162
 
145
163
  class Client(ServiceBase):
146
164
  service_name = SERVICE_NAME
@@ -178,7 +196,9 @@ class AuthN(ServiceBase):
178
196
  )
179
197
  """
180
198
  input = m.ClientUserinfoRequest(code=code)
181
- return self.request.post("v2/client/userinfo", m.ClientUserinfoResult, data=input.dict(exclude_none=True))
199
+ return self.request.post(
200
+ "v2/client/userinfo", m.ClientUserinfoResult, data=input.model_dump(exclude_none=True)
201
+ )
182
202
 
183
203
  def jwks(
184
204
  self,
@@ -234,7 +254,9 @@ class AuthN(ServiceBase):
234
254
  """
235
255
  input = m.ClientSessionInvalidateRequest(token=token, session_id=session_id)
236
256
  return self.request.post(
237
- "v2/client/session/invalidate", m.ClientSessionInvalidateResult, data=input.dict(exclude_none=True)
257
+ "v2/client/session/invalidate",
258
+ m.ClientSessionInvalidateResult,
259
+ data=input.model_dump(exclude_none=True),
238
260
  )
239
261
 
240
262
  def list(
@@ -279,7 +301,7 @@ class AuthN(ServiceBase):
279
301
  token=token, filter=filter, last=last, order=order, order_by=order_by, size=size
280
302
  )
281
303
  return self.request.post(
282
- "v2/client/session/list", m.ClientSessionListResults, data=input.dict(exclude_none=True)
304
+ "v2/client/session/list", m.ClientSessionListResults, data=input.model_dump(exclude_none=True)
283
305
  )
284
306
 
285
307
  def logout(self, token: str) -> PangeaResponse[m.ClientSessionLogoutResult]:
@@ -303,7 +325,7 @@ class AuthN(ServiceBase):
303
325
  """
304
326
  input = m.ClientSessionLogoutRequest(token=token)
305
327
  return self.request.post(
306
- "v2/client/session/logout", m.ClientSessionLogoutResult, data=input.dict(exclude_none=True)
328
+ "v2/client/session/logout", m.ClientSessionLogoutResult, data=input.model_dump(exclude_none=True)
307
329
  )
308
330
 
309
331
  def refresh(
@@ -333,7 +355,7 @@ class AuthN(ServiceBase):
333
355
  """
334
356
  input = m.ClientSessionRefreshRequest(refresh_token=refresh_token, user_token=user_token)
335
357
  return self.request.post(
336
- "v2/client/session/refresh", m.ClientSessionRefreshResult, data=input.dict(exclude_none=True)
358
+ "v2/client/session/refresh", m.ClientSessionRefreshResult, data=input.model_dump(exclude_none=True)
337
359
  )
338
360
 
339
361
  class Password(ServiceBase):
@@ -341,10 +363,10 @@ class AuthN(ServiceBase):
341
363
 
342
364
  def __init__(
343
365
  self,
344
- token,
345
- config=None,
346
- logger_name="pangea",
347
- ):
366
+ token: str,
367
+ config: PangeaConfig | None = None,
368
+ logger_name: str = "pangea",
369
+ ) -> None:
348
370
  super().__init__(token, config, logger_name=logger_name)
349
371
 
350
372
  def change(
@@ -374,9 +396,28 @@ class AuthN(ServiceBase):
374
396
  """
375
397
  input = m.ClientPasswordChangeRequest(token=token, old_password=old_password, new_password=new_password)
376
398
  return self.request.post(
377
- "v2/client/password/change", m.ClientPasswordChangeResult, data=input.dict(exclude_none=True)
399
+ "v2/client/password/change", m.ClientPasswordChangeResult, data=input.model_dump(exclude_none=True)
378
400
  )
379
401
 
402
+ def expire(self, user_id: str) -> PangeaResponse[PangeaResponseResult]:
403
+ """
404
+ Expire a user's password
405
+
406
+ Expire a user's password.
407
+
408
+ OperationId: authn_post_v2_user_password_expire
409
+
410
+ Args:
411
+ user_id: The identity of a user or a service.
412
+
413
+ Returns:
414
+ A PangeaResponse with an empty object in the response.result field.
415
+
416
+ Examples:
417
+ authn.client.password.expire("pui_[...]")
418
+ """
419
+ return self.request.post("v2/user/password/expire", PangeaResponseResult, {"id": user_id})
420
+
380
421
  class Token(ServiceBase):
381
422
  service_name = SERVICE_NAME
382
423
 
@@ -411,7 +452,7 @@ class AuthN(ServiceBase):
411
452
  """
412
453
  input = m.ClientTokenCheckRequest(token=token)
413
454
  return self.request.post(
414
- "v2/client/token/check", m.ClientTokenCheckResult, data=input.dict(exclude_none=True)
455
+ "v2/client/token/check", m.ClientTokenCheckResult, data=input.model_dump(exclude_none=True)
415
456
  )
416
457
 
417
458
  class User(ServiceBase):
@@ -432,6 +473,8 @@ class AuthN(ServiceBase):
432
473
  self,
433
474
  email: str,
434
475
  profile: m.Profile,
476
+ *,
477
+ username: str | None = None,
435
478
  ) -> PangeaResponse[m.UserCreateResult]:
436
479
  """
437
480
  Create User
@@ -441,8 +484,9 @@ class AuthN(ServiceBase):
441
484
  OperationId: authn_post_v2_user_create
442
485
 
443
486
  Args:
444
- email (str): An email address
445
- profile (m.Profile): A user profile as a collection of string properties
487
+ email: An email address.
488
+ profile: A user profile as a collection of string properties.
489
+ username: A username.
446
490
 
447
491
  Returns:
448
492
  A PangeaResponse with a user and its information in the response.result field.
@@ -461,10 +505,13 @@ class AuthN(ServiceBase):
461
505
  input = m.UserCreateRequest(
462
506
  email=email,
463
507
  profile=profile,
508
+ username=username,
464
509
  )
465
- return self.request.post("v2/user/create", m.UserCreateResult, data=input.dict(exclude_none=True))
510
+ return self.request.post("v2/user/create", m.UserCreateResult, data=input.model_dump(exclude_none=True))
466
511
 
467
- def delete(self, email: Optional[str] = None, id: Optional[str] = None) -> PangeaResponse[m.UserDeleteResult]:
512
+ def delete(
513
+ self, email: str | None = None, id: str | None = None, *, username: str | None = None
514
+ ) -> PangeaResponse[m.UserDeleteResult]:
468
515
  """
469
516
  Delete User
470
517
 
@@ -473,8 +520,9 @@ class AuthN(ServiceBase):
473
520
  OperationId: authn_post_v2_user_delete
474
521
 
475
522
  Args:
476
- email (str, optional): An email address
477
- id (str, optional): The id of a user or a service
523
+ email: An email address.
524
+ id: The id of a user or a service.
525
+ username: A username.
478
526
 
479
527
  Returns:
480
528
  A PangeaResponse with an empty object in the response.result field.
@@ -482,8 +530,8 @@ class AuthN(ServiceBase):
482
530
  Examples:
483
531
  authn.user.delete(email="example@example.com")
484
532
  """
485
- input = m.UserDeleteRequest(email=email, id=id)
486
- return self.request.post("v2/user/delete", m.UserDeleteResult, data=input.dict(exclude_none=True))
533
+ input = m.UserDeleteRequest(email=email, id=id, username=username)
534
+ return self.request.post("v2/user/delete", m.UserDeleteResult, data=input.model_dump(exclude_none=True))
487
535
 
488
536
  def invite(
489
537
  self,
@@ -524,14 +572,16 @@ class AuthN(ServiceBase):
524
572
  callback=callback,
525
573
  state=state,
526
574
  )
527
- return self.request.post("v2/user/invite", m.UserInviteResult, data=input.dict(exclude_none=True))
575
+ return self.request.post("v2/user/invite", m.UserInviteResult, data=input.model_dump(exclude_none=True))
528
576
 
529
577
  def update(
530
578
  self,
531
- disabled: Optional[bool] = None,
532
- id: Optional[str] = None,
533
- email: Optional[str] = None,
534
- unlock: Optional[bool] = None,
579
+ disabled: bool | None = None,
580
+ id: str | None = None,
581
+ email: str | None = None,
582
+ unlock: bool | None = None,
583
+ *,
584
+ username: str | None = None,
535
585
  ) -> PangeaResponse[m.UserUpdateResult]:
536
586
  """
537
587
  Update user's settings
@@ -541,11 +591,12 @@ class AuthN(ServiceBase):
541
591
  OperationId: authn_post_v2_user_update
542
592
 
543
593
  Args:
544
- disabled (bool): New disabled value.
594
+ disabled: New disabled value.
545
595
  Disabling a user account will prevent them from logging in.
546
- unlock (bool): Unlock a user account if it has been locked out due to failed Authentication attempts.
547
- id (str, optional): The identity of a user or a service
548
- email (str, optional): An email address
596
+ unlock: Unlock a user account if it has been locked out due to failed authentication attempts.
597
+ id: The identity of a user or a service.
598
+ email: An email address.
599
+ username: A username.
549
600
 
550
601
  Returns:
551
602
  A PangeaResponse with a user and its information in the response.result field.
@@ -563,9 +614,10 @@ class AuthN(ServiceBase):
563
614
  email=email,
564
615
  disabled=disabled,
565
616
  unlock=unlock,
617
+ username=username,
566
618
  )
567
619
 
568
- return self.request.post("v2/user/update", m.UserUpdateResult, data=input.dict(exclude_none=True))
620
+ return self.request.post("v2/user/update", m.UserUpdateResult, data=input.model_dump(exclude_none=True))
569
621
 
570
622
  def list(
571
623
  self,
@@ -608,7 +660,7 @@ class AuthN(ServiceBase):
608
660
  order_by=order_by,
609
661
  size=size,
610
662
  )
611
- return self.request.post("v2/user/list", m.UserListResult, data=input.dict(exclude_none=True))
663
+ return self.request.post("v2/user/list", m.UserListResult, data=input.model_dump(exclude_none=True))
612
664
 
613
665
  class Invites(ServiceBase):
614
666
  service_name = SERVICE_NAME
@@ -655,7 +707,7 @@ class AuthN(ServiceBase):
655
707
 
656
708
  input = m.UserInviteListRequest(filter=filter, last=last, order=order, order_by=order_by, size=size)
657
709
  return self.request.post(
658
- "v2/user/invite/list", m.UserInviteListResult, data=input.dict(exclude_none=True)
710
+ "v2/user/invite/list", m.UserInviteListResult, data=input.model_dump(exclude_none=True)
659
711
  )
660
712
 
661
713
  def delete(self, id: str) -> PangeaResponse[m.UserInviteDeleteResult]:
@@ -679,7 +731,7 @@ class AuthN(ServiceBase):
679
731
  """
680
732
  input = m.UserInviteDeleteRequest(id=id)
681
733
  return self.request.post(
682
- "v2/user/invite/delete", m.UserInviteDeleteResult, data=input.dict(exclude_none=True)
734
+ "v2/user/invite/delete", m.UserInviteDeleteResult, data=input.model_dump(exclude_none=True)
683
735
  )
684
736
 
685
737
  class Authenticators(ServiceBase):
@@ -694,7 +746,12 @@ class AuthN(ServiceBase):
694
746
  super().__init__(token, config, logger_name=logger_name)
695
747
 
696
748
  def delete(
697
- self, authenticator_id: str, id: Optional[str] = None, email: Optional[str] = None
749
+ self,
750
+ authenticator_id: str,
751
+ id: str | None = None,
752
+ email: str | None = None,
753
+ *,
754
+ username: str | None = None,
698
755
  ) -> PangeaResponse[m.UserAuthenticatorsDeleteResult]:
699
756
  """
700
757
  Delete user authenticator
@@ -704,9 +761,10 @@ class AuthN(ServiceBase):
704
761
  OperationId: authn_post_v2_user_authenticators_delete
705
762
 
706
763
  Args:
707
- authenticator_id (str): An ID for an authenticator
708
- id (str, optional): The identity of a user or a service
709
- email (str, optional): An email address
764
+ authenticator_id: An ID for an authenticator.
765
+ id: The identity of a user or a service.
766
+ email: An email address.
767
+ username: A username.
710
768
 
711
769
  Returns:
712
770
  A PangeaResponse with an empty object in the response.result field.
@@ -717,15 +775,17 @@ class AuthN(ServiceBase):
717
775
  id="pui_xpkhwpnz2cmegsws737xbsqnmnuwtbm5",
718
776
  )
719
777
  """
720
- input = m.UserAuthenticatorsDeleteRequest(authenticator_id=authenticator_id, email=email, id=id)
778
+ input = m.UserAuthenticatorsDeleteRequest(
779
+ authenticator_id=authenticator_id, email=email, id=id, username=username
780
+ )
721
781
  return self.request.post(
722
782
  "v2/user/authenticators/delete",
723
783
  m.UserAuthenticatorsDeleteResult,
724
- data=input.dict(exclude_none=True),
784
+ data=input.model_dump(exclude_none=True),
725
785
  )
726
786
 
727
787
  def list(
728
- self, email: Optional[str] = None, id: Optional[str] = None
788
+ self, email: str | None = None, id: str | None = None, *, username: str | None = None
729
789
  ) -> PangeaResponse[m.UserAuthenticatorsListResult]:
730
790
  """
731
791
  Get user authenticators
@@ -735,8 +795,9 @@ class AuthN(ServiceBase):
735
795
  OperationId: authn_post_v2_user_authenticators_list
736
796
 
737
797
  Args:
738
- email (str, optional): An email address
739
- id (str, optional): The identity of a user or a service
798
+ email: An email address.
799
+ id: The identity of a user or a service.
800
+ username: A username.
740
801
 
741
802
  Returns:
742
803
  A PangeaResponse with a list of authenticators in the response.result field.
@@ -748,9 +809,11 @@ class AuthN(ServiceBase):
748
809
  id="pui_xpkhwpnz2cmegsws737xbsqnmnuwtbm5",
749
810
  )
750
811
  """
751
- input = m.UserAuthenticatorsListRequest(email=email, id=id)
812
+ input = m.UserAuthenticatorsListRequest(email=email, id=id, username=username)
752
813
  return self.request.post(
753
- "v2/user/authenticators/list", m.UserAuthenticatorsListResult, data=input.dict(exclude_none=True)
814
+ "v2/user/authenticators/list",
815
+ m.UserAuthenticatorsListResult,
816
+ data=input.model_dump(exclude_none=True),
754
817
  )
755
818
 
756
819
  class Profile(ServiceBase):
@@ -765,7 +828,7 @@ class AuthN(ServiceBase):
765
828
  super().__init__(token, config, logger_name=logger_name)
766
829
 
767
830
  def get(
768
- self, id: Optional[str] = None, email: Optional[str] = None
831
+ self, id: str | None = None, email: str | None = None, *, username: str | None = None
769
832
  ) -> PangeaResponse[m.UserProfileGetResult]:
770
833
  """
771
834
  Get user
@@ -775,8 +838,9 @@ class AuthN(ServiceBase):
775
838
  OperationId: authn_post_v2_user_profile_get
776
839
 
777
840
  Args:
778
- id (str, optional): The identity of a user or a service
779
- email (str, optional): An email address
841
+ id: The identity of a user or a service.
842
+ email: An email address.
843
+ username: A username.
780
844
 
781
845
  Returns:
782
846
  A PangeaResponse with a user and its information in the response.result field.
@@ -788,16 +852,18 @@ class AuthN(ServiceBase):
788
852
  email="joe.user@email.com",
789
853
  )
790
854
  """
791
- input = m.UserProfileGetRequest(id=id, email=email)
855
+ input = m.UserProfileGetRequest(id=id, email=email, username=username)
792
856
  return self.request.post(
793
- "v2/user/profile/get", m.UserProfileGetResult, data=input.dict(exclude_none=True)
857
+ "v2/user/profile/get", m.UserProfileGetResult, data=input.model_dump(exclude_none=True)
794
858
  )
795
859
 
796
860
  def update(
797
861
  self,
798
862
  profile: m.Profile,
799
- id: Optional[str] = None,
800
- email: Optional[str] = None,
863
+ id: str | None = None,
864
+ email: str | None = None,
865
+ *,
866
+ username: str | None = None,
801
867
  ) -> PangeaResponse[m.UserProfileUpdateResult]:
802
868
  """
803
869
  Update user
@@ -807,9 +873,10 @@ class AuthN(ServiceBase):
807
873
  OperationId: authn_post_v2_user_profile_update
808
874
 
809
875
  Args:
810
- profile (m.Profile): Updates to a user profile
811
- id (str, optional): The identity of a user or a service
812
- email (str, optional): An email address
876
+ profile: Updates to a user profile.
877
+ id: The identity of a user or a service.
878
+ email: An email address.
879
+ username: A username.
813
880
 
814
881
  Returns:
815
882
  A PangeaResponse with a user and its information in the response.result field.
@@ -828,9 +895,10 @@ class AuthN(ServiceBase):
828
895
  id=id,
829
896
  email=email,
830
897
  profile=profile,
898
+ username=username,
831
899
  )
832
900
  return self.request.post(
833
- "v2/user/profile/update", m.UserProfileUpdateResult, data=input.dict(exclude_none=True)
901
+ "v2/user/profile/update", m.UserProfileUpdateResult, data=input.model_dump(exclude_none=True)
834
902
  )
835
903
 
836
904
  class Flow(ServiceBase):
@@ -866,7 +934,7 @@ class AuthN(ServiceBase):
866
934
  )
867
935
  """
868
936
  input = m.FlowCompleteRequest(flow_id=flow_id)
869
- return self.request.post("v2/flow/complete", m.FlowCompleteResult, data=input.dict(exclude_none=True))
937
+ return self.request.post("v2/flow/complete", m.FlowCompleteResult, data=input.model_dump(exclude_none=True))
870
938
 
871
939
  def restart(
872
940
  self, flow_id: str, choice: m.FlowChoice, data: m.FlowRestartData = {}
@@ -898,7 +966,7 @@ class AuthN(ServiceBase):
898
966
  """
899
967
 
900
968
  input = m.FlowRestartRequest(flow_id=flow_id, choice=choice, data=data)
901
- return self.request.post("v2/flow/restart", m.FlowRestartResult, data=input.dict(exclude_none=True))
969
+ return self.request.post("v2/flow/restart", m.FlowRestartResult, data=input.model_dump(exclude_none=True))
902
970
 
903
971
  def start(
904
972
  self,
@@ -937,7 +1005,7 @@ class AuthN(ServiceBase):
937
1005
  )
938
1006
  """
939
1007
  input = m.FlowStartRequest(cb_uri=cb_uri, email=email, flow_types=flow_types, invitation=invitation)
940
- return self.request.post("v2/flow/start", m.FlowStartResult, data=input.dict(exclude_none=True))
1008
+ return self.request.post("v2/flow/start", m.FlowStartResult, data=input.model_dump(exclude_none=True))
941
1009
 
942
1010
  def update(
943
1011
  self, flow_id: str, choice: m.FlowChoice, data: m.FlowUpdateData = {}
@@ -971,7 +1039,7 @@ class AuthN(ServiceBase):
971
1039
  """
972
1040
 
973
1041
  input = m.FlowUpdateRequest(flow_id=flow_id, choice=choice, data=data)
974
- return self.request.post("v2/flow/update", m.FlowUpdateResult, data=input.dict(exclude_none=True))
1042
+ return self.request.post("v2/flow/update", m.FlowUpdateResult, data=input.model_dump(exclude_none=True))
975
1043
 
976
1044
  class Agreements(ServiceBase):
977
1045
  service_name = SERVICE_NAME
@@ -1015,7 +1083,7 @@ class AuthN(ServiceBase):
1015
1083
 
1016
1084
  input = m.AgreementCreateRequest(type=type, name=name, text=text, active=active)
1017
1085
  return self.request.post(
1018
- "v2/agreements/create", m.AgreementCreateResult, data=input.dict(exclude_none=True)
1086
+ "v2/agreements/create", m.AgreementCreateResult, data=input.model_dump(exclude_none=True)
1019
1087
  )
1020
1088
 
1021
1089
  def delete(self, type: m.AgreementType, id: str) -> PangeaResponse[m.AgreementDeleteResult]:
@@ -1042,7 +1110,7 @@ class AuthN(ServiceBase):
1042
1110
 
1043
1111
  input = m.AgreementDeleteRequest(type=type, id=id)
1044
1112
  return self.request.post(
1045
- "v2/agreements/delete", m.AgreementDeleteResult, data=input.dict(exclude_none=True)
1113
+ "v2/agreements/delete", m.AgreementDeleteResult, data=input.model_dump(exclude_none=True)
1046
1114
  )
1047
1115
 
1048
1116
  def list(
@@ -1080,7 +1148,9 @@ class AuthN(ServiceBase):
1080
1148
  filter = m.AgreementListFilter(**filter)
1081
1149
 
1082
1150
  input = m.AgreementListRequest(filter=filter, last=last, order=order, order_by=order_by, size=size)
1083
- return self.request.post("v2/agreements/list", m.AgreementListResult, data=input.dict(exclude_none=True))
1151
+ return self.request.post(
1152
+ "v2/agreements/list", m.AgreementListResult, data=input.model_dump(exclude_none=True)
1153
+ )
1084
1154
 
1085
1155
  def update(
1086
1156
  self,
@@ -1120,5 +1190,5 @@ class AuthN(ServiceBase):
1120
1190
 
1121
1191
  input = m.AgreementUpdateRequest(type=type, id=id, name=name, text=text, active=active)
1122
1192
  return self.request.post(
1123
- "v2/agreements/update", m.AgreementUpdateResult, data=input.dict(exclude_none=True)
1193
+ "v2/agreements/update", m.AgreementUpdateResult, data=input.model_dump(exclude_none=True)
1124
1194
  )