pangea-sdk 6.3.0__py3-none-any.whl → 6.5.0b1__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.
@@ -9,13 +9,17 @@ from __future__ import annotations
9
9
  import datetime
10
10
  import json
11
11
  from collections.abc import Mapping
12
- from typing import Any, Dict, Iterable, List, Optional, Sequence, Set, Tuple, Union
12
+ from typing import Any, Dict, Iterable, List, Optional, Sequence, Set, Tuple, Union, cast, overload
13
+
14
+ from pydantic import TypeAdapter
15
+ from typing_extensions import Literal
13
16
 
14
17
  import pangea.exceptions as pexc
15
18
  from pangea.config import PangeaConfig
16
19
  from pangea.response import PangeaResponse, PangeaResponseResult
17
20
  from pangea.services.audit.exceptions import AuditException, EventCorruption
18
21
  from pangea.services.audit.models import (
22
+ AuditSchema,
19
23
  DownloadFormat,
20
24
  DownloadRequest,
21
25
  DownloadResult,
@@ -23,6 +27,7 @@ from pangea.services.audit.models import (
23
27
  EventEnvelope,
24
28
  EventVerification,
25
29
  ExportRequest,
30
+ ForwardingConfiguration,
26
31
  LogBulkRequest,
27
32
  LogBulkResult,
28
33
  LogEvent,
@@ -40,6 +45,9 @@ from pangea.services.audit.models import (
40
45
  SearchRequest,
41
46
  SearchResultOutput,
42
47
  SearchResultRequest,
48
+ ServiceConfig,
49
+ ServiceConfigFilter,
50
+ ServiceConfigListResult,
43
51
  )
44
52
  from pangea.services.audit.signing import Signer, Verifier
45
53
  from pangea.services.audit.util import (
@@ -922,6 +930,298 @@ class Audit(ServiceBase, AuditBase):
922
930
  )
923
931
  return self.request.post("v1/download_results", DownloadResult, data=input.model_dump(exclude_none=True))
924
932
 
933
+ def get_service_config(self, config_id: str) -> PangeaResponse[ServiceConfig]:
934
+ """
935
+ Get a service config.
936
+
937
+ OperationId: audit_post_v1beta_config
938
+
939
+ Args:
940
+ id: The config ID
941
+ """
942
+
943
+ response = self.request.post("v1beta/config", PangeaResponseResult, data={"id": config_id})
944
+ response.result = TypeAdapter(ServiceConfig).validate_python(response.json["result"])
945
+ return cast(PangeaResponse[ServiceConfig], response)
946
+
947
+ @overload
948
+ def create_service_config(
949
+ self,
950
+ version: Literal[1],
951
+ name: str,
952
+ *,
953
+ cold_query_result_retention: str | None = None,
954
+ hot_storage: str | None = None,
955
+ query_result_retention: str | None = None,
956
+ redact_service_config_id: str | None = None,
957
+ redaction_fields: Sequence[str] | None = None,
958
+ retention: str | None = None,
959
+ vault_key_id: str | None = None,
960
+ vault_service_config_id: str | None = None,
961
+ vault_sign: bool | None = None,
962
+ ) -> PangeaResponse[ServiceConfig]:
963
+ """
964
+ Create a v1 service config.
965
+
966
+ OperationId: audit_post_v1beta_config_create
967
+
968
+ Args:
969
+ name: Configuration name
970
+ cold_query_result_retention: Retention window for cold query result / state information.
971
+ hot_storage: Retention window to keep audit logs in hot storage.
972
+ query_result_retention: Length of time to preserve server-side query result caching.
973
+ redact_service_config_id: A redact service config that will be used to redact PII from logs.
974
+ redaction_fields: Fields to perform redaction against.
975
+ retention: Retention window to store audit logs.
976
+ vault_key_id: ID of the Vault key used for signing. If missing, use a default Audit key.
977
+ vault_service_config_id: A vault service config that will be used to sign logs.
978
+ vault_sign: Enable/disable event signing.
979
+ """
980
+
981
+ @overload
982
+ def create_service_config(
983
+ self,
984
+ version: Literal[2],
985
+ name: str,
986
+ *,
987
+ schema: AuditSchema,
988
+ cold_query_result_retention: str | None = None,
989
+ forwarding_configuration: ForwardingConfiguration | None = None,
990
+ hot_storage: str | None = None,
991
+ query_result_retention: str | None = None,
992
+ redact_service_config_id: str | None = None,
993
+ retention: str | None = None,
994
+ vault_key_id: str | None = None,
995
+ vault_service_config_id: str | None = None,
996
+ vault_sign: bool | None = None,
997
+ ) -> PangeaResponse[ServiceConfig]:
998
+ """
999
+ Create a v2 service config.
1000
+
1001
+ OperationId: audit_post_v1beta_config_create
1002
+
1003
+ Args:
1004
+ name: Configuration name
1005
+ schema: Audit log field configuration. Only settable at create time.
1006
+ cold_query_result_retention: Retention window for cold query result / state information.
1007
+ forwarding_configuration: Configuration for forwarding audit logs to external systems.
1008
+ hot_storage: Retention window to keep audit logs in hot storage.
1009
+ query_result_retention: Length of time to preserve server-side query result caching.
1010
+ redact_service_config_id: A redact service config that will be used to redact PII from logs.
1011
+ retention: Retention window to store audit logs.
1012
+ vault_key_id: ID of the Vault key used for signing. If missing, use a default Audit key.
1013
+ vault_service_config_id: A vault service config that will be used to sign logs.
1014
+ vault_sign: Enable/disable event signing.
1015
+ """
1016
+
1017
+ @overload
1018
+ def create_service_config(
1019
+ self,
1020
+ version: Literal[3],
1021
+ name: str,
1022
+ *,
1023
+ schema: AuditSchema,
1024
+ cold_storage: str | None = None,
1025
+ hot_storage: str | None = None,
1026
+ warm_storage: str | None = None,
1027
+ redact_service_config_id: str | None = None,
1028
+ vault_service_config_id: str | None = None,
1029
+ vault_key_id: str | None = None,
1030
+ vault_sign: bool | None = None,
1031
+ forwarding_configuration: ForwardingConfiguration | None = None,
1032
+ ) -> PangeaResponse[ServiceConfig]:
1033
+ """
1034
+ Create a v3 service config.
1035
+
1036
+ OperationId: audit_post_v1beta_config_create
1037
+
1038
+ Args:
1039
+ name: Configuration name
1040
+ schema: Audit log field configuration. Only settable at create time.
1041
+ cold_storage: Retention window for logs in cold storage. Deleted afterwards.
1042
+ hot_storage: Retention window for logs in hot storage. Migrated to warm, cold, or deleted afterwards.
1043
+ warm_storage: Retention window for logs in warm storage. Migrated to cold or deleted afterwards.
1044
+ redact_service_config_id: A redact service config that will be used to redact PII from logs.
1045
+ vault_service_config_id: A vault service config that will be used to sign logs.
1046
+ vault_key_id: ID of the Vault key used for signing. If missing, use a default Audit key.
1047
+ vault_sign: Enable/disable event signing.
1048
+ forwarding_configuration: Configuration for forwarding audit logs to external systems.
1049
+ """
1050
+
1051
+ def create_service_config(
1052
+ self,
1053
+ version: Literal[1, 2, 3],
1054
+ name: str,
1055
+ *,
1056
+ cold_query_result_retention: str | None = None,
1057
+ cold_storage: str | None = None,
1058
+ forwarding_configuration: ForwardingConfiguration | None = None,
1059
+ hot_storage: str | None = None,
1060
+ query_result_retention: str | None = None,
1061
+ redact_service_config_id: str | None = None,
1062
+ redaction_fields: Sequence[str] | None = None,
1063
+ retention: str | None = None,
1064
+ schema: AuditSchema | None = None,
1065
+ vault_key_id: str | None = None,
1066
+ vault_service_config_id: str | None = None,
1067
+ vault_sign: bool | None = None,
1068
+ warm_storage: str | None = None,
1069
+ ) -> PangeaResponse[ServiceConfig]:
1070
+ """
1071
+ Create a service config.
1072
+
1073
+ OperationId: audit_post_v1beta_config_create
1074
+
1075
+ Args:
1076
+ name: Configuration name
1077
+ cold_query_result_retention: Retention window for cold query result / state information.
1078
+ cold_storage: Retention window for logs in cold storage. Deleted afterwards.
1079
+ forwarding_configuration: Configuration for forwarding audit logs to external systems.
1080
+ hot_storage: Retention window to keep audit logs in hot storage.
1081
+ query_result_retention: Length of time to preserve server-side query result caching.
1082
+ redact_service_config_id: A redact service config that will be used to redact PII from logs.
1083
+ redaction_fields: Fields to perform redaction against.
1084
+ retention: Retention window to store audit logs.
1085
+ schema: Audit log field configuration. Only settable at create time.
1086
+ vault_key_id: ID of the Vault key used for signing. If missing, use a default Audit key.
1087
+ vault_service_config_id: A vault service config that will be used to sign logs.
1088
+ vault_sign: Enable/disable event signing.
1089
+ warm_storage: Retention window for logs in warm storage. Migrated to cold or deleted afterwards.
1090
+ """
1091
+
1092
+ response = self.request.post(
1093
+ "v1beta/config/create",
1094
+ PangeaResponseResult,
1095
+ data={
1096
+ "cold_query_result_retention": cold_query_result_retention,
1097
+ "cold_storage": cold_storage,
1098
+ "forwarding_configuration": forwarding_configuration,
1099
+ "hot_storage": hot_storage,
1100
+ "name": name,
1101
+ "query_result_retention": query_result_retention,
1102
+ "redact_service_config_id": redact_service_config_id,
1103
+ "redaction_fields": redaction_fields,
1104
+ "retention": retention,
1105
+ "schema": schema,
1106
+ "vault_key_id": vault_key_id,
1107
+ "vault_service_config_id": vault_service_config_id,
1108
+ "vault_sign": vault_sign,
1109
+ "warm_storage": warm_storage,
1110
+ "version": version,
1111
+ },
1112
+ )
1113
+ response.result = TypeAdapter(ServiceConfig).validate_python(response.json["result"])
1114
+ return cast(PangeaResponse[ServiceConfig], response)
1115
+
1116
+ def update_service_config(
1117
+ self,
1118
+ config_id: str,
1119
+ *,
1120
+ name: str,
1121
+ updated_at: datetime.datetime,
1122
+ # Optionals.
1123
+ cold_query_result_retention: str | None = None,
1124
+ cold_storage: str | None = None,
1125
+ forwarding_configuration: ForwardingConfiguration | None = None,
1126
+ hot_storage: str | None = None,
1127
+ query_result_retention: str | None = None,
1128
+ redact_service_config_id: str | None = None,
1129
+ retention: str | None = None,
1130
+ schema: AuditSchema | None = None,
1131
+ vault_key_id: str | None = None,
1132
+ vault_service_config_id: str | None = None,
1133
+ vault_sign: bool | None = None,
1134
+ warm_storage: str | None = None,
1135
+ ) -> PangeaResponse[ServiceConfig]:
1136
+ """
1137
+ Update a service config.
1138
+
1139
+ OperationId: audit_post_v1beta_config_update
1140
+
1141
+ Args:
1142
+ id: The config ID
1143
+ name: Configuration name
1144
+ updated_at: The DB timestamp when this config was last updated at
1145
+ cold_query_result_retention: Retention window for cold query result / state information.
1146
+ cold_storage: Retention window for logs in cold storage. Deleted afterwards.
1147
+ forwarding_configuration: Configuration for forwarding audit logs to external systems
1148
+ hot_storage: Retention window to keep audit logs in hot storage
1149
+ query_result_retention: Length of time to preserve server-side query result caching
1150
+ redact_service_config_id: A redact service config that will be used to redact PII from logs
1151
+ retention: Retention window to store audit logs
1152
+ schema: Audit log field configuration
1153
+ vault_key_id: ID of the Vault key used for signing. If missing, use a default Audit key.
1154
+ vault_service_config_id: A vault service config that will be used to sign logs
1155
+ vault_sign: Enable/disable event signing
1156
+ warm_storage: Retention window for logs in warm storage. Migrated to cold or deleted afterwards.
1157
+ """
1158
+
1159
+ response = self.request.post(
1160
+ "v1beta/config/update",
1161
+ PangeaResponseResult,
1162
+ data={
1163
+ "id": config_id,
1164
+ "name": name,
1165
+ "updated_at": updated_at,
1166
+ # Optionals.
1167
+ "cold_query_result_retention": cold_query_result_retention,
1168
+ "cold_storage": cold_storage,
1169
+ "forwarding_configuration": forwarding_configuration,
1170
+ "hot_storage": hot_storage,
1171
+ "query_result_retention": query_result_retention,
1172
+ "redact_service_config_id": redact_service_config_id,
1173
+ "retention": retention,
1174
+ "schema": schema,
1175
+ "vault_key_id": vault_key_id,
1176
+ "vault_service_config_id": vault_service_config_id,
1177
+ "vault_sign": vault_sign,
1178
+ "warm_storage": warm_storage,
1179
+ },
1180
+ )
1181
+ response.result = TypeAdapter(ServiceConfig).validate_python(response.json["result"])
1182
+ return cast(PangeaResponse[ServiceConfig], response)
1183
+
1184
+ def delete_service_config(self, config_id: str) -> PangeaResponse[ServiceConfig]:
1185
+ """
1186
+ Delete a service config.
1187
+
1188
+ OperationId: audit_post_v1beta_config_delete
1189
+
1190
+ Args:
1191
+ id: The config ID
1192
+ """
1193
+
1194
+ response = self.request.post("v1beta/config/delete", PangeaResponseResult, data={"id": config_id})
1195
+ response.result = TypeAdapter(ServiceConfig).validate_python(response.json["result"])
1196
+ return cast(PangeaResponse[ServiceConfig], response)
1197
+
1198
+ def list_service_configs(
1199
+ self,
1200
+ *,
1201
+ filter: ServiceConfigFilter | None = None,
1202
+ last: str | None = None,
1203
+ order: Literal["asc", "desc"] | None = None,
1204
+ order_by: Literal["id", "created_at", "updated_at"] | None = None,
1205
+ size: int | None = None,
1206
+ ) -> PangeaResponse[ServiceConfigListResult]:
1207
+ """
1208
+ List service configs.
1209
+
1210
+ OperationId: audit_post_v1beta_config_list
1211
+
1212
+ Args:
1213
+ last: Reflected value from a previous response to obtain the next page of results.
1214
+ order: Order results asc(ending) or desc(ending).
1215
+ order_by: Which field to order results by.
1216
+ size: Maximum results to include in the response.
1217
+ """
1218
+
1219
+ return self.request.post(
1220
+ "v1beta/config/list",
1221
+ ServiceConfigListResult,
1222
+ data={"filter": filter, "last": last, "order": order, "order_by": order_by, "size": size},
1223
+ )
1224
+
925
1225
  def update_published_roots(self, result: SearchResultOutput):
926
1226
  """Fetches series of published root hashes from Arweave
927
1227
 
@@ -11,7 +11,7 @@ import enum
11
11
  from typing import Any, Dict, List, Optional, Sequence, Union
12
12
 
13
13
  from pydantic import Field
14
- from typing_extensions import Annotated
14
+ from typing_extensions import Annotated, Literal
15
15
 
16
16
  from pangea.response import APIRequestModel, APIResponseModel, PangeaDateTime, PangeaResponseResult
17
17
 
@@ -532,3 +532,275 @@ class ExportRequest(APIRequestModel):
532
532
  Whether or not to include the root hash of the tree and the membership proof
533
533
  for each record.
534
534
  """
535
+
536
+
537
+ class AuditSchemaField(APIResponseModel):
538
+ """A description of a field in an audit log."""
539
+
540
+ id: str
541
+ """Prefix name / identity for the field."""
542
+
543
+ type: Literal["boolean", "datetime", "integer", "string", "string-unindexed", "text"]
544
+ """The data type for the field."""
545
+
546
+ description: Optional[str] = None
547
+ """Human display description of the field."""
548
+
549
+ name: Optional[str] = None
550
+ """Human display name/title of the field."""
551
+
552
+ redact: Optional[bool] = None
553
+ """If true, redaction is performed against this field (if configured.) Only valid for string type."""
554
+
555
+ required: Optional[bool] = None
556
+ """If true, this field is required to exist in all logged events."""
557
+
558
+ size: Optional[int] = None
559
+ """The maximum size of the field. Only valid for strings, which limits number of UTF-8 characters."""
560
+
561
+ ui_default_visible: Optional[bool] = None
562
+ """If true, this field is visible by default in audit UIs."""
563
+
564
+
565
+ class AuditSchema(APIResponseModel):
566
+ """A description of acceptable fields for an audit log."""
567
+
568
+ client_signable: Optional[bool] = None
569
+ """If true, records contain fields to support client/vault signing."""
570
+
571
+ save_malformed: Optional[str] = None
572
+ """Save (or reject) malformed AuditEvents."""
573
+
574
+ tamper_proofing: Optional[bool] = None
575
+ """If true, records contain fields to support tamper-proofing."""
576
+
577
+ fields: Optional[List[AuditSchemaField]] = None
578
+ """List of field definitions."""
579
+
580
+
581
+ class ForwardingConfiguration(APIResponseModel):
582
+ """Configuration for forwarding audit logs to external systems."""
583
+
584
+ type: str
585
+ """Type of forwarding configuration."""
586
+
587
+ forwarding_enabled: Optional[bool] = False
588
+ """Whether forwarding is enabled."""
589
+
590
+ event_url: Optional[str] = None
591
+ """URL where events will be written to. Must use HTTPS."""
592
+
593
+ ack_url: Optional[str] = None
594
+ """If indexer acknowledgement is required, this must be provided along with a 'channel_id'."""
595
+
596
+ channel_id: Optional[str] = None
597
+ """An optional splunk channel included in each request if indexer acknowledgement is required."""
598
+
599
+ public_cert: Optional[str] = None
600
+ """Public certificate if a self signed TLS cert is being used."""
601
+
602
+ index: Optional[str] = None
603
+ """Optional splunk index passed in the record bodies."""
604
+
605
+ vault_config_id: Optional[str] = None
606
+ """The vault config used to store the HEC token."""
607
+
608
+ vault_secret_id: Optional[str] = None
609
+ """The secret ID where the HEC token is stored in vault."""
610
+
611
+
612
+ class ServiceConfigV1(PangeaResponseResult):
613
+ """Configuration options available for audit service"""
614
+
615
+ id: Optional[str] = None
616
+ """The config ID"""
617
+
618
+ version: Literal[1] = 1
619
+
620
+ created_at: Optional[str] = None
621
+ """The DB timestamp when this config was created. Ignored when submitted."""
622
+
623
+ updated_at: Optional[str] = None
624
+ """The DB timestamp when this config was last updated at"""
625
+
626
+ name: Optional[str] = None
627
+ """Configuration name"""
628
+
629
+ retention: Optional[str] = None
630
+ """Retention window to store audit logs."""
631
+
632
+ cold_query_result_retention: Optional[str] = None
633
+ """Retention window for cold query result / state information."""
634
+
635
+ hot_storage: Optional[str] = None
636
+ """Retention window to keep audit logs in hot storage."""
637
+
638
+ query_result_retention: Optional[str] = None
639
+ """Length of time to preserve server-side query result caching."""
640
+
641
+ redact_service_config_id: Optional[str] = None
642
+ """A redact service config that will be used to redact PII from logs."""
643
+
644
+ redaction_fields: Optional[List[str]] = None
645
+ """Fields to perform redaction against."""
646
+
647
+ vault_service_config_id: Optional[str] = None
648
+ """A vault service config that will be used to sign logs."""
649
+
650
+ vault_key_id: Optional[str] = None
651
+ """ID of the Vault key used for signing. If missing, use a default Audit key"""
652
+
653
+ vault_sign: Optional[bool] = None
654
+ """Enable/disable event signing"""
655
+
656
+
657
+ class ServiceConfigV2(PangeaResponseResult):
658
+ """Configuration options available for audit service"""
659
+
660
+ audit_schema: AuditSchema = Field(alias="schema")
661
+ """Audit log field configuration. Only settable at create time."""
662
+
663
+ version: Literal[2] = 2
664
+
665
+ cold_query_result_retention: Optional[str] = None
666
+ """Retention window for cold query result / state information."""
667
+
668
+ created_at: Optional[str] = None
669
+ """The DB timestamp when this config was created. Ignored when submitted."""
670
+
671
+ hot_storage: Optional[str] = None
672
+ """Retention window to keep audit logs in hot storage."""
673
+
674
+ id: Optional[str] = None
675
+ """The config ID"""
676
+
677
+ name: Optional[str] = None
678
+ """Configuration name"""
679
+
680
+ query_result_retention: Optional[str] = None
681
+ """Length of time to preserve server-side query result caching."""
682
+
683
+ redact_service_config_id: Optional[str] = None
684
+ """A redact service config that will be used to redact PII from logs."""
685
+
686
+ retention: Optional[str] = None
687
+ """Retention window to store audit logs."""
688
+
689
+ updated_at: Optional[str] = None
690
+ """The DB timestamp when this config was last updated at"""
691
+
692
+ vault_key_id: Optional[str] = None
693
+ """ID of the Vault key used for signing. If missing, use a default Audit key"""
694
+
695
+ vault_service_config_id: Optional[str] = None
696
+ """A vault service config that will be used to sign logs."""
697
+
698
+ vault_sign: Optional[bool] = None
699
+ """Enable/disable event signing"""
700
+
701
+ forwarding_configuration: Optional[ForwardingConfiguration] = None
702
+ """Configuration for forwarding audit logs to external systems."""
703
+
704
+
705
+ class ServiceConfigV3(PangeaResponseResult):
706
+ """Configuration options available for audit service"""
707
+
708
+ audit_schema: AuditSchema = Field(alias="schema")
709
+ """Audit log field configuration. Only settable at create time."""
710
+
711
+ version: Literal[3] = 3
712
+ """Version of the service config."""
713
+
714
+ cold_storage: Optional[str] = None
715
+ """Retention window for logs in cold storage. Deleted afterwards."""
716
+
717
+ created_at: Optional[str] = None
718
+ """The DB timestamp when this config was created. Ignored when submitted."""
719
+
720
+ forwarding_configuration: Optional[ForwardingConfiguration] = None
721
+ """Configuration for forwarding audit logs to external systems."""
722
+
723
+ hot_storage: Optional[str] = None
724
+ """Retention window for logs in hot storage. Migrated to warm, cold, or deleted afterwards."""
725
+
726
+ id: Optional[str] = None
727
+ """The config ID"""
728
+
729
+ name: Optional[str] = None
730
+ """Configuration name"""
731
+
732
+ redact_service_config_id: Optional[str] = None
733
+ """A redact service config that will be used to redact PII from logs."""
734
+
735
+ updated_at: Optional[str] = None
736
+ """The DB timestamp when this config was last updated at"""
737
+
738
+ vault_key_id: Optional[str] = None
739
+ """ID of the Vault key used for signing. If missing, use a default Audit key"""
740
+
741
+ vault_service_config_id: Optional[str] = None
742
+ """A vault service config that will be used to sign logs."""
743
+
744
+ vault_sign: Optional[bool] = None
745
+ """Enable/disable event signing"""
746
+
747
+ warm_storage: Optional[str] = None
748
+ """Retention window for logs in warm storage. Migrated to cold or deleted afterwards."""
749
+
750
+
751
+ ServiceConfig = Annotated[
752
+ Union[ServiceConfigV1, ServiceConfigV2, ServiceConfigV3],
753
+ Field(discriminator="version"),
754
+ ]
755
+ """Configuration options available for audit service"""
756
+
757
+
758
+ class ServiceConfigFilter(APIRequestModel):
759
+ id: Optional[str] = None
760
+ """Only records where id equals this value."""
761
+
762
+ id__contains: Optional[Sequence[str]] = None
763
+ """Only records where id includes each substring."""
764
+
765
+ id__in: Optional[Sequence[str]] = None
766
+ """Only records where id equals one of the provided substrings."""
767
+
768
+ created_at: Optional[str] = None
769
+ """Only records where created_at equals this value."""
770
+
771
+ created_at__gt: Optional[str] = None
772
+ """Only records where created_at is greater than this value."""
773
+
774
+ created_at__gte: Optional[str] = None
775
+ """Only records where created_at is greater than or equal to this value."""
776
+
777
+ created_at__lt: Optional[str] = None
778
+ """Only records where created_at is less than this value."""
779
+
780
+ created_at__lte: Optional[str] = None
781
+ """Only records where created_at is less than or equal to this value."""
782
+
783
+ updated_at: Optional[str] = None
784
+ """Only records where updated_at equals this value."""
785
+
786
+ updated_at__gt: Optional[str] = None
787
+ """Only records where updated_at is greater than this value."""
788
+
789
+ updated_at__gte: Optional[str] = None
790
+ """Only records where updated_at is greater than or equal to this value."""
791
+
792
+ updated_at__lt: Optional[str] = None
793
+ """Only records where updated_at is less than this value."""
794
+
795
+ updated_at__lte: Optional[str] = None
796
+ """Only records where updated_at is less than or equal to this value."""
797
+
798
+
799
+ class ServiceConfigListResult(PangeaResponseResult):
800
+ count: int
801
+ """The total number of service configs matched by the list request."""
802
+
803
+ last: str
804
+ """Used to fetch the next page of the current listing when provided in a repeated request's last parameter."""
805
+
806
+ items: Sequence[ServiceConfig]