cognite-toolkit 0.7.43__py3-none-any.whl → 0.7.45__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 (57) hide show
  1. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +6 -0
  2. cognite_toolkit/_cdf_tk/client/api/assets.py +2 -2
  3. cognite_toolkit/_cdf_tk/client/api/events.py +2 -2
  4. cognite_toolkit/_cdf_tk/client/api/filemetadata.py +150 -0
  5. cognite_toolkit/_cdf_tk/client/api/raw.py +174 -0
  6. cognite_toolkit/_cdf_tk/client/api/simulator_models.py +128 -0
  7. cognite_toolkit/_cdf_tk/client/api/simulators.py +8 -0
  8. cognite_toolkit/_cdf_tk/client/api/timeseries.py +2 -2
  9. cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +2 -1
  10. cognite_toolkit/_cdf_tk/client/cdf_client/api.py +114 -8
  11. cognite_toolkit/_cdf_tk/client/data_classes/annotation.py +79 -0
  12. cognite_toolkit/_cdf_tk/client/data_classes/base.py +13 -3
  13. cognite_toolkit/_cdf_tk/client/data_classes/data_modeling/__init__.py +16 -0
  14. cognite_toolkit/_cdf_tk/client/data_classes/data_modeling/_instance.py +143 -0
  15. cognite_toolkit/_cdf_tk/client/data_classes/data_modeling/_references.py +8 -0
  16. cognite_toolkit/_cdf_tk/client/data_classes/dataset.py +35 -0
  17. cognite_toolkit/_cdf_tk/client/data_classes/extraction_pipeline.py +59 -0
  18. cognite_toolkit/_cdf_tk/client/data_classes/filemetadata.py +7 -1
  19. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_destination.py +34 -0
  20. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_job.py +134 -0
  21. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_mapping.py +72 -0
  22. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/__init__.py +63 -0
  23. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/_auth.py +63 -0
  24. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/_base.py +26 -0
  25. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/_certificate.py +20 -0
  26. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/_eventhub.py +31 -0
  27. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/_kafka.py +53 -0
  28. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/_mqtt.py +36 -0
  29. cognite_toolkit/_cdf_tk/client/data_classes/hosted_extractor_source/_rest.py +49 -0
  30. cognite_toolkit/_cdf_tk/client/data_classes/identifiers.py +8 -0
  31. cognite_toolkit/_cdf_tk/client/data_classes/label.py +27 -0
  32. cognite_toolkit/_cdf_tk/client/data_classes/raw.py +3 -2
  33. cognite_toolkit/_cdf_tk/client/data_classes/securitycategory.py +24 -0
  34. cognite_toolkit/_cdf_tk/client/data_classes/sequence.py +45 -0
  35. cognite_toolkit/_cdf_tk/client/data_classes/transformation.py +140 -0
  36. cognite_toolkit/_cdf_tk/client/data_classes/workflow.py +27 -0
  37. cognite_toolkit/_cdf_tk/client/data_classes/workflow_trigger.py +63 -0
  38. cognite_toolkit/_cdf_tk/client/data_classes/workflow_version.py +155 -0
  39. cognite_toolkit/_cdf_tk/client/testing.py +5 -0
  40. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +4 -3
  41. cognite_toolkit/_cdf_tk/cruds/__init__.py +5 -1
  42. cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +7 -3
  43. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +2 -0
  44. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +56 -59
  45. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +1 -1
  46. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +119 -0
  47. cognite_toolkit/_cdf_tk/feature_flags.py +4 -0
  48. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +34 -29
  49. cognite_toolkit/_cdf_tk/storageio/_file_content.py +22 -19
  50. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  51. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  52. cognite_toolkit/_resources/cdf.toml +1 -1
  53. cognite_toolkit/_version.py +1 -1
  54. {cognite_toolkit-0.7.43.dist-info → cognite_toolkit-0.7.45.dist-info}/METADATA +11 -1
  55. {cognite_toolkit-0.7.43.dist-info → cognite_toolkit-0.7.45.dist-info}/RECORD +57 -30
  56. {cognite_toolkit-0.7.43.dist-info → cognite_toolkit-0.7.45.dist-info}/WHEEL +1 -1
  57. {cognite_toolkit-0.7.43.dist-info → cognite_toolkit-0.7.45.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,34 @@
1
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
2
+ BaseModelObject,
3
+ RequestUpdateable,
4
+ ResponseResource,
5
+ )
6
+
7
+ from .identifiers import ExternalId
8
+
9
+
10
+ class Credentials(BaseModelObject):
11
+ nonce: str
12
+
13
+
14
+ class HostedExtractorDestination(BaseModelObject):
15
+ external_id: str
16
+ target_data_set_id: int | None = None
17
+
18
+ def as_id(self) -> ExternalId:
19
+ return ExternalId(external_id=self.external_id)
20
+
21
+
22
+ class HostedExtractorDestinationRequest(HostedExtractorDestination, RequestUpdateable):
23
+ credentials: Credentials | None = None
24
+
25
+
26
+ class HostedExtractorDestinationResponse(
27
+ HostedExtractorDestination, ResponseResource[HostedExtractorDestinationRequest]
28
+ ):
29
+ session_id: int | None = None
30
+ created_time: int
31
+ last_updated_time: int
32
+
33
+ def as_request_resource(self) -> HostedExtractorDestinationRequest:
34
+ return HostedExtractorDestinationRequest.model_validate(self.dump(), extra="ignore")
@@ -0,0 +1,134 @@
1
+ from typing import Annotated, Literal
2
+
3
+ from pydantic import Field, JsonValue
4
+
5
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
6
+ BaseModelObject,
7
+ RequestUpdateable,
8
+ ResponseResource,
9
+ )
10
+
11
+ from .identifiers import ExternalId
12
+
13
+
14
+ class JobFormatDefinition(BaseModelObject):
15
+ type: str
16
+
17
+
18
+ class PrefixConfig(BaseModelObject):
19
+ from_topic: bool | None = None
20
+ prefix: str | None = None
21
+
22
+
23
+ class SpaceRef(BaseModelObject):
24
+ space: str
25
+
26
+
27
+ class CogniteFormat(JobFormatDefinition):
28
+ type: Literal["cognite"] = "cognite"
29
+ encoding: str | None = None
30
+ compression: str | None = None
31
+ prefix: PrefixConfig | None = None
32
+ data_models: list[SpaceRef] | None = None
33
+
34
+
35
+ class CustomFormat(JobFormatDefinition):
36
+ type: Literal["custom"] = "custom"
37
+ encoding: str | None = None
38
+ compression: str | None = None
39
+ mapping_id: str
40
+
41
+
42
+ class RockwellFormat(JobFormatDefinition):
43
+ type: Literal["rockwell"] = "rockwell"
44
+ encoding: str | None = None
45
+ compression: str | None = None
46
+ prefix: PrefixConfig | None = None
47
+ data_models: list[SpaceRef] | None = None
48
+
49
+
50
+ class ValueFormat(JobFormatDefinition):
51
+ type: Literal["value"] = "value"
52
+ encoding: str | None = None
53
+ compression: str | None = None
54
+ prefix: PrefixConfig | None = None
55
+ data_models: list[SpaceRef] | None = None
56
+
57
+
58
+ JobFormat = Annotated[
59
+ CogniteFormat | CustomFormat | RockwellFormat | ValueFormat,
60
+ Field(discriminator="type"),
61
+ ]
62
+
63
+
64
+ class IncrementalLoadDefinition(BaseModelObject):
65
+ type: str
66
+
67
+
68
+ class BodyIncrementalLoad(IncrementalLoadDefinition):
69
+ type: Literal["body"] = "body"
70
+ value: str
71
+
72
+
73
+ class NextUrlIncrementalLoad(IncrementalLoadDefinition):
74
+ type: Literal["nextUrl"] = "nextUrl"
75
+ value: str
76
+
77
+
78
+ class HeaderIncrementalLoad(IncrementalLoadDefinition):
79
+ type: Literal["headerValue"] = "headerValue"
80
+ key: str
81
+ value: str
82
+
83
+
84
+ class QueryParamIncrementalLoad(IncrementalLoadDefinition):
85
+ type: Literal["queryParam"] = "queryParam"
86
+ key: str
87
+ value: str
88
+
89
+
90
+ class MQTTConfig(BaseModelObject):
91
+ topic_filter: str
92
+
93
+
94
+ class KafkaConfig(BaseModelObject):
95
+ topic: str
96
+ partitions: int | None = None
97
+
98
+
99
+ class RestConfig(BaseModelObject):
100
+ interval: Literal["5m", "15m", "1h", "6h", "12h", "1d"]
101
+ path: str
102
+ method: Literal["get", "post"] | None = None
103
+ body: JsonValue | None = None
104
+ query: dict[str, str] | None = None
105
+ headers: dict[str, str] | None = None
106
+ incremental_load: BodyIncrementalLoad | HeaderIncrementalLoad | QueryParamIncrementalLoad | None = Field(
107
+ None, discriminator="type"
108
+ )
109
+ pagination: (
110
+ BodyIncrementalLoad | NextUrlIncrementalLoad | HeaderIncrementalLoad | QueryParamIncrementalLoad | None
111
+ ) = Field(None, discriminator="type")
112
+
113
+
114
+ class HostedExtractorJob(BaseModelObject):
115
+ external_id: str
116
+ destination_id: str
117
+ source_id: str
118
+ format: JobFormat
119
+ config: MQTTConfig | KafkaConfig | RestConfig
120
+
121
+ def as_id(self) -> ExternalId:
122
+ return ExternalId(external_id=self.external_id)
123
+
124
+
125
+ class HostedExtractorJobRequest(HostedExtractorJob, RequestUpdateable): ...
126
+
127
+
128
+ class HostedExtractorJobResponse(HostedExtractorJob, ResponseResource[HostedExtractorJobRequest]):
129
+ status: str | None = None
130
+ created_time: int
131
+ last_updated_time: int
132
+
133
+ def as_request_resource(self) -> HostedExtractorJobRequest:
134
+ return HostedExtractorJobRequest.model_validate(self.dump(), extra="ignore")
@@ -0,0 +1,72 @@
1
+ from typing import Annotated, Literal
2
+
3
+ from pydantic import Field
4
+
5
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
6
+ BaseModelObject,
7
+ RequestUpdateable,
8
+ ResponseResource,
9
+ )
10
+
11
+ from .identifiers import ExternalId
12
+
13
+
14
+ class Mapping(BaseModelObject):
15
+ expression: str
16
+
17
+
18
+ class MappingInputDefinition(BaseModelObject):
19
+ type: str
20
+
21
+
22
+ class ProtobufFile(BaseModelObject):
23
+ file_name: str
24
+ content: str
25
+
26
+
27
+ class ProtobufInput(BaseModelObject):
28
+ type: Literal["protobuf"] = "protobuf"
29
+ message_name: str
30
+ files: list[ProtobufFile]
31
+
32
+
33
+ class CSVInput(BaseModelObject):
34
+ type: Literal["csv"] = "csv"
35
+ delimiter: str = ","
36
+ custom_keys: list[str] | None = None
37
+
38
+
39
+ class XMLInput(BaseModelObject):
40
+ type: Literal["xml"] = "xml"
41
+
42
+
43
+ class JSONInput(BaseModelObject):
44
+ type: Literal["json"] = "json"
45
+
46
+
47
+ MappingInput = Annotated[
48
+ ProtobufInput | CSVInput | XMLInput | JSONInput,
49
+ Field(discriminator="type"),
50
+ ]
51
+
52
+
53
+ class HostedExtractorMapping(BaseModelObject):
54
+ external_id: str
55
+ mapping: Mapping
56
+ published: bool
57
+
58
+ def as_id(self) -> ExternalId:
59
+ return ExternalId(external_id=self.external_id)
60
+
61
+
62
+ class HostedExtractorMappingRequest(HostedExtractorMapping, RequestUpdateable):
63
+ input: MappingInput | None = None
64
+
65
+
66
+ class HostedExtractorMappingResponse(HostedExtractorMapping, ResponseResource[HostedExtractorMappingRequest]):
67
+ input: MappingInput
68
+ created_time: int
69
+ last_updated_time: int
70
+
71
+ def as_request_resource(self) -> HostedExtractorMappingRequest:
72
+ return HostedExtractorMappingRequest.model_validate(self.dump(), extra="ignore")
@@ -0,0 +1,63 @@
1
+ from typing import Annotated
2
+
3
+ from pydantic import Field, TypeAdapter
4
+
5
+ from ._auth import (
6
+ BasicAuthenticationRequest,
7
+ BasicAuthenticationResponse,
8
+ ClientCredentialAuthenticationRequest,
9
+ ClientCredentialAuthenticationResponse,
10
+ HTTPBasicAuthenticationRequest,
11
+ HTTPBasicAuthenticationResponse,
12
+ ScramShaAuthenticationRequest,
13
+ ScramShaAuthenticationResponse,
14
+ )
15
+ from ._certificate import AuthCertificateRequest, CACertificateRequest, CertificateResponse
16
+ from ._eventhub import EventHubSourceRequest, EventHubSourceResponse
17
+ from ._kafka import KafkaBroker, KafkaSourceRequest, KafkaSourceResponse
18
+ from ._mqtt import MQTTSourceRequest, MQTTSourceResponse
19
+ from ._rest import RESTSourceRequest, RESTSourceResponse
20
+
21
+ HostedExtractorSourceRequestUnion = Annotated[
22
+ KafkaSourceRequest | EventHubSourceRequest | MQTTSourceRequest | RESTSourceRequest,
23
+ Field(discriminator="type"),
24
+ ]
25
+
26
+ HostedExtractorSourceRequest: TypeAdapter[HostedExtractorSourceRequestUnion] = TypeAdapter(
27
+ HostedExtractorSourceRequestUnion
28
+ )
29
+
30
+ HostedExtractorSourceResponseUnion = Annotated[
31
+ KafkaSourceResponse | EventHubSourceResponse | MQTTSourceResponse | RESTSourceResponse,
32
+ Field(discriminator="type"),
33
+ ]
34
+
35
+ HostedExtractorSourceResponse: TypeAdapter[HostedExtractorSourceResponseUnion] = TypeAdapter(
36
+ HostedExtractorSourceResponseUnion
37
+ )
38
+
39
+
40
+ __all__ = [
41
+ "AuthCertificateRequest",
42
+ "BasicAuthenticationRequest",
43
+ "BasicAuthenticationResponse",
44
+ "CACertificateRequest",
45
+ "CertificateResponse",
46
+ "ClientCredentialAuthenticationRequest",
47
+ "ClientCredentialAuthenticationResponse",
48
+ "EventHubSourceRequest",
49
+ "EventHubSourceResponse",
50
+ "HTTPBasicAuthenticationRequest",
51
+ "HTTPBasicAuthenticationResponse",
52
+ "HostedExtractorSourceRequest",
53
+ "HostedExtractorSourceResponse",
54
+ "KafkaBroker",
55
+ "KafkaSourceRequest",
56
+ "KafkaSourceResponse",
57
+ "MQTTSourceRequest",
58
+ "MQTTSourceResponse",
59
+ "RESTSourceRequest",
60
+ "RESTSourceResponse",
61
+ "ScramShaAuthenticationRequest",
62
+ "ScramShaAuthenticationResponse",
63
+ ]
@@ -0,0 +1,63 @@
1
+ from typing import Literal
2
+
3
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
4
+ BaseModelObject,
5
+ )
6
+
7
+
8
+ class AuthenticationRequestDefinition(BaseModelObject):
9
+ type: str
10
+
11
+
12
+ class AuthenticationResponseDefinition(BaseModelObject):
13
+ type: str
14
+
15
+
16
+ class BasicAuthentication(BaseModelObject):
17
+ type: Literal["basic"] = "basic"
18
+ username: str
19
+
20
+
21
+ class BasicAuthenticationRequest(BasicAuthentication, AuthenticationRequestDefinition):
22
+ password: str | None = None
23
+
24
+
25
+ class BasicAuthenticationResponse(BasicAuthentication, AuthenticationResponseDefinition): ...
26
+
27
+
28
+ class ClientCredentialAuthentication(BaseModelObject):
29
+ type: Literal["clientCredential"] = "clientCredential"
30
+ client_id: str
31
+ token_url: str
32
+ scopes: str
33
+ default_expires_in: str | None = None
34
+
35
+
36
+ class ClientCredentialAuthenticationRequest(ClientCredentialAuthentication, AuthenticationRequestDefinition):
37
+ client_secret: str
38
+
39
+
40
+ class ClientCredentialAuthenticationResponse(ClientCredentialAuthentication, AuthenticationResponseDefinition): ...
41
+
42
+
43
+ class ScramShaAuthentication(BaseModelObject):
44
+ type: Literal["scramSha256", "scramSha512"]
45
+ username: str
46
+
47
+
48
+ class ScramShaAuthenticationRequest(ScramShaAuthentication, AuthenticationRequestDefinition):
49
+ password: str
50
+
51
+
52
+ class ScramShaAuthenticationResponse(ScramShaAuthentication, AuthenticationResponseDefinition): ...
53
+
54
+
55
+ class HTTPBasicAuthenticationRequest(AuthenticationRequestDefinition):
56
+ type: Literal["header", "query"]
57
+ key: str
58
+ value: str
59
+
60
+
61
+ class HTTPBasicAuthenticationResponse(AuthenticationResponseDefinition):
62
+ type: Literal["header", "query"]
63
+ key: str
@@ -0,0 +1,26 @@
1
+ from typing import Any, Literal
2
+
3
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
4
+ BaseModelObject,
5
+ RequestUpdateable,
6
+ )
7
+ from cognite_toolkit._cdf_tk.client.data_classes.identifiers import ExternalId
8
+
9
+
10
+ class SourceRequestDefinition(RequestUpdateable):
11
+ type: str
12
+ external_id: str
13
+
14
+ def as_id(self) -> ExternalId:
15
+ return ExternalId(external_id=self.external_id)
16
+
17
+ def as_update(self, mode: Literal["patch", "replace"]) -> dict[str, Any]:
18
+ output = super().as_update(mode)
19
+ output["type"] = self.type
20
+ return output
21
+
22
+
23
+ class SourceResponseDefinition(BaseModelObject):
24
+ external_id: str
25
+ created_time: int
26
+ last_updated_time: int
@@ -0,0 +1,20 @@
1
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
2
+ BaseModelObject,
3
+ )
4
+
5
+
6
+ class CACertificateRequest(BaseModelObject):
7
+ type: str
8
+ certificate: str
9
+
10
+
11
+ class AuthCertificateRequest(BaseModelObject):
12
+ key: str
13
+ key_password: str | None = None
14
+ type: str
15
+ certificate: str
16
+
17
+
18
+ class CertificateResponse(BaseModelObject):
19
+ thumbprint: str
20
+ expires_at: int
@@ -0,0 +1,31 @@
1
+ from typing import Literal
2
+
3
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
4
+ BaseModelObject,
5
+ ResponseResource,
6
+ )
7
+
8
+ from ._auth import BasicAuthenticationRequest, BasicAuthenticationResponse
9
+ from ._base import SourceRequestDefinition, SourceResponseDefinition
10
+
11
+
12
+ class EventHubSource(BaseModelObject):
13
+ type: Literal["eventHub"] = "eventHub"
14
+ host: str
15
+ event_hub_name: str
16
+ consumer_group: str | None = None
17
+
18
+
19
+ class EventHubSourceRequest(EventHubSource, SourceRequestDefinition):
20
+ authentication: BasicAuthenticationRequest | None = None
21
+
22
+
23
+ class EventHubSourceResponse(
24
+ SourceResponseDefinition,
25
+ EventHubSource,
26
+ ResponseResource[EventHubSourceRequest],
27
+ ):
28
+ authentication: BasicAuthenticationResponse | None = None
29
+
30
+ def as_request_resource(self) -> EventHubSourceRequest:
31
+ return EventHubSourceRequest.model_validate(self.dump(), extra="ignore")
@@ -0,0 +1,53 @@
1
+ from typing import Literal
2
+
3
+ from pydantic import Field
4
+
5
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
6
+ BaseModelObject,
7
+ ResponseResource,
8
+ )
9
+
10
+ from ._auth import (
11
+ BasicAuthenticationRequest,
12
+ BasicAuthenticationResponse,
13
+ ClientCredentialAuthenticationRequest,
14
+ ClientCredentialAuthenticationResponse,
15
+ ScramShaAuthenticationRequest,
16
+ ScramShaAuthenticationResponse,
17
+ )
18
+ from ._base import SourceRequestDefinition, SourceResponseDefinition
19
+ from ._certificate import AuthCertificateRequest, CACertificateRequest, CertificateResponse
20
+
21
+
22
+ class KafkaBroker(BaseModelObject):
23
+ host: str
24
+ port: int
25
+
26
+
27
+ class KafkaSource(BaseModelObject):
28
+ type: Literal["kafka"] = "kafka"
29
+ bootstrap_brokers: list[KafkaBroker]
30
+ use_tls: bool | None = None
31
+
32
+
33
+ class KafkaSourceRequest(KafkaSource, SourceRequestDefinition):
34
+ authentication: (
35
+ BasicAuthenticationRequest | ClientCredentialAuthenticationRequest | ScramShaAuthenticationRequest | None
36
+ ) = Field(None, discriminator="type")
37
+ ca_certificate: CACertificateRequest | None = None
38
+ auth_certificate: AuthCertificateRequest | None = None
39
+
40
+
41
+ class KafkaSourceResponse(
42
+ SourceResponseDefinition,
43
+ KafkaSource,
44
+ ResponseResource[KafkaSourceRequest],
45
+ ):
46
+ authentication: (
47
+ BasicAuthenticationResponse | ClientCredentialAuthenticationResponse | ScramShaAuthenticationResponse | None
48
+ ) = Field(None, discriminator="type")
49
+ ca_certificate: CertificateResponse | None = None
50
+ auth_certificate: CertificateResponse | None = None
51
+
52
+ def as_request_resource(self) -> KafkaSourceRequest:
53
+ return KafkaSourceRequest.model_validate(self.dump(), extra="ignore")
@@ -0,0 +1,36 @@
1
+ from typing import Literal
2
+
3
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
4
+ BaseModelObject,
5
+ ResponseResource,
6
+ )
7
+
8
+ from ._auth import BasicAuthenticationRequest, BasicAuthenticationResponse
9
+ from ._base import SourceRequestDefinition, SourceResponseDefinition
10
+ from ._certificate import AuthCertificateRequest, CACertificateRequest, CertificateResponse
11
+
12
+
13
+ class MQTTSource(BaseModelObject):
14
+ type: Literal["mqtt5", "mqtt3"]
15
+ host: str
16
+ port: int | None = None
17
+ use_tls: bool | None = None
18
+
19
+
20
+ class MQTTSourceRequest(MQTTSource, SourceRequestDefinition):
21
+ authentication: BasicAuthenticationRequest | None = None
22
+ ca_certificate: CACertificateRequest | None = None
23
+ auth_certificate: AuthCertificateRequest | None = None
24
+
25
+
26
+ class MQTTSourceResponse(
27
+ SourceResponseDefinition,
28
+ MQTTSource,
29
+ ResponseResource[MQTTSourceRequest],
30
+ ):
31
+ authentication: BasicAuthenticationResponse | None = None
32
+ ca_certificate: CertificateResponse | None = None
33
+ auth_certificate: CertificateResponse | None = None
34
+
35
+ def as_request_resource(self) -> MQTTSourceRequest:
36
+ return MQTTSourceRequest.model_validate(self.dump(), extra="ignore")
@@ -0,0 +1,49 @@
1
+ from typing import Literal
2
+
3
+ from pydantic import Field
4
+
5
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
6
+ BaseModelObject,
7
+ ResponseResource,
8
+ )
9
+
10
+ from ._auth import (
11
+ BasicAuthenticationRequest,
12
+ BasicAuthenticationResponse,
13
+ ClientCredentialAuthenticationRequest,
14
+ ClientCredentialAuthenticationResponse,
15
+ HTTPBasicAuthenticationRequest,
16
+ HTTPBasicAuthenticationResponse,
17
+ )
18
+ from ._base import SourceRequestDefinition, SourceResponseDefinition
19
+ from ._certificate import AuthCertificateRequest, CACertificateRequest, CertificateResponse
20
+
21
+
22
+ class RESTSource(BaseModelObject):
23
+ type: Literal["rest"] = "rest"
24
+ host: str
25
+ port: int | None = None
26
+
27
+
28
+ class RESTSourceRequest(RESTSource, SourceRequestDefinition):
29
+ scheme: Literal["https", "http"] | None = None
30
+ authentication: (
31
+ BasicAuthenticationRequest | HTTPBasicAuthenticationRequest | ClientCredentialAuthenticationRequest | None
32
+ ) = Field(None, discriminator="type")
33
+ ca_certificate: CACertificateRequest | None = None
34
+ auth_certificate: AuthCertificateRequest | None = None
35
+
36
+
37
+ class RESTSourceResponse(
38
+ SourceResponseDefinition,
39
+ RESTSource,
40
+ ResponseResource[RESTSourceRequest],
41
+ ):
42
+ authentication: (
43
+ BasicAuthenticationResponse | HTTPBasicAuthenticationResponse | ClientCredentialAuthenticationResponse | None
44
+ ) = Field(None, discriminator="type")
45
+ ca_certificate: CertificateResponse | None = None
46
+ auth_certificate: CertificateResponse | None = None
47
+
48
+ def as_request_resource(self) -> RESTSourceRequest:
49
+ return RESTSourceRequest.model_validate(self.dump(), extra="ignore")
@@ -42,3 +42,11 @@ class NameId(Identifier):
42
42
 
43
43
  def __str__(self) -> str:
44
44
  return f"name='{self.name}'"
45
+
46
+
47
+ class WorkflowVersionId(Identifier):
48
+ workflow_external_id: str
49
+ version: str
50
+
51
+ def __str__(self) -> str:
52
+ return f"workflowExternalId='{self.workflow_external_id}', version='{self.version}'"
@@ -0,0 +1,27 @@
1
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
2
+ BaseModelObject,
3
+ RequestResource,
4
+ ResponseResource,
5
+ )
6
+
7
+ from .identifiers import ExternalId
8
+
9
+
10
+ class Label(BaseModelObject):
11
+ external_id: str
12
+ name: str
13
+ description: str | None = None
14
+ data_set_id: int | None = None
15
+
16
+ def as_id(self) -> ExternalId:
17
+ return ExternalId(external_id=self.external_id)
18
+
19
+
20
+ class LabelRequest(Label, RequestResource): ...
21
+
22
+
23
+ class LabelResponse(Label, ResponseResource[LabelRequest]):
24
+ created_time: int
25
+
26
+ def as_request_resource(self) -> LabelRequest:
27
+ return LabelRequest.model_validate(self.dump(), extra="ignore")
@@ -28,8 +28,9 @@ class RAWDatabase(RequestResource, Identifier, ResponseResource["RAWDatabase"]):
28
28
 
29
29
 
30
30
  class RAWTable(RequestResource, Identifier, ResponseResource["RAWTable"]):
31
- # This is a query parameter, so we exclude it from serialization
32
- db_name: str = Field(exclude=True)
31
+ # This is a query parameter, so we exclude it from serialization.
32
+ # Default to empty string to allow parsing from API responses (which don't include db_name).
33
+ db_name: str = Field(default="", exclude=True)
33
34
  name: str
34
35
 
35
36
  def as_id(self) -> Self:
@@ -0,0 +1,24 @@
1
+ from cognite_toolkit._cdf_tk.client.data_classes.base import (
2
+ BaseModelObject,
3
+ RequestResource,
4
+ ResponseResource,
5
+ )
6
+
7
+ from .identifiers import NameId
8
+
9
+
10
+ class SecurityCategory(BaseModelObject):
11
+ name: str
12
+
13
+ def as_id(self) -> NameId:
14
+ return NameId(name=self.name)
15
+
16
+
17
+ class SecurityCategoryRequest(SecurityCategory, RequestResource): ...
18
+
19
+
20
+ class SecurityCategoryResponse(SecurityCategory, ResponseResource[SecurityCategoryRequest]):
21
+ id: int
22
+
23
+ def as_request_resource(self) -> SecurityCategoryRequest:
24
+ return SecurityCategoryRequest.model_validate(self.dump(), extra="ignore")