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