@malloy-publisher/app 0.0.204 → 0.0.206
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/dist/api-doc.yaml +494 -397
- package/dist/assets/{EnvironmentPage-CX06cjOF.js → EnvironmentPage-BYwBeC2F.js} +1 -1
- package/dist/assets/HomePage-ivu4vdpj.js +1 -0
- package/dist/assets/{MainPage-nUJ9YatG.js → MainPage-B2DnHEDU.js} +2 -2
- package/dist/assets/MaterializationsPage-BZEuwF9P.js +1 -0
- package/dist/assets/ModelPage-Dpu3bfPg.js +1 -0
- package/dist/assets/{PackagePage-BaEVdEAG.js → PackagePage-B8PwcRHt.js} +1 -1
- package/dist/assets/{RouteError-BShQjZio.js → RouteError-BhbywAeC.js} +1 -1
- package/dist/assets/{WorkbookPage-CBn6ZjJW.js → WorkbookPage-C-JXsJG0.js} +1 -1
- package/dist/assets/{core-DECXYL4E.es-OaRfXwuQ.js → core-pPlPr7jK.es-CNEOlxKB.js} +1 -1
- package/dist/assets/{index-BLfPC1gy.js → index-BHEm8Egc.js} +1 -1
- package/dist/assets/{index-Dy3YhAZQ.js → index-BsvDrV14.js} +1 -1
- package/dist/assets/{index-DqiJ0bWp.js → index-ChR1fKR2.js} +134 -134
- package/dist/assets/{index.umd-DAN9K8yC.js → index.umd-BVLPYNuj.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +2 -2
- package/dist/assets/HomePage-CNFt_eUU.js +0 -1
- package/dist/assets/MaterializationsPage-B5goxVXW.js +0 -1
- package/dist/assets/ModelPage-Ba7Xh4lL.js +0 -1
package/dist/api-doc.yaml
CHANGED
|
@@ -38,26 +38,29 @@ tags:
|
|
|
38
38
|
- name: publisher
|
|
39
39
|
description: Publisher status and health check operations
|
|
40
40
|
- name: environments
|
|
41
|
-
description:
|
|
41
|
+
description:
|
|
42
|
+
Environment lifecycle management including creation, configuration,
|
|
42
43
|
and deletion of data modeling environments
|
|
43
44
|
- name: connections
|
|
44
|
-
description:
|
|
45
|
+
description:
|
|
46
|
+
Database connection management for secure data source configuration
|
|
45
47
|
and access
|
|
46
48
|
- name: packages
|
|
47
|
-
description:
|
|
49
|
+
description:
|
|
50
|
+
Package management for Malloy data models, including versioning and
|
|
48
51
|
distribution
|
|
49
52
|
- name: models
|
|
50
53
|
description: Malloy model access and compilation operations
|
|
51
54
|
- name: notebooks
|
|
52
55
|
description: Malloy notebook access and execution operations
|
|
56
|
+
- name: pages
|
|
57
|
+
description: Static HTML pages (in-package data apps)
|
|
53
58
|
- name: databases
|
|
54
59
|
description: Embedded database management and access
|
|
55
60
|
- name: watch-mode
|
|
56
61
|
description: Real-time file watching for development workflows
|
|
57
62
|
- name: materializations
|
|
58
63
|
description: Package-level materializations for persisting Malloy sources
|
|
59
|
-
- name: manifests
|
|
60
|
-
description: Build manifest management for tracking materialized source tables
|
|
61
64
|
|
|
62
65
|
paths:
|
|
63
66
|
/status:
|
|
@@ -618,55 +621,7 @@ paths:
|
|
|
618
621
|
"503":
|
|
619
622
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
620
623
|
|
|
621
|
-
# TODO: Remove this endpoint.
|
|
622
624
|
/environments/{environmentName}/connections/{connectionName}/sqlSource:
|
|
623
|
-
get:
|
|
624
|
-
tags:
|
|
625
|
-
- connections
|
|
626
|
-
operationId: get-sqlsource
|
|
627
|
-
deprecated: true
|
|
628
|
-
summary: Get SQL source (deprecated)
|
|
629
|
-
description: |
|
|
630
|
-
**DEPRECATED**: This endpoint is deprecated and may be removed in future versions.
|
|
631
|
-
Use the POST version instead for better security and functionality.
|
|
632
|
-
|
|
633
|
-
Creates a Malloy source from a SQL statement using the specified connection.
|
|
634
|
-
The SQL statement is executed to generate a source definition that can be used in Malloy models.
|
|
635
|
-
parameters:
|
|
636
|
-
- name: environmentName
|
|
637
|
-
in: path
|
|
638
|
-
description: Name of the environment
|
|
639
|
-
required: true
|
|
640
|
-
schema:
|
|
641
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
642
|
-
- name: connectionName
|
|
643
|
-
in: path
|
|
644
|
-
description: Name of the connection
|
|
645
|
-
required: true
|
|
646
|
-
schema:
|
|
647
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
648
|
-
- name: sqlStatement
|
|
649
|
-
in: query
|
|
650
|
-
description: SQL statement
|
|
651
|
-
required: false
|
|
652
|
-
schema:
|
|
653
|
-
type: string
|
|
654
|
-
responses:
|
|
655
|
-
"200":
|
|
656
|
-
description: SQL source information
|
|
657
|
-
content:
|
|
658
|
-
application/json:
|
|
659
|
-
schema:
|
|
660
|
-
$ref: "#/components/schemas/SqlSource"
|
|
661
|
-
"401":
|
|
662
|
-
$ref: "#/components/responses/Unauthorized"
|
|
663
|
-
"404":
|
|
664
|
-
$ref: "#/components/responses/NotFound"
|
|
665
|
-
"500":
|
|
666
|
-
$ref: "#/components/responses/InternalServerError"
|
|
667
|
-
"503":
|
|
668
|
-
$ref: "#/components/responses/ServiceUnavailable"
|
|
669
|
-
|
|
670
625
|
post:
|
|
671
626
|
tags:
|
|
672
627
|
- connections
|
|
@@ -743,13 +698,6 @@ paths:
|
|
|
743
698
|
required: true
|
|
744
699
|
schema:
|
|
745
700
|
$ref: "#/components/schemas/IdentifierPattern"
|
|
746
|
-
- name: options
|
|
747
|
-
in: query
|
|
748
|
-
description: Options (deprecated; pass in body instead)
|
|
749
|
-
deprecated: true
|
|
750
|
-
required: false
|
|
751
|
-
schema:
|
|
752
|
-
type: string
|
|
753
701
|
requestBody:
|
|
754
702
|
description: SQL statement to execute
|
|
755
703
|
required: true
|
|
@@ -831,55 +779,6 @@ paths:
|
|
|
831
779
|
"503":
|
|
832
780
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
833
781
|
|
|
834
|
-
# TODO: Remove this endpoint.
|
|
835
|
-
/environments/{environmentName}/connections/{connectionName}/temporaryTable:
|
|
836
|
-
get:
|
|
837
|
-
tags:
|
|
838
|
-
- connections
|
|
839
|
-
operationId: get-temporarytable
|
|
840
|
-
deprecated: true
|
|
841
|
-
summary: Create temporary table (deprecated)
|
|
842
|
-
description: |
|
|
843
|
-
**DEPRECATED**: This endpoint is deprecated and may be removed in future versions.
|
|
844
|
-
Use the POST version instead for better security and functionality.
|
|
845
|
-
|
|
846
|
-
Creates a temporary table from a SQL statement using the specified connection.
|
|
847
|
-
Temporary tables are useful for storing intermediate results during complex queries.
|
|
848
|
-
parameters:
|
|
849
|
-
- name: environmentName
|
|
850
|
-
in: path
|
|
851
|
-
description: Name of the environment
|
|
852
|
-
required: true
|
|
853
|
-
schema:
|
|
854
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
855
|
-
- name: connectionName
|
|
856
|
-
in: path
|
|
857
|
-
description: Name of the connection
|
|
858
|
-
required: true
|
|
859
|
-
schema:
|
|
860
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
861
|
-
- name: sqlStatement
|
|
862
|
-
in: query
|
|
863
|
-
description: SQL statement
|
|
864
|
-
required: false
|
|
865
|
-
schema:
|
|
866
|
-
type: string
|
|
867
|
-
responses:
|
|
868
|
-
"200":
|
|
869
|
-
description: Temporary table information
|
|
870
|
-
content:
|
|
871
|
-
application/json:
|
|
872
|
-
schema:
|
|
873
|
-
$ref: "#/components/schemas/TemporaryTable"
|
|
874
|
-
"401":
|
|
875
|
-
$ref: "#/components/responses/Unauthorized"
|
|
876
|
-
"404":
|
|
877
|
-
$ref: "#/components/responses/NotFound"
|
|
878
|
-
"500":
|
|
879
|
-
$ref: "#/components/responses/InternalServerError"
|
|
880
|
-
"503":
|
|
881
|
-
$ref: "#/components/responses/ServiceUnavailable"
|
|
882
|
-
|
|
883
782
|
# NOTE: The GET …/connections/{connectionName}/queryData endpoint
|
|
884
783
|
# was removed alongside the operational-guards changes. Use the
|
|
885
784
|
# POST …/sqlQuery endpoint above instead — it accepts the SQL in
|
|
@@ -1064,60 +963,7 @@ paths:
|
|
|
1064
963
|
"503":
|
|
1065
964
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
1066
965
|
|
|
1067
|
-
# TODO: Remove the GET (deprecated) form once clients migrate.
|
|
1068
966
|
/environments/{environmentName}/packages/{packageName}/connections/{connectionName}/sqlSource:
|
|
1069
|
-
get:
|
|
1070
|
-
tags:
|
|
1071
|
-
- connections
|
|
1072
|
-
operationId: get-sqlsource-in-package
|
|
1073
|
-
deprecated: true
|
|
1074
|
-
summary: Get SQL source (per-package, deprecated)
|
|
1075
|
-
description: |
|
|
1076
|
-
**DEPRECATED**: Use the POST version instead.
|
|
1077
|
-
|
|
1078
|
-
Creates a Malloy source from a SQL statement using the specified
|
|
1079
|
-
connection, resolved in the context of the named package.
|
|
1080
|
-
parameters:
|
|
1081
|
-
- name: environmentName
|
|
1082
|
-
in: path
|
|
1083
|
-
description: Name of the environment
|
|
1084
|
-
required: true
|
|
1085
|
-
schema:
|
|
1086
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
1087
|
-
- name: packageName
|
|
1088
|
-
in: path
|
|
1089
|
-
description: Name of the package whose connection context to use
|
|
1090
|
-
required: true
|
|
1091
|
-
schema:
|
|
1092
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
1093
|
-
- name: connectionName
|
|
1094
|
-
in: path
|
|
1095
|
-
description: Name of the connection
|
|
1096
|
-
required: true
|
|
1097
|
-
schema:
|
|
1098
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
1099
|
-
- name: sqlStatement
|
|
1100
|
-
in: query
|
|
1101
|
-
description: SQL statement
|
|
1102
|
-
required: false
|
|
1103
|
-
schema:
|
|
1104
|
-
type: string
|
|
1105
|
-
responses:
|
|
1106
|
-
"200":
|
|
1107
|
-
description: SQL source information
|
|
1108
|
-
content:
|
|
1109
|
-
application/json:
|
|
1110
|
-
schema:
|
|
1111
|
-
$ref: "#/components/schemas/SqlSource"
|
|
1112
|
-
"401":
|
|
1113
|
-
$ref: "#/components/responses/Unauthorized"
|
|
1114
|
-
"404":
|
|
1115
|
-
$ref: "#/components/responses/NotFound"
|
|
1116
|
-
"500":
|
|
1117
|
-
$ref: "#/components/responses/InternalServerError"
|
|
1118
|
-
"503":
|
|
1119
|
-
$ref: "#/components/responses/ServiceUnavailable"
|
|
1120
|
-
|
|
1121
967
|
post:
|
|
1122
968
|
tags:
|
|
1123
969
|
- connections
|
|
@@ -1202,13 +1048,6 @@ paths:
|
|
|
1202
1048
|
required: true
|
|
1203
1049
|
schema:
|
|
1204
1050
|
$ref: "#/components/schemas/IdentifierPattern"
|
|
1205
|
-
- name: options
|
|
1206
|
-
in: query
|
|
1207
|
-
description: Options (deprecated; pass in body instead)
|
|
1208
|
-
deprecated: true
|
|
1209
|
-
required: false
|
|
1210
|
-
schema:
|
|
1211
|
-
type: string
|
|
1212
1051
|
requestBody:
|
|
1213
1052
|
description: SQL statement to execute
|
|
1214
1053
|
required: true
|
|
@@ -1296,60 +1135,6 @@ paths:
|
|
|
1296
1135
|
"503":
|
|
1297
1136
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
1298
1137
|
|
|
1299
|
-
# TODO: Remove this endpoint.
|
|
1300
|
-
/environments/{environmentName}/packages/{packageName}/connections/{connectionName}/temporaryTable:
|
|
1301
|
-
get:
|
|
1302
|
-
tags:
|
|
1303
|
-
- connections
|
|
1304
|
-
operationId: get-temporarytable-in-package
|
|
1305
|
-
deprecated: true
|
|
1306
|
-
summary: Create temporary table (per-package, deprecated)
|
|
1307
|
-
description: |
|
|
1308
|
-
**DEPRECATED**: Use the POST version instead.
|
|
1309
|
-
|
|
1310
|
-
Creates a temporary table from a SQL statement using the specified
|
|
1311
|
-
connection, resolved in the context of the named package.
|
|
1312
|
-
parameters:
|
|
1313
|
-
- name: environmentName
|
|
1314
|
-
in: path
|
|
1315
|
-
description: Name of the environment
|
|
1316
|
-
required: true
|
|
1317
|
-
schema:
|
|
1318
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
1319
|
-
- name: packageName
|
|
1320
|
-
in: path
|
|
1321
|
-
description: Name of the package whose connection context to use
|
|
1322
|
-
required: true
|
|
1323
|
-
schema:
|
|
1324
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
1325
|
-
- name: connectionName
|
|
1326
|
-
in: path
|
|
1327
|
-
description: Name of the connection
|
|
1328
|
-
required: true
|
|
1329
|
-
schema:
|
|
1330
|
-
$ref: "#/components/schemas/IdentifierPattern"
|
|
1331
|
-
- name: sqlStatement
|
|
1332
|
-
in: query
|
|
1333
|
-
description: SQL statement
|
|
1334
|
-
required: false
|
|
1335
|
-
schema:
|
|
1336
|
-
type: string
|
|
1337
|
-
responses:
|
|
1338
|
-
"200":
|
|
1339
|
-
description: Temporary table information
|
|
1340
|
-
content:
|
|
1341
|
-
application/json:
|
|
1342
|
-
schema:
|
|
1343
|
-
$ref: "#/components/schemas/TemporaryTable"
|
|
1344
|
-
"401":
|
|
1345
|
-
$ref: "#/components/responses/Unauthorized"
|
|
1346
|
-
"404":
|
|
1347
|
-
$ref: "#/components/responses/NotFound"
|
|
1348
|
-
"500":
|
|
1349
|
-
$ref: "#/components/responses/InternalServerError"
|
|
1350
|
-
"503":
|
|
1351
|
-
$ref: "#/components/responses/ServiceUnavailable"
|
|
1352
|
-
|
|
1353
1138
|
# NOTE: The GET …/packages/{packageName}/connections/{connectionName}/queryData
|
|
1354
1139
|
# endpoint was removed alongside the operational-guards changes.
|
|
1355
1140
|
# Use the matching POST …/sqlQuery endpoint instead.
|
|
@@ -1404,16 +1189,6 @@ paths:
|
|
|
1404
1189
|
required: true
|
|
1405
1190
|
schema:
|
|
1406
1191
|
$ref: "#/components/schemas/IdentifierPattern"
|
|
1407
|
-
- name: autoLoadManifest
|
|
1408
|
-
in: query
|
|
1409
|
-
description: |
|
|
1410
|
-
When true, automatically loads any existing build manifest
|
|
1411
|
-
for the package so materialized table references resolve immediately.
|
|
1412
|
-
Defaults to false.
|
|
1413
|
-
required: false
|
|
1414
|
-
schema:
|
|
1415
|
-
type: boolean
|
|
1416
|
-
default: false
|
|
1417
1192
|
requestBody:
|
|
1418
1193
|
required: true
|
|
1419
1194
|
content:
|
|
@@ -1427,6 +1202,8 @@ paths:
|
|
|
1427
1202
|
application/json:
|
|
1428
1203
|
schema:
|
|
1429
1204
|
$ref: "#/components/schemas/Package"
|
|
1205
|
+
"400":
|
|
1206
|
+
$ref: "#/components/responses/BadRequest"
|
|
1430
1207
|
"401":
|
|
1431
1208
|
$ref: "#/components/responses/Unauthorized"
|
|
1432
1209
|
"500":
|
|
@@ -1524,6 +1301,8 @@ paths:
|
|
|
1524
1301
|
application/json:
|
|
1525
1302
|
schema:
|
|
1526
1303
|
$ref: "#/components/schemas/Package"
|
|
1304
|
+
"400":
|
|
1305
|
+
$ref: "#/components/responses/BadRequest"
|
|
1527
1306
|
"401":
|
|
1528
1307
|
$ref: "#/components/responses/Unauthorized"
|
|
1529
1308
|
"404":
|
|
@@ -1763,7 +1542,8 @@ paths:
|
|
|
1763
1542
|
type: string
|
|
1764
1543
|
- name: path
|
|
1765
1544
|
in: path
|
|
1766
|
-
description:
|
|
1545
|
+
description:
|
|
1546
|
+
Path to the model within the package (used to resolve relative
|
|
1767
1547
|
imports)
|
|
1768
1548
|
required: true
|
|
1769
1549
|
schema:
|
|
@@ -2035,6 +1815,110 @@ paths:
|
|
|
2035
1815
|
"503":
|
|
2036
1816
|
$ref: "#/components/responses/ServiceUnavailable"
|
|
2037
1817
|
|
|
1818
|
+
/environments/{environmentName}/packages/{packageName}/pages:
|
|
1819
|
+
get:
|
|
1820
|
+
tags:
|
|
1821
|
+
- pages
|
|
1822
|
+
operationId: list-pages
|
|
1823
|
+
summary: List package pages
|
|
1824
|
+
description: |
|
|
1825
|
+
Retrieves a list of all static HTML pages (in-package data apps) within
|
|
1826
|
+
the specified package. Each page entry includes the relative path, the
|
|
1827
|
+
package name, a canonical resource URL, and the page title (extracted
|
|
1828
|
+
from the file's <title> tag, falling back to the path). Used by the
|
|
1829
|
+
Publisher SPA to surface a clickable "Pages" section on the package
|
|
1830
|
+
detail view, and by anyone who wants to discover in-package data apps
|
|
1831
|
+
programmatically without scraping the directory. Recursive depth is
|
|
1832
|
+
capped server-side to keep this cheap on large packages.
|
|
1833
|
+
parameters:
|
|
1834
|
+
- name: environmentName
|
|
1835
|
+
in: path
|
|
1836
|
+
description: Name of the environment
|
|
1837
|
+
required: true
|
|
1838
|
+
schema:
|
|
1839
|
+
$ref: "#/components/schemas/IdentifierPattern"
|
|
1840
|
+
- name: packageName
|
|
1841
|
+
in: path
|
|
1842
|
+
description: Name of the package
|
|
1843
|
+
required: true
|
|
1844
|
+
schema:
|
|
1845
|
+
$ref: "#/components/schemas/IdentifierPattern"
|
|
1846
|
+
responses:
|
|
1847
|
+
"200":
|
|
1848
|
+
description: A list of pages in the package
|
|
1849
|
+
content:
|
|
1850
|
+
application/json:
|
|
1851
|
+
schema:
|
|
1852
|
+
type: array
|
|
1853
|
+
items:
|
|
1854
|
+
$ref: "#/components/schemas/Page"
|
|
1855
|
+
"400":
|
|
1856
|
+
$ref: "#/components/responses/BadRequest"
|
|
1857
|
+
"401":
|
|
1858
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1859
|
+
"404":
|
|
1860
|
+
$ref: "#/components/responses/NotFound"
|
|
1861
|
+
"500":
|
|
1862
|
+
$ref: "#/components/responses/InternalServerError"
|
|
1863
|
+
"501":
|
|
1864
|
+
$ref: "#/components/responses/NotImplemented"
|
|
1865
|
+
"503":
|
|
1866
|
+
$ref: "#/components/responses/ServiceUnavailable"
|
|
1867
|
+
|
|
1868
|
+
/environments/{environmentName}/packages/{packageName}/events:
|
|
1869
|
+
get:
|
|
1870
|
+
tags:
|
|
1871
|
+
- watch-mode
|
|
1872
|
+
operationId: stream-package-events
|
|
1873
|
+
summary: Stream package change events (SSE)
|
|
1874
|
+
description: |
|
|
1875
|
+
Opens a Server-Sent Events (SSE) stream of file-change events for the
|
|
1876
|
+
package, used by in-package HTML data apps (via the publisher.js
|
|
1877
|
+
runtime) to live-reload when their sources are edited.
|
|
1878
|
+
|
|
1879
|
+
This is a long-lived `text/event-stream` connection, not a JSON
|
|
1880
|
+
endpoint, and is therefore not surfaced through the generated API
|
|
1881
|
+
clients — consume it with an `EventSource`. The stream emits:
|
|
1882
|
+
- `event: hello` (`data: connected`) once on connect.
|
|
1883
|
+
- `event: mode` (`data: enabled|disabled`) reporting whether watch
|
|
1884
|
+
mode is currently active for the environment. When `disabled`, no
|
|
1885
|
+
`changed` events will follow until watch mode is started.
|
|
1886
|
+
- `event: changed` (`data: changed`) each time a watched file in the
|
|
1887
|
+
package changes.
|
|
1888
|
+
- periodic `: heartbeat` comments to keep idle proxies from closing
|
|
1889
|
+
the connection.
|
|
1890
|
+
parameters:
|
|
1891
|
+
- name: environmentName
|
|
1892
|
+
in: path
|
|
1893
|
+
description: Name of the environment
|
|
1894
|
+
required: true
|
|
1895
|
+
schema:
|
|
1896
|
+
$ref: "#/components/schemas/IdentifierPattern"
|
|
1897
|
+
- name: packageName
|
|
1898
|
+
in: path
|
|
1899
|
+
description: Name of the package
|
|
1900
|
+
required: true
|
|
1901
|
+
schema:
|
|
1902
|
+
$ref: "#/components/schemas/IdentifierPattern"
|
|
1903
|
+
responses:
|
|
1904
|
+
"200":
|
|
1905
|
+
description: An open Server-Sent Events stream of change events
|
|
1906
|
+
content:
|
|
1907
|
+
text/event-stream:
|
|
1908
|
+
schema:
|
|
1909
|
+
type: string
|
|
1910
|
+
description: SSE event stream (see endpoint description for event types)
|
|
1911
|
+
"400":
|
|
1912
|
+
$ref: "#/components/responses/BadRequest"
|
|
1913
|
+
"401":
|
|
1914
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1915
|
+
"404":
|
|
1916
|
+
$ref: "#/components/responses/NotFound"
|
|
1917
|
+
"500":
|
|
1918
|
+
$ref: "#/components/responses/InternalServerError"
|
|
1919
|
+
"503":
|
|
1920
|
+
$ref: "#/components/responses/ServiceUnavailable"
|
|
1921
|
+
|
|
2038
1922
|
/connections/test:
|
|
2039
1923
|
post:
|
|
2040
1924
|
tags:
|
|
@@ -2145,10 +2029,13 @@ paths:
|
|
|
2145
2029
|
tags:
|
|
2146
2030
|
- materializations
|
|
2147
2031
|
operationId: create-materialization
|
|
2148
|
-
summary: Create a materialization
|
|
2032
|
+
summary: Create a materialization (Round 1)
|
|
2149
2033
|
description: |
|
|
2150
|
-
|
|
2151
|
-
|
|
2034
|
+
Starts Round 1 of the two-round build protocol: asynchronously compiles the package,
|
|
2035
|
+
computes a build plan (per-source buildId, output columns, dependency/column lineage,
|
|
2036
|
+
connection capability), and pauses at BUILD_PLAN_READY without writing any tables.
|
|
2037
|
+
The control plane then issues Round 2 via
|
|
2038
|
+
POST .../materializations/{materializationId}?action=build with build instructions.
|
|
2152
2039
|
parameters:
|
|
2153
2040
|
- $ref: "#/components/parameters/environmentName"
|
|
2154
2041
|
- $ref: "#/components/parameters/packageName"
|
|
@@ -2177,7 +2064,8 @@ paths:
|
|
|
2177
2064
|
- materializations
|
|
2178
2065
|
operationId: list-materializations
|
|
2179
2066
|
summary: List materializations for a package
|
|
2180
|
-
description:
|
|
2067
|
+
description:
|
|
2068
|
+
Returns the materialization history for the package, ordered by
|
|
2181
2069
|
most recent first.
|
|
2182
2070
|
parameters:
|
|
2183
2071
|
- $ref: "#/components/parameters/environmentName"
|
|
@@ -2235,8 +2123,11 @@ paths:
|
|
|
2235
2123
|
description: |
|
|
2236
2124
|
Performs an action on a materialization. The action is specified via
|
|
2237
2125
|
the `action` query parameter:
|
|
2238
|
-
* `
|
|
2239
|
-
|
|
2126
|
+
* `build` - Round 2. Provide BuildInstructions (CP-assigned table id, physical
|
|
2127
|
+
table name, and realization per source). Builds only the instructed sources into
|
|
2128
|
+
the exact names provided and assembles the manifest. Valid only when the
|
|
2129
|
+
materialization is at BUILD_PLAN_READY. Returns 202.
|
|
2130
|
+
* `stop` - Cancels a PENDING, BUILD_PLAN_READY, or building materialization. Returns 200.
|
|
2240
2131
|
parameters:
|
|
2241
2132
|
- $ref: "#/components/parameters/environmentName"
|
|
2242
2133
|
- $ref: "#/components/parameters/packageName"
|
|
@@ -2247,9 +2138,15 @@ paths:
|
|
|
2247
2138
|
schema:
|
|
2248
2139
|
type: string
|
|
2249
2140
|
enum:
|
|
2250
|
-
-
|
|
2141
|
+
- build
|
|
2251
2142
|
- stop
|
|
2252
2143
|
description: Action to perform on the materialization
|
|
2144
|
+
requestBody:
|
|
2145
|
+
required: false
|
|
2146
|
+
content:
|
|
2147
|
+
application/json:
|
|
2148
|
+
schema:
|
|
2149
|
+
$ref: "#/components/schemas/BuildInstructions"
|
|
2253
2150
|
responses:
|
|
2254
2151
|
"200":
|
|
2255
2152
|
description: Materialization cancelled (action=stop)
|
|
@@ -2258,7 +2155,7 @@ paths:
|
|
|
2258
2155
|
schema:
|
|
2259
2156
|
$ref: "#/components/schemas/Materialization"
|
|
2260
2157
|
"202":
|
|
2261
|
-
description:
|
|
2158
|
+
description: Round 2 build accepted (action=build)
|
|
2262
2159
|
content:
|
|
2263
2160
|
application/json:
|
|
2264
2161
|
schema:
|
|
@@ -2278,86 +2175,43 @@ paths:
|
|
|
2278
2175
|
- materializations
|
|
2279
2176
|
operationId: delete-materialization
|
|
2280
2177
|
summary: Delete a materialization
|
|
2281
|
-
description:
|
|
2282
|
-
|
|
2178
|
+
description: |
|
|
2179
|
+
Deletes a terminal (MANIFEST_FILE_READY, FAILED, or CANCELLED)
|
|
2180
|
+
materialization record. By default this removes the publisher's record
|
|
2181
|
+
only; the control plane owns table GC. Set dropTables=true to also drop
|
|
2182
|
+
the physical tables this run produced (from the materialization's
|
|
2183
|
+
manifest) as a best-effort cleanup.
|
|
2283
2184
|
parameters:
|
|
2284
2185
|
- $ref: "#/components/parameters/environmentName"
|
|
2285
2186
|
- $ref: "#/components/parameters/packageName"
|
|
2286
2187
|
- $ref: "#/components/parameters/materializationId"
|
|
2188
|
+
- name: dropTables
|
|
2189
|
+
in: query
|
|
2190
|
+
required: false
|
|
2191
|
+
description: |
|
|
2192
|
+
When true, also drop the physical tables recorded in the
|
|
2193
|
+
materialization's manifest before deleting the record. Defaults to
|
|
2194
|
+
false (record-only delete; the control plane owns table GC).
|
|
2195
|
+
schema:
|
|
2196
|
+
type: boolean
|
|
2197
|
+
default: false
|
|
2287
2198
|
responses:
|
|
2288
2199
|
"204":
|
|
2289
2200
|
description: Materialization deleted
|
|
2290
2201
|
"404":
|
|
2291
2202
|
$ref: "#/components/responses/NotFound"
|
|
2292
2203
|
"409":
|
|
2293
|
-
description: Materialization cannot be deleted
|
|
2204
|
+
description: Materialization cannot be deleted while it is active
|
|
2294
2205
|
content:
|
|
2295
2206
|
application/json:
|
|
2296
2207
|
schema:
|
|
2297
2208
|
$ref: "#/components/schemas/Error"
|
|
2298
2209
|
|
|
2299
|
-
/environments/{environmentName}/packages/{packageName}/manifest:
|
|
2300
|
-
get:
|
|
2301
|
-
tags:
|
|
2302
|
-
- manifests
|
|
2303
|
-
operationId: get-manifest
|
|
2304
|
-
summary: Get the build manifest for a package
|
|
2305
|
-
description: |
|
|
2306
|
-
Returns the current build manifest containing buildId-to-tableName mappings
|
|
2307
|
-
for all materialized sources in the package.
|
|
2308
|
-
parameters:
|
|
2309
|
-
- $ref: "#/components/parameters/environmentName"
|
|
2310
|
-
- $ref: "#/components/parameters/packageName"
|
|
2311
|
-
responses:
|
|
2312
|
-
"200":
|
|
2313
|
-
description: Build manifest
|
|
2314
|
-
content:
|
|
2315
|
-
application/json:
|
|
2316
|
-
schema:
|
|
2317
|
-
$ref: "#/components/schemas/BuildManifest"
|
|
2318
|
-
"404":
|
|
2319
|
-
$ref: "#/components/responses/NotFound"
|
|
2320
|
-
post:
|
|
2321
|
-
tags:
|
|
2322
|
-
- manifests
|
|
2323
|
-
operationId: manifest-action
|
|
2324
|
-
summary: Perform an action on the package manifest
|
|
2325
|
-
description: |
|
|
2326
|
-
Performs an action on the package manifest. The action is specified via
|
|
2327
|
-
the `action` query parameter:
|
|
2328
|
-
* `reload` - Reads the build manifest from the shared store (DuckLake
|
|
2329
|
-
in orchestrated mode, local DuckDB in standalone mode) and recompiles
|
|
2330
|
-
every model in the package so subsequent queries resolve persisted
|
|
2331
|
-
sources to their materialized tables. Intended for orchestrated
|
|
2332
|
-
workers that did not themselves run the build; the endpoint does
|
|
2333
|
-
not write anything *into* storage.
|
|
2334
|
-
parameters:
|
|
2335
|
-
- $ref: "#/components/parameters/environmentName"
|
|
2336
|
-
- $ref: "#/components/parameters/packageName"
|
|
2337
|
-
- name: action
|
|
2338
|
-
in: query
|
|
2339
|
-
required: true
|
|
2340
|
-
schema:
|
|
2341
|
-
type: string
|
|
2342
|
-
enum:
|
|
2343
|
-
- reload
|
|
2344
|
-
description: Action to perform on the manifest
|
|
2345
|
-
responses:
|
|
2346
|
-
"200":
|
|
2347
|
-
description: Manifest loaded
|
|
2348
|
-
content:
|
|
2349
|
-
application/json:
|
|
2350
|
-
schema:
|
|
2351
|
-
$ref: "#/components/schemas/BuildManifest"
|
|
2352
|
-
"400":
|
|
2353
|
-
$ref: "#/components/responses/BadRequest"
|
|
2354
|
-
"404":
|
|
2355
|
-
$ref: "#/components/responses/NotFound"
|
|
2356
|
-
|
|
2357
2210
|
components:
|
|
2358
2211
|
responses:
|
|
2359
2212
|
BadRequest:
|
|
2360
|
-
description:
|
|
2213
|
+
description:
|
|
2214
|
+
The request was malformed or cannot be performed given the current
|
|
2361
2215
|
state of the system
|
|
2362
2216
|
content:
|
|
2363
2217
|
application/json:
|
|
@@ -2480,8 +2334,9 @@ components:
|
|
|
2480
2334
|
description: Whether the server is fully initialized and ready to serve requests
|
|
2481
2335
|
operationalState:
|
|
2482
2336
|
type: string
|
|
2483
|
-
enum: [
|
|
2484
|
-
description:
|
|
2337
|
+
enum: ["initializing", "serving", "draining", "throttled"]
|
|
2338
|
+
description:
|
|
2339
|
+
Status of the server; initializing when the server is loading
|
|
2485
2340
|
environments, packages and connections, serving when the server is
|
|
2486
2341
|
initialized and ready to serve requests, draining when the
|
|
2487
2342
|
server is going to shut down, and throttled when the server has hit
|
|
@@ -2492,12 +2347,14 @@ components:
|
|
|
2492
2347
|
Only reported when the memory governor is enabled.
|
|
2493
2348
|
frozenConfig:
|
|
2494
2349
|
type: boolean
|
|
2495
|
-
description:
|
|
2350
|
+
description:
|
|
2351
|
+
Whether the server configuration is frozen (read-only mode). When
|
|
2496
2352
|
true, all mutation operations are disabled.
|
|
2497
2353
|
|
|
2498
2354
|
Environment:
|
|
2499
2355
|
type: object
|
|
2500
|
-
description:
|
|
2356
|
+
description:
|
|
2357
|
+
Represents a Malloy environment containing packages, connections,
|
|
2501
2358
|
and other resources
|
|
2502
2359
|
properties:
|
|
2503
2360
|
resource:
|
|
@@ -2511,7 +2368,8 @@ components:
|
|
|
2511
2368
|
description: Environment README content
|
|
2512
2369
|
location:
|
|
2513
2370
|
type: string
|
|
2514
|
-
description:
|
|
2371
|
+
description:
|
|
2372
|
+
Environment location, can be an absolute path or URI (e.g. github,
|
|
2515
2373
|
s3, gcs, etc.)
|
|
2516
2374
|
connections:
|
|
2517
2375
|
type: array
|
|
@@ -2523,19 +2381,6 @@ components:
|
|
|
2523
2381
|
description: List of Malloy packages in this environment
|
|
2524
2382
|
items:
|
|
2525
2383
|
$ref: "#/components/schemas/Package"
|
|
2526
|
-
materializationStorage:
|
|
2527
|
-
type: object
|
|
2528
|
-
nullable: true
|
|
2529
|
-
description: Optional DuckLake-backed storage for materialization manifests
|
|
2530
|
-
(orchestrated mode). When set, manifests are stored in a shared
|
|
2531
|
-
DuckLake catalog instead of the local DuckDB database.
|
|
2532
|
-
properties:
|
|
2533
|
-
catalogUrl:
|
|
2534
|
-
type: string
|
|
2535
|
-
description: PostgreSQL connection URL for the DuckLake catalog metadata store
|
|
2536
|
-
dataPath:
|
|
2537
|
-
type: string
|
|
2538
|
-
description: Cloud storage path (s3:// or gs://) for DuckLake data files
|
|
2539
2384
|
|
|
2540
2385
|
Package:
|
|
2541
2386
|
type: object
|
|
@@ -2553,8 +2398,59 @@ components:
|
|
|
2553
2398
|
description: Package description
|
|
2554
2399
|
location:
|
|
2555
2400
|
type: string
|
|
2556
|
-
description:
|
|
2401
|
+
description:
|
|
2402
|
+
Package location, can be an absolute path or URI (e.g. github, s3,
|
|
2557
2403
|
gcs, etc.)
|
|
2404
|
+
explores:
|
|
2405
|
+
type: array
|
|
2406
|
+
items:
|
|
2407
|
+
type: string
|
|
2408
|
+
description: >-
|
|
2409
|
+
Optional opt-in for curated discovery. When present, only these
|
|
2410
|
+
model file paths (relative to the package root) are listed via
|
|
2411
|
+
`listModels()`, and within-file discovery is filtered to each
|
|
2412
|
+
model's `export {}` closure. When absent or empty, every model is
|
|
2413
|
+
listed with its full source set (backward-compatible). Every other
|
|
2414
|
+
.malloy file still compiles for import/join resolution but is
|
|
2415
|
+
hidden from listings once `explores` is declared. Notebooks are
|
|
2416
|
+
always listed regardless of this field.
|
|
2417
|
+
exploresWarnings:
|
|
2418
|
+
type: array
|
|
2419
|
+
readOnly: true
|
|
2420
|
+
items:
|
|
2421
|
+
type: string
|
|
2422
|
+
description: >-
|
|
2423
|
+
Actionable messages for declared explores that do not resolve to
|
|
2424
|
+
a real model in this package (e.g. a misspelled path, or a notebook
|
|
2425
|
+
listed as an explore). Server-computed and read-only: it is
|
|
2426
|
+
ignored on create/update requests and only ever returned in
|
|
2427
|
+
responses. Present only when there are such problems. Loading is
|
|
2428
|
+
fail-safe — the unresolved entry simply lists nothing rather than
|
|
2429
|
+
exposing everything — so this is the signal that a package is
|
|
2430
|
+
misconfigured; publishing such a package is rejected.
|
|
2431
|
+
queryableSources:
|
|
2432
|
+
type: string
|
|
2433
|
+
enum:
|
|
2434
|
+
- declared
|
|
2435
|
+
- all
|
|
2436
|
+
description: >-
|
|
2437
|
+
Controls whether the discovery surface is also a query boundary.
|
|
2438
|
+
`"declared"` (the default) makes queryable == discoverable: when
|
|
2439
|
+
`explores` is declared, only `explores` model files — and within
|
|
2440
|
+
them only the `export {}` closure — are valid top-level query
|
|
2441
|
+
targets; every other source still compiles, imports, joins, and
|
|
2442
|
+
extends but is not directly queryable (denied with 404). `"all"`
|
|
2443
|
+
decouples them: `explores`/`export {}` gate discovery only and every
|
|
2444
|
+
compiled source stays directly queryable. When `explores` is absent
|
|
2445
|
+
there is no curated surface, so both modes are equivalent
|
|
2446
|
+
(everything queryable). Invalid values fall back to `"declared"`.
|
|
2447
|
+
Identity-based access is a separate concern — see `#(authorize)`.
|
|
2448
|
+
manifestLocation:
|
|
2449
|
+
type: ["string", "null"]
|
|
2450
|
+
description: |
|
|
2451
|
+
URI (gs:// or s3://) of the control-plane-computed manifest for this package.
|
|
2452
|
+
On (re)load the worker reads it and binds persist references
|
|
2453
|
+
(buildId -> physicalTableName). Null = serve live.
|
|
2558
2454
|
|
|
2559
2455
|
Model:
|
|
2560
2456
|
type: object
|
|
@@ -2590,6 +2486,28 @@ components:
|
|
|
2590
2486
|
type: string
|
|
2591
2487
|
description: Error message if the notebook failed to compile or load
|
|
2592
2488
|
|
|
2489
|
+
Page:
|
|
2490
|
+
type: object
|
|
2491
|
+
description: Static HTML page (in-package data app) within a Malloy package
|
|
2492
|
+
properties:
|
|
2493
|
+
resource:
|
|
2494
|
+
type: string
|
|
2495
|
+
description:
|
|
2496
|
+
Canonical URL to the served page. Root-relative and does NOT
|
|
2497
|
+
carry the /api/v0 prefix, because pages are static assets served off
|
|
2498
|
+
the server root rather than API resources.
|
|
2499
|
+
packageName:
|
|
2500
|
+
type: string
|
|
2501
|
+
description: Name of the package containing this page
|
|
2502
|
+
path:
|
|
2503
|
+
type: string
|
|
2504
|
+
description: Relative path to the HTML file within its package directory
|
|
2505
|
+
title:
|
|
2506
|
+
type: string
|
|
2507
|
+
description:
|
|
2508
|
+
Title extracted from the file's <title> tag, or the path if
|
|
2509
|
+
not present
|
|
2510
|
+
|
|
2593
2511
|
RawNotebook:
|
|
2594
2512
|
type: object
|
|
2595
2513
|
description: Raw Malloy notebook with unexecuted cell contents
|
|
@@ -2643,7 +2561,8 @@ components:
|
|
|
2643
2561
|
description: JSON string containing model metadata and structure information
|
|
2644
2562
|
sourceInfos:
|
|
2645
2563
|
type: array
|
|
2646
|
-
description:
|
|
2564
|
+
description:
|
|
2565
|
+
Array of JSON strings containing source information for each data
|
|
2647
2566
|
source
|
|
2648
2567
|
items:
|
|
2649
2568
|
type: string
|
|
@@ -2659,7 +2578,8 @@ components:
|
|
|
2659
2578
|
$ref: "#/components/schemas/Source"
|
|
2660
2579
|
givens:
|
|
2661
2580
|
type: array
|
|
2662
|
-
description:
|
|
2581
|
+
description:
|
|
2582
|
+
Givens (runtime parameters) declared on this model via the
|
|
2663
2583
|
`given:` keyword
|
|
2664
2584
|
items:
|
|
2665
2585
|
$ref: "#/components/schemas/Given"
|
|
@@ -2725,12 +2645,14 @@ components:
|
|
|
2725
2645
|
description: Whether a value must be provided
|
|
2726
2646
|
dimensionType:
|
|
2727
2647
|
type: string
|
|
2728
|
-
description:
|
|
2648
|
+
description:
|
|
2649
|
+
Malloy data type of the dimension (e.g. string, number, boolean,
|
|
2729
2650
|
date, timestamp)
|
|
2730
2651
|
|
|
2731
2652
|
Given:
|
|
2732
2653
|
type: object
|
|
2733
|
-
description:
|
|
2654
|
+
description:
|
|
2655
|
+
A given (runtime parameter) declared on a Malloy model via the
|
|
2734
2656
|
`given:` keyword. Surfaced on `CompiledModel.givens` and `Source.givens`
|
|
2735
2657
|
so callers can introspect what runtime values a model accepts.
|
|
2736
2658
|
properties:
|
|
@@ -2786,7 +2708,8 @@ components:
|
|
|
2786
2708
|
$ref: "#/components/schemas/Filter"
|
|
2787
2709
|
givens:
|
|
2788
2710
|
type: array
|
|
2789
|
-
description:
|
|
2711
|
+
description:
|
|
2712
|
+
Model-level givens (runtime parameters) available to queries
|
|
2790
2713
|
on this source. Identical to `CompiledModel.givens`; repeated here
|
|
2791
2714
|
for SDK ergonomics so consumers iterating sources can render inputs
|
|
2792
2715
|
without a second lookup.
|
|
@@ -2794,12 +2717,15 @@ components:
|
|
|
2794
2717
|
$ref: "#/components/schemas/Given"
|
|
2795
2718
|
authorize:
|
|
2796
2719
|
type: array
|
|
2797
|
-
description:
|
|
2720
|
+
description: >-
|
|
2721
|
+
Effective authorize expressions declared on this source via
|
|
2798
2722
|
`#(authorize)` / `##(authorize)` annotations — file-level expressions
|
|
2799
2723
|
first, then the source's own. Each is a Malloy boolean expression over
|
|
2800
|
-
declared givens
|
|
2801
|
-
|
|
2802
|
-
|
|
2724
|
+
declared givens, evaluated as a disjunction (OR) and enforced at query
|
|
2725
|
+
time. A request that reads this source is denied with HTTP 403 unless
|
|
2726
|
+
at least one expression evaluates true for the supplied givens; an
|
|
2727
|
+
empty or absent list means unrestricted. Givens are caller-asserted, so
|
|
2728
|
+
this is a boundary only behind a trusted tier — see docs/authorize.md.
|
|
2803
2729
|
items:
|
|
2804
2730
|
type: string
|
|
2805
2731
|
|
|
@@ -2809,23 +2735,27 @@ components:
|
|
|
2809
2735
|
properties:
|
|
2810
2736
|
query:
|
|
2811
2737
|
type: string
|
|
2812
|
-
description:
|
|
2738
|
+
description:
|
|
2739
|
+
Query string to execute on the model. If the query parameter is
|
|
2813
2740
|
set, the queryName parameter must be empty.
|
|
2814
2741
|
sourceName:
|
|
2815
2742
|
type: string
|
|
2816
|
-
description:
|
|
2743
|
+
description:
|
|
2744
|
+
Name of the source in the model to use for queryName, search, and
|
|
2817
2745
|
topValue requests.
|
|
2818
2746
|
queryName:
|
|
2819
2747
|
type: string
|
|
2820
|
-
description:
|
|
2748
|
+
description:
|
|
2749
|
+
Name of a query to execute on a source in the model. Requires the
|
|
2821
2750
|
sourceName parameter is set. If the queryName parameter is set, the
|
|
2822
2751
|
query parameter must be empty.
|
|
2823
2752
|
compactJson:
|
|
2824
2753
|
type: boolean
|
|
2825
2754
|
default: false
|
|
2826
|
-
description:
|
|
2827
|
-
|
|
2828
|
-
|
|
2755
|
+
description:
|
|
2756
|
+
'If true, returns a simple JSON array of row objects in the form
|
|
2757
|
+
{"columnName": value}. If false (default), returns the full Malloy
|
|
2758
|
+
result with type metadata for rendering.'
|
|
2829
2759
|
versionId:
|
|
2830
2760
|
type: string
|
|
2831
2761
|
description: Version ID
|
|
@@ -2859,20 +2789,22 @@ components:
|
|
|
2859
2789
|
properties:
|
|
2860
2790
|
type:
|
|
2861
2791
|
type: string
|
|
2862
|
-
enum: [
|
|
2792
|
+
enum: ["markdown", "code"]
|
|
2863
2793
|
description: Type of notebook cell
|
|
2864
2794
|
text:
|
|
2865
2795
|
type: string
|
|
2866
2796
|
description: Text contents of the notebook cell (either markdown or Malloy code)
|
|
2867
2797
|
newSources:
|
|
2868
2798
|
type: array
|
|
2869
|
-
description:
|
|
2799
|
+
description:
|
|
2800
|
+
Array of JSON strings containing SourceInfo objects made available
|
|
2870
2801
|
in this cell
|
|
2871
2802
|
items:
|
|
2872
2803
|
type: string
|
|
2873
2804
|
queryInfo:
|
|
2874
2805
|
type: string
|
|
2875
|
-
description:
|
|
2806
|
+
description:
|
|
2807
|
+
JSON string containing QueryInfo object for the query in this cell
|
|
2876
2808
|
(if the cell contains a query)
|
|
2877
2809
|
|
|
2878
2810
|
NotebookCellResult:
|
|
@@ -2881,7 +2813,7 @@ components:
|
|
|
2881
2813
|
properties:
|
|
2882
2814
|
type:
|
|
2883
2815
|
type: string
|
|
2884
|
-
enum: [
|
|
2816
|
+
enum: ["markdown", "code"]
|
|
2885
2817
|
description: Type of notebook cell
|
|
2886
2818
|
text:
|
|
2887
2819
|
type: string
|
|
@@ -2891,7 +2823,8 @@ components:
|
|
|
2891
2823
|
description: JSON string containing the execution result for this cell
|
|
2892
2824
|
newSources:
|
|
2893
2825
|
type: array
|
|
2894
|
-
description:
|
|
2826
|
+
description:
|
|
2827
|
+
Array of JSON strings containing SourceInfo objects made available
|
|
2895
2828
|
in this cell
|
|
2896
2829
|
items:
|
|
2897
2830
|
type: string
|
|
@@ -2902,14 +2835,16 @@ components:
|
|
|
2902
2835
|
properties:
|
|
2903
2836
|
result:
|
|
2904
2837
|
type: string
|
|
2905
|
-
description:
|
|
2838
|
+
description:
|
|
2839
|
+
JSON string containing the query results, metadata, and execution
|
|
2906
2840
|
information
|
|
2907
2841
|
resource:
|
|
2908
2842
|
type: string
|
|
2909
2843
|
description: Resource path to the query result
|
|
2910
2844
|
renderLogs:
|
|
2911
2845
|
type: array
|
|
2912
|
-
description:
|
|
2846
|
+
description:
|
|
2847
|
+
Render tag validation messages (errors, warnings) detected during
|
|
2913
2848
|
query preparation
|
|
2914
2849
|
items:
|
|
2915
2850
|
$ref: "#/components/schemas/LogMessage"
|
|
@@ -2942,7 +2877,7 @@ components:
|
|
|
2942
2877
|
severity:
|
|
2943
2878
|
type: string
|
|
2944
2879
|
description: Severity level of the log message
|
|
2945
|
-
enum: [
|
|
2880
|
+
enum: ["debug", "info", "warn", "error"]
|
|
2946
2881
|
message:
|
|
2947
2882
|
type: string
|
|
2948
2883
|
description: Human-readable log message
|
|
@@ -2962,7 +2897,7 @@ components:
|
|
|
2962
2897
|
type:
|
|
2963
2898
|
type: string
|
|
2964
2899
|
description: Type of embedded database
|
|
2965
|
-
enum: [
|
|
2900
|
+
enum: ["embedded", "materialized"]
|
|
2966
2901
|
|
|
2967
2902
|
Schema:
|
|
2968
2903
|
description: A schema name in a Connection.
|
|
@@ -3065,7 +3000,8 @@ components:
|
|
|
3065
3000
|
description: PostgreSQL password for authentication
|
|
3066
3001
|
connectionString:
|
|
3067
3002
|
type: string
|
|
3068
|
-
description:
|
|
3003
|
+
description:
|
|
3004
|
+
Complete PostgreSQL connection string (alternative to individual
|
|
3069
3005
|
parameters)
|
|
3070
3006
|
|
|
3071
3007
|
MysqlConnection:
|
|
@@ -3135,7 +3071,7 @@ components:
|
|
|
3135
3071
|
properties:
|
|
3136
3072
|
authType:
|
|
3137
3073
|
type: string
|
|
3138
|
-
enum: [
|
|
3074
|
+
enum: [service_principal, sas_token]
|
|
3139
3075
|
description: Authentication method for Azure Storage
|
|
3140
3076
|
sasUrl:
|
|
3141
3077
|
type: string
|
|
@@ -3176,7 +3112,8 @@ components:
|
|
|
3176
3112
|
properties:
|
|
3177
3113
|
bucketUrl:
|
|
3178
3114
|
type: string
|
|
3179
|
-
description:
|
|
3115
|
+
description:
|
|
3116
|
+
URL of the storage bucket (e.g. s3://my-bucket/path or
|
|
3180
3117
|
gs://my-bucket/path)
|
|
3181
3118
|
s3Connection:
|
|
3182
3119
|
$ref: "#/components/schemas/S3Connection"
|
|
@@ -3349,7 +3286,7 @@ components:
|
|
|
3349
3286
|
type:
|
|
3350
3287
|
type: string
|
|
3351
3288
|
description: Type of database connection
|
|
3352
|
-
enum: [
|
|
3289
|
+
enum: [bigquery, snowflake, postgres, gcs, s3, azure]
|
|
3353
3290
|
attributes:
|
|
3354
3291
|
$ref: "#/components/schemas/ConnectionAttributes"
|
|
3355
3292
|
bigqueryConnection:
|
|
@@ -3390,24 +3327,6 @@ components:
|
|
|
3390
3327
|
items:
|
|
3391
3328
|
$ref: "#/components/schemas/Column"
|
|
3392
3329
|
|
|
3393
|
-
# TODO: Remove this. Replaced by Table
|
|
3394
|
-
TableSource:
|
|
3395
|
-
type: object
|
|
3396
|
-
deprecated: true
|
|
3397
|
-
properties:
|
|
3398
|
-
resource:
|
|
3399
|
-
type: string
|
|
3400
|
-
description: Resource path to the table source.
|
|
3401
|
-
# Pass source as an opaque JSON string that is malloyVersion dependent.
|
|
3402
|
-
# TODO: Remove this once we update the Malloy Publisher connection.
|
|
3403
|
-
source:
|
|
3404
|
-
type: string
|
|
3405
|
-
columns:
|
|
3406
|
-
description: Table fields
|
|
3407
|
-
type: array
|
|
3408
|
-
items:
|
|
3409
|
-
$ref: "#/components/schemas/Column"
|
|
3410
|
-
|
|
3411
3330
|
TemporaryTable:
|
|
3412
3331
|
type: object
|
|
3413
3332
|
properties:
|
|
@@ -3480,7 +3399,8 @@ components:
|
|
|
3480
3399
|
description: Name of the environment being watched for file changes
|
|
3481
3400
|
watchingPath:
|
|
3482
3401
|
type: string
|
|
3483
|
-
description:
|
|
3402
|
+
description:
|
|
3403
|
+
The file system path being monitored for changes, null if not
|
|
3484
3404
|
watching
|
|
3485
3405
|
required:
|
|
3486
3406
|
- enabled
|
|
@@ -3504,7 +3424,7 @@ components:
|
|
|
3504
3424
|
status:
|
|
3505
3425
|
type: string
|
|
3506
3426
|
description: Connection test result status
|
|
3507
|
-
enum: [
|
|
3427
|
+
enum: ["ok", "failed"]
|
|
3508
3428
|
errorMessage:
|
|
3509
3429
|
type: string
|
|
3510
3430
|
description: Error message if the connection test failed, null if successful
|
|
@@ -3519,7 +3439,8 @@ components:
|
|
|
3519
3439
|
includeSql:
|
|
3520
3440
|
type: boolean
|
|
3521
3441
|
default: false
|
|
3522
|
-
description:
|
|
3442
|
+
description:
|
|
3443
|
+
If true, returns the generated SQL alongside compilation results
|
|
3523
3444
|
(only available when compilation succeeds and the source contains a
|
|
3524
3445
|
runnable query).
|
|
3525
3446
|
givens:
|
|
@@ -3533,9 +3454,10 @@ components:
|
|
|
3533
3454
|
properties:
|
|
3534
3455
|
status:
|
|
3535
3456
|
type: string
|
|
3536
|
-
description:
|
|
3457
|
+
description:
|
|
3458
|
+
Overall compilation status — "error" if any problems have error
|
|
3537
3459
|
severity
|
|
3538
|
-
enum: [
|
|
3460
|
+
enum: ["success", "error"]
|
|
3539
3461
|
problems:
|
|
3540
3462
|
type: array
|
|
3541
3463
|
description: List of compilation problems (errors and warnings)
|
|
@@ -3543,7 +3465,8 @@ components:
|
|
|
3543
3465
|
$ref: "#/components/schemas/CompileProblem"
|
|
3544
3466
|
sql:
|
|
3545
3467
|
type: string
|
|
3546
|
-
description:
|
|
3468
|
+
description:
|
|
3469
|
+
Generated SQL for the compiled query. Only present when includeSql
|
|
3547
3470
|
is true and compilation succeeds with a runnable query.
|
|
3548
3471
|
|
|
3549
3472
|
CompileProblem:
|
|
@@ -3556,7 +3479,7 @@ components:
|
|
|
3556
3479
|
severity:
|
|
3557
3480
|
type: string
|
|
3558
3481
|
description: Severity level of the problem
|
|
3559
|
-
enum: [
|
|
3482
|
+
enum: ["error", "warn", "debug"]
|
|
3560
3483
|
code:
|
|
3561
3484
|
type: string
|
|
3562
3485
|
description: Machine-readable error code
|
|
@@ -3573,22 +3496,46 @@ components:
|
|
|
3573
3496
|
|
|
3574
3497
|
CreateMaterializationRequest:
|
|
3575
3498
|
type: object
|
|
3576
|
-
description:
|
|
3499
|
+
description:
|
|
3500
|
+
Options for starting a materialization. Auto-run by default; opt into the
|
|
3501
|
+
two-round control-plane-driven flow with pauseBetweenPhases.
|
|
3577
3502
|
properties:
|
|
3578
|
-
|
|
3503
|
+
pauseBetweenPhases:
|
|
3579
3504
|
type: boolean
|
|
3580
3505
|
default: false
|
|
3581
|
-
description:
|
|
3582
|
-
|
|
3583
|
-
|
|
3506
|
+
description:
|
|
3507
|
+
When false (default) the publisher runs all phases in one pass —
|
|
3508
|
+
self-assigns table names (the "#@ persist name=" value, else the
|
|
3509
|
+
source name), builds with realization=COPY, assembles the manifest,
|
|
3510
|
+
and auto-loads it into the package models. When true it pauses at
|
|
3511
|
+
BUILD_PLAN_READY for the control plane to send Round 2 build
|
|
3512
|
+
instructions.
|
|
3513
|
+
forceRefresh:
|
|
3584
3514
|
type: boolean
|
|
3585
3515
|
default: false
|
|
3586
|
-
description:
|
|
3587
|
-
|
|
3516
|
+
description: Build a new table even when a source's buildId is unchanged.
|
|
3517
|
+
sourceNames:
|
|
3518
|
+
type: array
|
|
3519
|
+
items:
|
|
3520
|
+
type: string
|
|
3521
|
+
description:
|
|
3522
|
+
Restrict the plan/build to these persist source names. Omit = all
|
|
3523
|
+
persist sources.
|
|
3524
|
+
|
|
3525
|
+
MaterializationStatus:
|
|
3526
|
+
type: string
|
|
3527
|
+
description: Phase-aware status of a two-round materialization run.
|
|
3528
|
+
enum:
|
|
3529
|
+
- PENDING
|
|
3530
|
+
- BUILD_PLAN_READY
|
|
3531
|
+
- MANIFEST_ROWS_READY
|
|
3532
|
+
- MANIFEST_FILE_READY
|
|
3533
|
+
- FAILED
|
|
3534
|
+
- CANCELLED
|
|
3588
3535
|
|
|
3589
3536
|
Materialization:
|
|
3590
3537
|
type: object
|
|
3591
|
-
description: A record of a package
|
|
3538
|
+
description: A record of one two-round materialization run for a package.
|
|
3592
3539
|
properties:
|
|
3593
3540
|
id:
|
|
3594
3541
|
type: string
|
|
@@ -3596,21 +3543,36 @@ components:
|
|
|
3596
3543
|
type: string
|
|
3597
3544
|
packageName:
|
|
3598
3545
|
type: string
|
|
3546
|
+
pauseBetweenPhases:
|
|
3547
|
+
type: boolean
|
|
3548
|
+
description:
|
|
3549
|
+
Echoes the create-time flag. False (default) = auto-run all phases;
|
|
3550
|
+
true = pause at BUILD_PLAN_READY for control-plane-driven Round 2.
|
|
3599
3551
|
status:
|
|
3600
|
-
|
|
3601
|
-
|
|
3552
|
+
$ref: "#/components/schemas/MaterializationStatus"
|
|
3553
|
+
buildPlan:
|
|
3554
|
+
oneOf:
|
|
3555
|
+
- $ref: "#/components/schemas/BuildPlan"
|
|
3556
|
+
- type: "null"
|
|
3557
|
+
description: Round 1 output. Null until status >= BUILD_PLAN_READY.
|
|
3558
|
+
manifest:
|
|
3559
|
+
oneOf:
|
|
3560
|
+
- $ref: "#/components/schemas/BuildManifest"
|
|
3561
|
+
- type: "null"
|
|
3562
|
+
description: Round 2 output. Null until status = MANIFEST_FILE_READY.
|
|
3602
3563
|
startedAt:
|
|
3603
|
-
type: [
|
|
3564
|
+
type: ["string", "null"]
|
|
3604
3565
|
format: date-time
|
|
3605
3566
|
completedAt:
|
|
3606
|
-
type: [
|
|
3567
|
+
type: ["string", "null"]
|
|
3607
3568
|
format: date-time
|
|
3608
3569
|
error:
|
|
3609
|
-
type: [
|
|
3570
|
+
type: ["string", "null"]
|
|
3610
3571
|
description: Error message if the materialization failed
|
|
3611
3572
|
metadata:
|
|
3612
|
-
type: [
|
|
3613
|
-
description:
|
|
3573
|
+
type: ["object", "null"]
|
|
3574
|
+
description:
|
|
3575
|
+
Materialization metadata including build options, source counts,
|
|
3614
3576
|
and durations
|
|
3615
3577
|
createdAt:
|
|
3616
3578
|
type: string
|
|
@@ -3619,26 +3581,161 @@ components:
|
|
|
3619
3581
|
type: string
|
|
3620
3582
|
format: date-time
|
|
3621
3583
|
|
|
3584
|
+
BuildPlan:
|
|
3585
|
+
type: object
|
|
3586
|
+
description: |
|
|
3587
|
+
Round 1 output. Mirrors Malloy's native build plan plus the minimal
|
|
3588
|
+
per-source detail the control plane needs in v0 to assign
|
|
3589
|
+
identity/naming/realization. Lineage, policy, and connection
|
|
3590
|
+
capability are intentionally omitted until they carry real data.
|
|
3591
|
+
required: [graphs, sources]
|
|
3592
|
+
properties:
|
|
3593
|
+
graphs:
|
|
3594
|
+
type: array
|
|
3595
|
+
description: Dependency-ordered build graphs, one per connection.
|
|
3596
|
+
items:
|
|
3597
|
+
$ref: "#/components/schemas/BuildGraph"
|
|
3598
|
+
sources:
|
|
3599
|
+
type: object
|
|
3600
|
+
description: Map of sourceID ("sourceName@modelURL") to per-source plan.
|
|
3601
|
+
additionalProperties:
|
|
3602
|
+
$ref: "#/components/schemas/PersistSourcePlan"
|
|
3603
|
+
|
|
3604
|
+
BuildGraph:
|
|
3605
|
+
type: object
|
|
3606
|
+
required: [connectionName, nodes]
|
|
3607
|
+
properties:
|
|
3608
|
+
connectionName:
|
|
3609
|
+
type: string
|
|
3610
|
+
nodes:
|
|
3611
|
+
type: array
|
|
3612
|
+
description:
|
|
3613
|
+
Leveled build nodes; each inner array is one parallelizable level,
|
|
3614
|
+
levels run in order.
|
|
3615
|
+
items:
|
|
3616
|
+
type: array
|
|
3617
|
+
items:
|
|
3618
|
+
$ref: "#/components/schemas/BuildNode"
|
|
3619
|
+
|
|
3620
|
+
BuildNode:
|
|
3621
|
+
type: object
|
|
3622
|
+
required: [sourceID]
|
|
3623
|
+
properties:
|
|
3624
|
+
sourceID:
|
|
3625
|
+
type: string
|
|
3626
|
+
description: "sourceName@modelURL"
|
|
3627
|
+
dependsOn:
|
|
3628
|
+
type: array
|
|
3629
|
+
description: Upstream sourceIDs in this graph.
|
|
3630
|
+
items:
|
|
3631
|
+
type: string
|
|
3632
|
+
|
|
3633
|
+
PersistSourcePlan:
|
|
3634
|
+
type: object
|
|
3635
|
+
required: [name, sourceID, connectionName, buildId, sql, columns]
|
|
3636
|
+
properties:
|
|
3637
|
+
name:
|
|
3638
|
+
type: string
|
|
3639
|
+
sourceID:
|
|
3640
|
+
type: string
|
|
3641
|
+
connectionName:
|
|
3642
|
+
type: string
|
|
3643
|
+
dialect:
|
|
3644
|
+
type: string
|
|
3645
|
+
buildId:
|
|
3646
|
+
type: string
|
|
3647
|
+
description: hash(connectionDigest + canonical logical SQL).
|
|
3648
|
+
sql:
|
|
3649
|
+
type: string
|
|
3650
|
+
description:
|
|
3651
|
+
The source's build SQL (with the build manifest applied for upstream
|
|
3652
|
+
rewrites).
|
|
3653
|
+
columns:
|
|
3654
|
+
type: array
|
|
3655
|
+
description: Output schema of the source.
|
|
3656
|
+
items:
|
|
3657
|
+
$ref: "#/components/schemas/Column"
|
|
3658
|
+
|
|
3659
|
+
Realization:
|
|
3660
|
+
type: string
|
|
3661
|
+
enum: [SNAPSHOT, COPY]
|
|
3662
|
+
description: SNAPSHOT = warehouse clone/snapshot; COPY = CREATE TABLE AS SELECT.
|
|
3663
|
+
|
|
3664
|
+
BuildInstructions:
|
|
3665
|
+
type: object
|
|
3666
|
+
description: Round 2 input. Per-source instructions assigned by the control plane.
|
|
3667
|
+
required: [sources]
|
|
3668
|
+
properties:
|
|
3669
|
+
sources:
|
|
3670
|
+
type: array
|
|
3671
|
+
items:
|
|
3672
|
+
$ref: "#/components/schemas/BuildInstruction"
|
|
3673
|
+
|
|
3674
|
+
BuildInstruction:
|
|
3675
|
+
type: object
|
|
3676
|
+
required: [buildId, materializedTableId, physicalTableName, realization]
|
|
3677
|
+
properties:
|
|
3678
|
+
buildId:
|
|
3679
|
+
type: string
|
|
3680
|
+
description: Identifies which planned source this instruction is for
|
|
3681
|
+
(matches PersistSourcePlan.buildId).
|
|
3682
|
+
sourceID:
|
|
3683
|
+
type: string
|
|
3684
|
+
description:
|
|
3685
|
+
Optional convenience echo of "sourceName@modelURL"; buildId is
|
|
3686
|
+
authoritative.
|
|
3687
|
+
materializedTableId:
|
|
3688
|
+
type: string
|
|
3689
|
+
description:
|
|
3690
|
+
CP-assigned surrogate id for the materialized table about to be
|
|
3691
|
+
produced.
|
|
3692
|
+
physicalTableName:
|
|
3693
|
+
type: string
|
|
3694
|
+
description:
|
|
3695
|
+
Fully-qualified, dialect-quoted table name to create. The publisher
|
|
3696
|
+
writes here verbatim.
|
|
3697
|
+
realization:
|
|
3698
|
+
$ref: "#/components/schemas/Realization"
|
|
3699
|
+
|
|
3622
3700
|
BuildManifest:
|
|
3623
3701
|
type: object
|
|
3624
|
-
description:
|
|
3702
|
+
description:
|
|
3703
|
+
Round 2 output. Maps each buildId a build produced to its physical table.
|
|
3704
|
+
Returned inline; the control plane persists it.
|
|
3625
3705
|
properties:
|
|
3706
|
+
builtAt:
|
|
3707
|
+
type: string
|
|
3708
|
+
format: date-time
|
|
3626
3709
|
entries:
|
|
3627
3710
|
type: object
|
|
3628
3711
|
additionalProperties:
|
|
3629
3712
|
$ref: "#/components/schemas/ManifestEntry"
|
|
3630
|
-
description: Map of
|
|
3713
|
+
description: Map of buildId to manifest entry.
|
|
3631
3714
|
strict:
|
|
3632
3715
|
type: boolean
|
|
3633
|
-
description: Whether
|
|
3716
|
+
description: Whether unresolved references should error.
|
|
3634
3717
|
|
|
3635
3718
|
ManifestEntry:
|
|
3636
3719
|
type: object
|
|
3637
|
-
description: A single entry in the build manifest
|
|
3720
|
+
description: A single entry in the build manifest.
|
|
3721
|
+
required: [buildId, physicalTableName]
|
|
3638
3722
|
properties:
|
|
3639
|
-
|
|
3723
|
+
buildId:
|
|
3640
3724
|
type: string
|
|
3641
|
-
|
|
3725
|
+
sourceName:
|
|
3726
|
+
type: string
|
|
3727
|
+
materializedTableId:
|
|
3728
|
+
type: string
|
|
3729
|
+
description: Echoes the CP-assigned id from the BuildInstruction.
|
|
3730
|
+
physicalTableName:
|
|
3731
|
+
type: string
|
|
3732
|
+
description: Name of the materialized table.
|
|
3733
|
+
connectionName:
|
|
3734
|
+
type: string
|
|
3735
|
+
realization:
|
|
3736
|
+
$ref: "#/components/schemas/Realization"
|
|
3737
|
+
rowCount:
|
|
3738
|
+
type: ["integer", "null"]
|
|
3642
3739
|
|
|
3643
3740
|
parameters:
|
|
3644
3741
|
environmentName:
|