@loxtep/sdk 0.9.31 → 0.9.33
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.
- package/CHANGELOG.md +23 -0
- package/README.md +3 -1
- package/dist/cli/commands/triggers-cmd.d.ts +5 -0
- package/dist/cli/commands/triggers-cmd.d.ts.map +1 -1
- package/dist/cli/commands/triggers-cmd.js +16 -0
- package/dist/cli/commands/triggers-cmd.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +4 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +9 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/client/instances-types.d.ts +0 -1
- package/dist/client/instances-types.d.ts.map +1 -1
- package/dist/client/triggers.d.ts +5 -0
- package/dist/client/triggers.d.ts.map +1 -1
- package/dist/client/triggers.js +10 -0
- package/dist/client/triggers.js.map +1 -1
- package/dist/lib/entity-json-schemas/types.d.ts +9 -0
- package/dist/lib/entity-json-schemas/types.d.ts.map +1 -1
- package/dist/lib/entity-json-schemas/types.js +14 -0
- package/dist/lib/entity-json-schemas/types.js.map +1 -1
- package/dist/lib/workspace-lint.d.ts +7 -0
- package/dist/lib/workspace-lint.d.ts.map +1 -1
- package/dist/lib/workspace-lint.js +68 -25
- package/dist/lib/workspace-lint.js.map +1 -1
- package/package.json +2 -1
- package/schemas/entity-json-schemas/SCHEMA_SYNC.md +10 -11
- package/schemas/entity-json-schemas/SOURCE.json +24 -0
- package/schemas/entity-json-schemas/agent.json +97 -0
- package/schemas/entity-json-schemas/approval.json +92 -0
- package/schemas/entity-json-schemas/connection.json +92 -4
- package/schemas/entity-json-schemas/connector.json +2 -0
- package/schemas/entity-json-schemas/container.json +1 -1
- package/schemas/entity-json-schemas/contract.json +10 -0
- package/schemas/entity-json-schemas/data-product.json +18 -1
- package/schemas/entity-json-schemas/domain.json +15 -0
- package/schemas/entity-json-schemas/export.json +26 -0
- package/schemas/entity-json-schemas/odps-product.json +1 -1
- package/schemas/entity-json-schemas/projection.json +94 -0
- package/schemas/entity-json-schemas/quality-rule.json +10 -0
- package/schemas/entity-json-schemas/schema.json +10 -0
- package/schemas/entity-json-schemas/transformation.json +11 -3
- package/schemas/entity-json-schemas/validation.json +8 -2
- package/schemas/entity-json-schemas/workflow.json +58 -3
|
@@ -25,6 +25,16 @@
|
|
|
25
25
|
"format": "uuid",
|
|
26
26
|
"description": "Organization that owns this contract"
|
|
27
27
|
},
|
|
28
|
+
"project_id": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"format": "uuid",
|
|
31
|
+
"description": "Project that contains this contract"
|
|
32
|
+
},
|
|
33
|
+
"workflow_id": {
|
|
34
|
+
"type": ["string", "null"],
|
|
35
|
+
"format": "uuid",
|
|
36
|
+
"description": "Workflow this contract belongs to when saved in a workflow bundle"
|
|
37
|
+
},
|
|
28
38
|
"data_product_id": {
|
|
29
39
|
"type": "string",
|
|
30
40
|
"format": "uuid",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://loxtep.io/schemas/entity/data-product.json",
|
|
4
4
|
"title": "Data Product Entity",
|
|
5
|
-
"description": "JSON Schema for Data Product entity in customer workspace (Studio / S3 graph). Flow-graph fields (workflow_id, upstream_entity_id, etc.) describe placement in the workflow canvas. The canonical interoperable catalog and API representation is ODPS v4.1 (Open Data Products Standard): include `odps_document` aligned with https://opendataproducts.org/v4.1/schema/odps.json — see `odps-product.json`
|
|
5
|
+
"description": "JSON Schema for Data Product entity in customer workspace (Studio / S3 graph). Flow-graph fields (workflow_id, upstream_entity_id, etc.) describe placement in the workflow canvas. The canonical interoperable catalog and API representation is ODPS v4.1 (Open Data Products Standard): include `odps_document` aligned with https://opendataproducts.org/v4.1/schema/odps.json — see `odps-product.json` and .kiro/specs/odps-data-product-standard in the Loxtep repo.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"data_product_id",
|
|
@@ -24,6 +24,16 @@
|
|
|
24
24
|
"format": "uuid",
|
|
25
25
|
"description": "Organization that owns this data product"
|
|
26
26
|
},
|
|
27
|
+
"project_id": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"format": "uuid",
|
|
30
|
+
"description": "Project that contains this data product"
|
|
31
|
+
},
|
|
32
|
+
"kind": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": ["source", "consumer"],
|
|
35
|
+
"description": "Data product role in the flow (source or consumer)"
|
|
36
|
+
},
|
|
27
37
|
"workflow_id": {
|
|
28
38
|
"type": "string",
|
|
29
39
|
"format": "uuid",
|
|
@@ -152,6 +162,13 @@
|
|
|
152
162
|
"format": "date-time",
|
|
153
163
|
"description": "ISO 8601 timestamp when data product was deleted (soft delete)"
|
|
154
164
|
},
|
|
165
|
+
"schema": {
|
|
166
|
+
"description": "Product schema stored on the data product (object or JSON string). Read by medallion, metrics, and semantic bootstrap as dp.schema.",
|
|
167
|
+
"oneOf": [
|
|
168
|
+
{ "type": "object", "additionalProperties": true },
|
|
169
|
+
{ "type": "string", "minLength": 1 }
|
|
170
|
+
]
|
|
171
|
+
},
|
|
155
172
|
"odps_document": {
|
|
156
173
|
"description": "Canonical ODPS v4.1 document (`{ product: ... }`). Preferred for platform catalog, governance, and ecosystem interoperability. Validated in the dataproducts API; Loxtep-specific fields under product.custom.loxtep.",
|
|
157
174
|
"allOf": [
|
|
@@ -22,6 +22,11 @@
|
|
|
22
22
|
"format": "uuid",
|
|
23
23
|
"description": "Organization that owns this domain"
|
|
24
24
|
},
|
|
25
|
+
"project_id": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"format": "uuid",
|
|
28
|
+
"description": "Project that contains this domain (set when a bundle save writes the file)"
|
|
29
|
+
},
|
|
25
30
|
"name": {
|
|
26
31
|
"type": "string",
|
|
27
32
|
"minLength": 1,
|
|
@@ -64,6 +69,16 @@
|
|
|
64
69
|
"format": "date-time",
|
|
65
70
|
"description": "ISO 8601 timestamp when domain was last updated"
|
|
66
71
|
},
|
|
72
|
+
"created_by": {
|
|
73
|
+
"type": ["string", "null"],
|
|
74
|
+
"format": "uuid",
|
|
75
|
+
"description": "User ID who created the domain"
|
|
76
|
+
},
|
|
77
|
+
"updated_by": {
|
|
78
|
+
"type": ["string", "null"],
|
|
79
|
+
"format": "uuid",
|
|
80
|
+
"description": "User ID who last updated the domain"
|
|
81
|
+
},
|
|
67
82
|
"deleted_at": {
|
|
68
83
|
"type": ["string", "null"],
|
|
69
84
|
"format": "date-time",
|
|
@@ -26,11 +26,37 @@
|
|
|
26
26
|
"format": "uuid",
|
|
27
27
|
"description": "Organization that owns this export"
|
|
28
28
|
},
|
|
29
|
+
"project_id": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"format": "uuid",
|
|
32
|
+
"description": "Project that contains this export"
|
|
33
|
+
},
|
|
34
|
+
"workflow_id": {
|
|
35
|
+
"type": ["string", "null"],
|
|
36
|
+
"format": "uuid",
|
|
37
|
+
"description": "Workflow this export belongs to when saved in a workflow bundle"
|
|
38
|
+
},
|
|
29
39
|
"data_product_id": {
|
|
30
40
|
"type": "string",
|
|
31
41
|
"format": "uuid",
|
|
32
42
|
"description": "Reference to the data product this export applies to"
|
|
33
43
|
},
|
|
44
|
+
"upstream_entity_id": {
|
|
45
|
+
"type": ["string", "null"],
|
|
46
|
+
"format": "uuid",
|
|
47
|
+
"description": "Upstream canvas node this export is wired from"
|
|
48
|
+
},
|
|
49
|
+
"upstream_entity_type": {
|
|
50
|
+
"type": ["string", "null"],
|
|
51
|
+
"enum": [
|
|
52
|
+
"connections",
|
|
53
|
+
"transformations",
|
|
54
|
+
"validations",
|
|
55
|
+
"data-products",
|
|
56
|
+
null
|
|
57
|
+
],
|
|
58
|
+
"description": "Entity type of upstream_entity_id"
|
|
59
|
+
},
|
|
34
60
|
"name": {
|
|
35
61
|
"type": "string",
|
|
36
62
|
"minLength": 1,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"$id": "https://loxtep.io/schemas/entity/odps-product.json",
|
|
4
4
|
"title": "ODPS v4.1 Data Product Document",
|
|
5
5
|
"x-canonical-json-schema": "https://opendataproducts.org/v4.1/schema/odps.json",
|
|
6
|
-
"description": "Open Data Products Standard (ODPS) v4.1 root document (`product.*`). Authoritative JSON Schema: https://opendataproducts.org/v4.1/schema/odps.json . Platform-specific fields live under `product.custom.loxtep` (medallion, storage, ingestion, organization_id, domain_id, project_id, workflow_id, etc.). For strict full-schema validation in toolchains that resolve remote $ref, compose with allOf + $ref to x-canonical-json-schema (requires network or bundled copy).",
|
|
6
|
+
"description": "Open Data Products Standard (ODPS) v4.1 root document (`product.*`). Authoritative JSON Schema: https://opendataproducts.org/v4.1/schema/odps.json . Loxtep platform types and mapping: platform-backend/_core/src/types/odps/ and .kiro/specs/odps-data-product-standard. Platform-specific fields live under `product.custom.loxtep` (medallion, storage, ingestion, organization_id, domain_id, project_id, workflow_id, etc.). For strict full-schema validation in toolchains that resolve remote $ref, compose with allOf + $ref to x-canonical-json-schema (requires network or bundled copy).",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"required": ["product"],
|
|
9
9
|
"additionalProperties": false,
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://loxtep.io/schemas/entity/projection.json",
|
|
4
|
+
"title": "Projection Entity",
|
|
5
|
+
"description": "JSON Schema for Projection entity in customer workspace. Projections are thin workflow nodes that delegate field mapping to TransformationEngine.transformBatch, connecting source Data_Product output ports to Entity_Store input ports.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"projection_id",
|
|
9
|
+
"organization_id",
|
|
10
|
+
"workflow_id",
|
|
11
|
+
"entity_definition_id",
|
|
12
|
+
"projection_spec_id",
|
|
13
|
+
"status",
|
|
14
|
+
"created_at",
|
|
15
|
+
"updated_at"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"projection_id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"format": "uuid",
|
|
21
|
+
"description": "Unique identifier for the projection workflow node"
|
|
22
|
+
},
|
|
23
|
+
"organization_id": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"format": "uuid",
|
|
26
|
+
"description": "Organization that owns this projection"
|
|
27
|
+
},
|
|
28
|
+
"workflow_id": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"format": "uuid",
|
|
31
|
+
"description": "Workflow this projection node belongs to"
|
|
32
|
+
},
|
|
33
|
+
"entity_definition_id": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"format": "uuid",
|
|
36
|
+
"description": "Target Entity_Definition this projection materializes"
|
|
37
|
+
},
|
|
38
|
+
"projection_spec_id": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"format": "uuid",
|
|
41
|
+
"description": "Projection_Spec that defines the field mappings"
|
|
42
|
+
},
|
|
43
|
+
"name": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"minLength": 1,
|
|
46
|
+
"description": "Display name of the projection node (written by ProjectionWorkflowNode.activate)"
|
|
47
|
+
},
|
|
48
|
+
"source_data_product_ids": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"format": "uuid"
|
|
53
|
+
},
|
|
54
|
+
"minItems": 1,
|
|
55
|
+
"description": "Source Data_Product IDs whose output ports feed this projection"
|
|
56
|
+
},
|
|
57
|
+
"status": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"enum": ["active", "inactive", "draft"],
|
|
60
|
+
"description": "Current status of the projection node"
|
|
61
|
+
},
|
|
62
|
+
"upstream_entity_id": {
|
|
63
|
+
"type": ["string", "null"],
|
|
64
|
+
"format": "uuid",
|
|
65
|
+
"description": "Upstream node in the workflow graph (typically a Data_Product output port)"
|
|
66
|
+
},
|
|
67
|
+
"upstream_entity_type": {
|
|
68
|
+
"type": ["string", "null"],
|
|
69
|
+
"description": "Entity type of the upstream node"
|
|
70
|
+
},
|
|
71
|
+
"metadata": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": true,
|
|
74
|
+
"default": {},
|
|
75
|
+
"description": "Additional metadata for the projection node"
|
|
76
|
+
},
|
|
77
|
+
"created_at": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"format": "date-time",
|
|
80
|
+
"description": "ISO 8601 timestamp when projection node was created"
|
|
81
|
+
},
|
|
82
|
+
"updated_at": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"format": "date-time",
|
|
85
|
+
"description": "ISO 8601 timestamp when projection node was last updated"
|
|
86
|
+
},
|
|
87
|
+
"deleted_at": {
|
|
88
|
+
"type": ["string", "null"],
|
|
89
|
+
"format": "date-time",
|
|
90
|
+
"description": "ISO 8601 timestamp when projection node was deleted (soft delete)"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"additionalProperties": false
|
|
94
|
+
}
|
|
@@ -26,6 +26,16 @@
|
|
|
26
26
|
"format": "uuid",
|
|
27
27
|
"description": "Organization that owns this quality rule"
|
|
28
28
|
},
|
|
29
|
+
"project_id": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"format": "uuid",
|
|
32
|
+
"description": "Project that contains this quality rule"
|
|
33
|
+
},
|
|
34
|
+
"workflow_id": {
|
|
35
|
+
"type": ["string", "null"],
|
|
36
|
+
"format": "uuid",
|
|
37
|
+
"description": "Workflow this quality rule belongs to when saved in a workflow bundle"
|
|
38
|
+
},
|
|
29
39
|
"data_product_id": {
|
|
30
40
|
"type": ["string", "null"],
|
|
31
41
|
"format": "uuid",
|
|
@@ -27,6 +27,16 @@
|
|
|
27
27
|
"format": "uuid",
|
|
28
28
|
"description": "Organization that owns this schema"
|
|
29
29
|
},
|
|
30
|
+
"project_id": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"format": "uuid",
|
|
33
|
+
"description": "Project that contains this schema"
|
|
34
|
+
},
|
|
35
|
+
"workflow_id": {
|
|
36
|
+
"type": ["string", "null"],
|
|
37
|
+
"format": "uuid",
|
|
38
|
+
"description": "Workflow this schema belongs to when saved in a workflow bundle"
|
|
39
|
+
},
|
|
30
40
|
"data_product_id": {
|
|
31
41
|
"type": "string",
|
|
32
42
|
"format": "uuid",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"upstream_entity_id": {
|
|
40
40
|
"type": ["string", "null"],
|
|
41
41
|
"format": "uuid",
|
|
42
|
-
"description": "Reference to the upstream entity in the flow graph (connection or
|
|
42
|
+
"description": "Reference to the upstream entity in the flow graph (connection, previous transformation, or the Records data product Studio inserts after a REST trigger). Null only when this is the first transformation directly after the trigger connection."
|
|
43
43
|
},
|
|
44
44
|
"upstream_entity_type": {
|
|
45
45
|
"type": ["string", "null"],
|
|
46
|
-
"enum": ["connections", "transformations", null],
|
|
47
|
-
"description": "Entity type of the upstream entity (connections or
|
|
46
|
+
"enum": ["connections", "transformations", "data-products", null],
|
|
47
|
+
"description": "Entity type of the upstream entity (connections, transformations, or data-products)"
|
|
48
48
|
},
|
|
49
49
|
"name": {
|
|
50
50
|
"type": "string",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"drop_duplicates",
|
|
68
68
|
"flatten",
|
|
69
69
|
"explode_array",
|
|
70
|
+
"zip_arrays",
|
|
70
71
|
"array_to_column",
|
|
71
72
|
"capitalize",
|
|
72
73
|
"format_timestamp",
|
|
@@ -85,6 +86,7 @@
|
|
|
85
86
|
"batch",
|
|
86
87
|
"delay",
|
|
87
88
|
"split",
|
|
89
|
+
"route",
|
|
88
90
|
"execute_code_function",
|
|
89
91
|
"crypto",
|
|
90
92
|
"formatter",
|
|
@@ -112,6 +114,12 @@
|
|
|
112
114
|
{
|
|
113
115
|
"field": "name",
|
|
114
116
|
"case": "upper"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"source_path": "daily",
|
|
120
|
+
"index_field": "time",
|
|
121
|
+
"index_as": "obs_date",
|
|
122
|
+
"carry_fields": ["latitude", "longitude", "elevation", "timezone"]
|
|
115
123
|
}
|
|
116
124
|
]
|
|
117
125
|
},
|
|
@@ -40,11 +40,17 @@
|
|
|
40
40
|
"upstream_entity_id": {
|
|
41
41
|
"type": ["string", "null"],
|
|
42
42
|
"format": "uuid",
|
|
43
|
-
"description": "Reference to the upstream entity this validation applies to (connection, transformation, or data product)"
|
|
43
|
+
"description": "Reference to the upstream entity this validation applies to (connection, transformation, validation, or data product)"
|
|
44
44
|
},
|
|
45
45
|
"upstream_entity_type": {
|
|
46
46
|
"type": ["string", "null"],
|
|
47
|
-
"enum": [
|
|
47
|
+
"enum": [
|
|
48
|
+
"connections",
|
|
49
|
+
"transformations",
|
|
50
|
+
"validations",
|
|
51
|
+
"data-products",
|
|
52
|
+
null
|
|
53
|
+
],
|
|
48
54
|
"description": "Entity type of the upstream entity"
|
|
49
55
|
},
|
|
50
56
|
"name": {
|
|
@@ -69,14 +69,19 @@
|
|
|
69
69
|
"type": "string",
|
|
70
70
|
"description": "Unique identifier for the segment"
|
|
71
71
|
},
|
|
72
|
-
"name": {
|
|
72
|
+
"name": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"description": "Display name"
|
|
75
|
+
},
|
|
73
76
|
"description": {
|
|
74
77
|
"type": ["string", "null"],
|
|
75
78
|
"description": "Optional description"
|
|
76
79
|
},
|
|
77
80
|
"node_ids": {
|
|
78
81
|
"type": "array",
|
|
79
|
-
"items": {
|
|
82
|
+
"items": {
|
|
83
|
+
"type": "string"
|
|
84
|
+
},
|
|
80
85
|
"description": "Entity IDs of nodes in this segment"
|
|
81
86
|
},
|
|
82
87
|
"color": {
|
|
@@ -103,6 +108,37 @@
|
|
|
103
108
|
"type": ["string", "null"],
|
|
104
109
|
"format": "uuid",
|
|
105
110
|
"description": "Connector ID for connector-driven triggers"
|
|
111
|
+
},
|
|
112
|
+
"query_trigger": {
|
|
113
|
+
"type": ["object", "null"],
|
|
114
|
+
"description": "D14 (docs/system-spec/11-delivery-layer-design.md): a saved query against a data product, run on a schedule or on demand, targeting a data-products node (materialize) or an outbound connections node (deliver) chosen separately at build time. Not a subsystem \u2014 a trigger type, like event/schedule/connector above.",
|
|
115
|
+
"properties": {
|
|
116
|
+
"data_product_id": {
|
|
117
|
+
"type": "string",
|
|
118
|
+
"format": "uuid",
|
|
119
|
+
"description": "An existing data product \u2014 never a raw table."
|
|
120
|
+
},
|
|
121
|
+
"query": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"minLength": 1,
|
|
124
|
+
"description": "The saved SQL query run against data_product_id."
|
|
125
|
+
},
|
|
126
|
+
"schedule": {
|
|
127
|
+
"type": ["string", "null"],
|
|
128
|
+
"description": "Cron or interval; omit for on-demand (run_trigger / MCP-invoked)."
|
|
129
|
+
},
|
|
130
|
+
"primary_key": {
|
|
131
|
+
"type": "array",
|
|
132
|
+
"description": "Source columns concatenated into lx__id before queue write (business identity).",
|
|
133
|
+
"items": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"minLength": 1
|
|
136
|
+
},
|
|
137
|
+
"minItems": 1
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"required": ["data_product_id", "query", "primary_key"],
|
|
141
|
+
"additionalProperties": false
|
|
106
142
|
}
|
|
107
143
|
},
|
|
108
144
|
"additionalProperties": false
|
|
@@ -119,6 +155,20 @@
|
|
|
119
155
|
"type": ["integer", "null"],
|
|
120
156
|
"minimum": 1,
|
|
121
157
|
"description": "Number of events to process per batch"
|
|
158
|
+
},
|
|
159
|
+
"activation": {
|
|
160
|
+
"type": ["string", "null"],
|
|
161
|
+
"enum": ["schedule", "event", "request", null],
|
|
162
|
+
"description": "Explicit activation designation for a delivery flow's head (D7, docs/system-spec/11-delivery-layer-design.md). 'request' marks a consumer-initiated delivery flow: no schedule, no event subscription \u2014 the flow is activated by an inbound request against a protocol-adapter registration (route/listener + policy binding) rather than a queue-consumer bot. Distinguishes a deliberately request-activated flow from one whose trigger was simply never configured."
|
|
163
|
+
},
|
|
164
|
+
"data_product_id": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"format": "uuid",
|
|
167
|
+
"description": "Data product this delivery flow serves. Required in practice when activation is 'request' (protocol-adapter registration) or when a schedule is set (scheduled consumption). Optional at schema level so existing schedule-free event/queue flows remain valid."
|
|
168
|
+
},
|
|
169
|
+
"connector_type": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"description": "Protocol/connector type for a request-activated delivery flow (e.g. sql-query). Codegen falls back to 'unknown' when omitted."
|
|
122
172
|
}
|
|
123
173
|
},
|
|
124
174
|
"additionalProperties": false
|
|
@@ -148,7 +198,7 @@
|
|
|
148
198
|
},
|
|
149
199
|
"status": {
|
|
150
200
|
"type": "string",
|
|
151
|
-
"enum": ["active", "paused", "error", "pending", "inactive"],
|
|
201
|
+
"enum": ["active", "paused", "error", "pending", "inactive", "archived"],
|
|
152
202
|
"description": "Workflow status"
|
|
153
203
|
},
|
|
154
204
|
"metrics": {
|
|
@@ -187,6 +237,11 @@
|
|
|
187
237
|
"type": ["string", "null"],
|
|
188
238
|
"format": "date-time",
|
|
189
239
|
"description": "ISO 8601 timestamp when workflow was deleted (soft delete)"
|
|
240
|
+
},
|
|
241
|
+
"archived_at": {
|
|
242
|
+
"type": ["string", "null"],
|
|
243
|
+
"format": "date-time",
|
|
244
|
+
"description": "ISO 8601 timestamp when workflow was archived (catalog preserved, runtime bots retired)"
|
|
190
245
|
}
|
|
191
246
|
},
|
|
192
247
|
"additionalProperties": false
|