@metabase/cli 0.1.0-alpha.workspaces-commands.aa383a1 → 0.1.0-alpha.workspaces-commands.935a64c
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/README.md +81 -78
- package/dist/add-collection-B-Ye-3rk.mjs +11 -0
- package/dist/{add-collection-Cvh_24_Q.mjs → add-collection-FNN_Arg9.mjs} +6 -6
- package/dist/{api-key-d2kBtC3S.mjs → api-key-3kWHdrkv.mjs} +1 -1
- package/dist/{archive-O0WoU8LU.mjs → archive-C-G9Nxoi.mjs} +6 -6
- package/dist/{archive-WgWmkexh.mjs → archive-CeBvAhT6.mjs} +6 -6
- package/dist/{archive-BbY8tyIA.mjs → archive-Ctx4ppbz.mjs} +5 -5
- package/dist/{archive-CMEk6RsU.mjs → archive-PiPTzqta.mjs} +6 -6
- package/dist/auth-yEUbA368.mjs +19 -0
- package/dist/{body-C2lo4Axp.mjs → body-DnyBxVKv.mjs} +3 -3
- package/dist/{branches-ohsIXufV.mjs → branches-fnskukyH.mjs} +8 -8
- package/dist/{cancel-eV9xzouo.mjs → cancel-BHS55uG8.mjs} +5 -5
- package/dist/{cancel-task-DEI788SO.mjs → cancel-task--Ql2riG6.mjs} +9 -9
- package/dist/{card-BOGKT258.mjs → card-B2ZlGpQP.mjs} +3 -2
- package/dist/card-Dnm0jydp.mjs +20 -0
- package/dist/{cards-B_XNja43.mjs → cards-Tqz7qbEd.mjs} +5 -5
- package/dist/cli.mjs +24 -24
- package/dist/collection-CXH6n3JD.mjs +19 -0
- package/dist/{create-Dh7YG1mO.mjs → create-BPqZI8eJ.mjs} +7 -7
- package/dist/{create-oFRJZRJW.mjs → create-Bn3BDzsS.mjs} +10 -10
- package/dist/{create-D5GQ3L7D.mjs → create-C4Fec2QG.mjs} +8 -8
- package/dist/create-DIEuYQS2.mjs +48 -0
- package/dist/{create-wIKFYXjw.mjs → create-DM5QcfYo.mjs} +9 -9
- package/dist/create-DX5SX5HJ.mjs +48 -0
- package/dist/{create-CVRcTydU.mjs → create-Ddk53JTY.mjs} +6 -6
- package/dist/{create-lYoy27zG.mjs → create-DnboeX4b.mjs} +6 -6
- package/dist/{create-BL84c0N2.mjs → create-QfYOXoyJ.mjs} +7 -7
- package/dist/{create-branch-NM1OQ9Vk.mjs → create-branch-BPTa-3oe.mjs} +9 -9
- package/dist/{create-lBZSfAKV.mjs → create-xCp5Qxzv.mjs} +9 -9
- package/dist/{credentials-dN7n9-oM.mjs → credentials-DDGZCExr.mjs} +8 -8
- package/dist/{current-task-1oigZEYp.mjs → current-task-CXqMeAkI.mjs} +9 -9
- package/dist/dashboard-B9zTXDYK.mjs +20 -0
- package/dist/{database-DiSMWtmg.mjs → database-CV_nC20t.mjs} +3 -3
- package/dist/db-D2koZa54.mjs +22 -0
- package/dist/{delete-D1Apu5tv.mjs → delete-ChZr_uHC.mjs} +7 -7
- package/dist/{delete-BV0Dawne.mjs → delete-DOJmKqAE.mjs} +7 -7
- package/dist/{delete-runtime-D8z0lCJ2.mjs → delete-runtime-BMzvfj_B.mjs} +2 -2
- package/dist/{delete-table-DQHUlwKv.mjs → delete-table-BbD1ux3D.mjs} +7 -7
- package/dist/{deprovision-osrI7qAP.mjs → deprovision-DR5NpXeq.mjs} +11 -11
- package/dist/{dirty-BTHmduNN.mjs → dirty-D7HBPBUv.mjs} +8 -8
- package/dist/{docker-m-PE5frg.mjs → docker-pmX_H1ii.mjs} +3 -3
- package/dist/{eid-CANLCfwr.mjs → eid-DVc2ebwX.mjs} +1 -1
- package/dist/{export-hg-kX3d5.mjs → export-Bc6K_0BX.mjs} +11 -11
- package/dist/field-ilGuKrWV.mjs +18 -0
- package/dist/{fields-B_QxZGbf.mjs → fields-CNsoNqGV.mjs} +5 -5
- package/dist/{flag-pair-Byca1x-Q.mjs → flag-pair-DtR1AiBQ.mjs} +1 -1
- package/dist/{get-Dxyz8B08.mjs → get-BL4-XDrc.mjs} +5 -5
- package/dist/{get-DQjJhZRm.mjs → get-BS3kP2wR.mjs} +5 -5
- package/dist/{get-BD7Vyb-k.mjs → get-BjzVuL-u.mjs} +6 -6
- package/dist/{get-CONAtf64.mjs → get-CKGYT_h9.mjs} +6 -6
- package/dist/{get-BBcrLO_W.mjs → get-CX_Ck6Nk.mjs} +5 -5
- package/dist/{get-huQZIpRI.mjs → get-CYZbQcOF.mjs} +6 -6
- package/dist/{get-Bp_SqgyX.mjs → get-CkYr30at.mjs} +5 -5
- package/dist/{get-D-ZPuk_T.mjs → get-Cxo5iHU_.mjs} +5 -5
- package/dist/{get-TRJ6QpYc.mjs → get-DfKxQ_oa.mjs} +5 -5
- package/dist/{get-lPU3jSyo.mjs → get-Dm4j4-C2.mjs} +5 -5
- package/dist/{get-slUdOmG4.mjs → get-IBjYDviZ.mjs} +6 -6
- package/dist/{get-BZcSoeSY.mjs → get-pklCz_0L.mjs} +5 -5
- package/dist/{get-run-WxHde6zO.mjs → get-run-R1jpsFMw.mjs} +5 -5
- package/dist/{has-remote-changes-CQCior6b.mjs → has-remote-changes-B5tQE21X.mjs} +8 -8
- package/dist/{import-y-7_YKQH.mjs → import-DdzCXmMi.mjs} +11 -11
- package/dist/{input-a1VFtFBh.mjs → input-ikCiip6x.mjs} +1 -1
- package/dist/is-dirty-BVGP-zkM.mjs +10 -0
- package/dist/{is-dirty-ZgX5mDJq.mjs → is-dirty-bh6hmk9i.mjs} +5 -5
- package/dist/{items-ZP8yJJTA.mjs → items-CrWoxVHo.mjs} +6 -6
- package/dist/{key-UvYm9cOw.mjs → key-NDEARu2L.mjs} +1 -1
- package/dist/{license-2t70RAE_.mjs → license-BOayhs8F.mjs} +3 -3
- package/dist/{list-ehmXcC-t.mjs → list-BQV5NshX.mjs} +4 -4
- package/dist/{list-DO-Dxbq3.mjs → list-BYCK1KmR.mjs} +5 -5
- package/dist/{list-BAEch4jn.mjs → list-BjBJzP7V.mjs} +5 -5
- package/dist/{list-DZKxyQw1.mjs → list-Cou-Ac2l.mjs} +4 -4
- package/dist/{list-CQVnPfi1.mjs → list-Cxwr9_8m.mjs} +5 -5
- package/dist/{list-BHzsTJmU.mjs → list-D3jKvEiW.mjs} +4 -4
- package/dist/{list-B2dOeeua.mjs → list-D4LvgIyR.mjs} +4 -4
- package/dist/{list-CV-cfKnu.mjs → list-D6eczTGQ.mjs} +4 -4
- package/dist/{list-BmI-BGK_.mjs → list-DLypWjAD.mjs} +5 -5
- package/dist/{list-dSoWq6_Y.mjs → list-IW7vnt50.mjs} +4 -4
- package/dist/{list-BsmGs2Wf.mjs → list-MWSTuRJt.mjs} +4 -4
- package/dist/{list-VIZSxtf3.mjs → list-Wgyl5jTw.mjs} +5 -5
- package/dist/{list-DjO6IxiH.mjs → list-gW9tCjmY.mjs} +5 -5
- package/dist/{login-D4a3b52m.mjs → login-Ce_o5MLd.mjs} +6 -6
- package/dist/{logout-BhO5sEm8.mjs → logout-BBmwrBSd.mjs} +5 -5
- package/dist/{logs-DS6fKVNx.mjs → logs-BH3YzGoR.mjs} +6 -6
- package/dist/{manifest-DalRNBAy.mjs → manifest-VVjycZCe.mjs} +2 -2
- package/dist/measure-Bb_do8gt.mjs +19 -0
- package/dist/{metadata-CKuOfkMS.mjs → metadata-CtHgIDV0.mjs} +5 -5
- package/dist/{metadata-DN4Mqj7s.mjs → metadata-qxadwd31.mjs} +5 -5
- package/dist/{package-BPEXn1Of.mjs → package-_D_P9V4h.mjs} +1 -1
- package/dist/{parse-id-BqO2IY1b.mjs → parse-id-Dy4xSeLf.mjs} +1 -1
- package/dist/{parse-ref-Oyf_TeW-.mjs → parse-ref-FBB8uGZw.mjs} +1 -1
- package/dist/{parse-schemas-CJ0dEiTk.mjs → parse-schemas-uB5tn5jL.mjs} +3 -3
- package/dist/{poll-DJWznjP9.mjs → poll-DcT586gB.mjs} +2 -2
- package/dist/{poll-task-CXSagHdO.mjs → poll-task-DgGZa-HF.mjs} +4 -4
- package/dist/{errors-DqPLKwoK.mjs → predicates-DiIiS3k7.mjs} +7 -1
- package/dist/{preflight-DQv-qq5r.mjs → preflight-DBQDG_jz.mjs} +4 -4
- package/dist/{prompt-g87Vvbx8.mjs → prompt-Bf3DQ-qE.mjs} +1 -1
- package/dist/{provision-DXr7ZG8I.mjs → provision-RmlAclSj.mjs} +14 -14
- package/dist/ps-BGzvw2a9.mjs +10 -0
- package/dist/{ps-DWXhgZVf.mjs → ps-cwwTN6HT.mjs} +3 -3
- package/dist/{query-q7b2hzrE.mjs → query-DhWf5_XU.mjs} +6 -6
- package/dist/query-RJ_1ZaP2.mjs +89 -0
- package/dist/remote-sync-Wo7mzKgy.mjs +28 -0
- package/dist/{remove-Brcrdtfx.mjs → remove-CrAURrqj.mjs} +5 -5
- package/dist/{remove-32Z7lUm6.mjs → remove-D9ZM9DBZ.mjs} +8 -8
- package/dist/{remove-collection-D3RQTzDz.mjs → remove-collection-B2sz1JdF.mjs} +10 -10
- package/dist/{render-D8GOkk4P.mjs → render-DXv-D6fU.mjs} +2 -8
- package/dist/{rescan-values-BpRkyMZp.mjs → rescan-values-CQq-jhLD.mjs} +5 -5
- package/dist/{run-DGMovJHI.mjs → run-NLdh0m0D.mjs} +7 -7
- package/dist/{runs-DRnBkXmG.mjs → runs-oT0ELgMP.mjs} +5 -5
- package/dist/{runtime-Dwaw7sqU.mjs → runtime-C6l1Ju-X.mjs} +49 -5
- package/dist/{schema-tables-C-Rslrnl.mjs → schema-tables-BLYcUDzk.mjs} +5 -5
- package/dist/{schemas-DzUHirII.mjs → schemas-BVVEdKjp.mjs} +5 -5
- package/dist/{search-CKie8hjZ.mjs → search-BFam2-sx.mjs} +5 -5
- package/dist/segment-B0M4sLKF.mjs +19 -0
- package/dist/{set-xF9CP68x.mjs → set-6L9BIstn.mjs} +8 -8
- package/dist/{set-DuwiAGUc.mjs → set-KA89W3VR.mjs} +6 -6
- package/dist/{setting-DWoyNzLC.mjs → setting-DXD5ho6c.mjs} +3 -3
- package/dist/{setup-Cn54kGu2.mjs → setup-CFjHjBdY.mjs} +6 -6
- package/dist/snippet-Cnk5Slje.mjs +19 -0
- package/dist/{start-DpzDRfxQ.mjs → start-tLaBkkBI.mjs} +9 -9
- package/dist/{stash-BT5wUeNt.mjs → stash-DzHfWm1n.mjs} +9 -9
- package/dist/{status-g9cjxsHd.mjs → status-51muEP07.mjs} +4 -4
- package/dist/{status-DKMAE9zo.mjs → status-B5TB381j.mjs} +4 -4
- package/dist/{status-D7PR1KJp.mjs → status-EclMz7Yv.mjs} +10 -10
- package/dist/{stop-Da7M-CRc.mjs → stop-C4bFdYps.mjs} +8 -8
- package/dist/{summary-3quv6ksc.mjs → summary-BNdAw8Te.mjs} +5 -5
- package/dist/{sync-schema-HcO7DSYi.mjs → sync-schema-YQWrC6jD.mjs} +5 -5
- package/dist/table-Dx13ukJ1.mjs +19 -0
- package/dist/transform-BaknXzIk.mjs +24 -0
- package/dist/transform-job-Cbg7x7Wv.mjs +19 -0
- package/dist/{translate-Z7f_VDDn.mjs → translate-DGO4Vbq8.mjs} +7 -7
- package/dist/{tree-DZNnXYjb.mjs → tree-DFBClf8v.mjs} +4 -4
- package/dist/{update-fRqtvI5G.mjs → update-BFNyczga.mjs} +11 -11
- package/dist/{update-CPc3u-aB.mjs → update-BGQ4CrAK.mjs} +8 -8
- package/dist/{update-C9N9kLkB.mjs → update-BWanyZkB.mjs} +7 -7
- package/dist/{update-CKrsR2vZ.mjs → update-BgHAOPmj.mjs} +14 -14
- package/dist/{update--v4lsiLM.mjs → update-BoyiATwc.mjs} +10 -10
- package/dist/{update-D2J1WtKn.mjs → update-C4oIEQ0a.mjs} +7 -7
- package/dist/{update-DE0DPo7n.mjs → update-D7phI8Ix.mjs} +15 -10
- package/dist/{update-CfLDXi8m.mjs → update-DMMSjt0B.mjs} +10 -10
- package/dist/{update-BmvyguU9.mjs → update-Dxyn8J5P.mjs} +14 -9
- package/dist/{update-dashcard-28PIWnwP.mjs → update-dashcard-CdoKnQEk.mjs} +7 -7
- package/dist/{update-D_2eMRda.mjs → update-owCnAziw.mjs} +7 -7
- package/dist/{url-yVWrLimZ.mjs → url-mHVfZ4uL.mjs} +7 -7
- package/dist/{uuid-D9rbiLTK.mjs → uuid-BnDZbdAN.mjs} +4 -4
- package/dist/{validate-DlXXSNQ-.mjs → validate-GPoiblzw.mjs} +22 -105
- package/dist/validate-query-DQDzQCQv.mjs +37 -0
- package/dist/{values-K_-V36xz.mjs → values-CmTVidt-.mjs} +5 -5
- package/dist/{wait-C2S1JuUq.mjs → wait-DWDeV8l6.mjs} +10 -10
- package/dist/{wait-flags-Jdygg1yT.mjs → wait-flags-DGvYn3LJ.mjs} +2 -2
- package/dist/{wait-Ch__WrKD.mjs → wait-rHAJDRWM.mjs} +2 -2
- package/dist/workspace-BBzIcZC3.mjs +24 -0
- package/dist/{workspace-jfsegcq8.mjs → workspace-DVuqKJGG.mjs} +6 -16
- package/dist/{workspace-credentials-U6bazYof.mjs → workspace-credentials-B6BL-X0d.mjs} +1 -1
- package/package.json +1 -1
- package/dist/add-collection-Bw_KL6EH.mjs +0 -11
- package/dist/auth-DCoGwYKi.mjs +0 -19
- package/dist/card-CtK41cpb.mjs +0 -20
- package/dist/collection-CWYozp35.mjs +0 -19
- package/dist/create-D_WX4JYl.mjs +0 -40
- package/dist/create-o_cxdysF.mjs +0 -40
- package/dist/dashboard-GeAXKl0W.mjs +0 -20
- package/dist/db-2G-o2xtr.mjs +0 -22
- package/dist/field-CzZEYFp6.mjs +0 -18
- package/dist/is-dirty-CJ5aaXXs.mjs +0 -10
- package/dist/measure-Bagaha3J.mjs +0 -19
- package/dist/ps-NVWIylrB.mjs +0 -10
- package/dist/query-DR0R8J_B.mjs +0 -94
- package/dist/segment-C66MvGDy.mjs +0 -19
- package/dist/snippet-TOO4F2a8.mjs +0 -19
- package/dist/sync-CcYMBXTo.mjs +0 -28
- package/dist/table-CpsE5VUF.mjs +0 -19
- package/dist/transform-CUxV3WSi.mjs +0 -24
- package/dist/transform-job-Dry0r1Xz.mjs +0 -19
- package/dist/validate-query-Bc1-_glK.mjs +0 -21
- package/dist/workspace-DAlhADfI.mjs +0 -24
- /package/dist/{segment-D0XmKSU2.mjs → segment-BMrUBz94.mjs} +0 -0
- /package/dist/{setting-DH7Kgx94.mjs → setting-CTaAeMci.mjs} +0 -0
- /package/dist/{snippet-CBTV07b-.mjs → snippet-Dw0Sjzkr.mjs} +0 -0
package/README.md
CHANGED
|
@@ -695,29 +695,33 @@ metabase segment get 1 --json --full
|
|
|
695
695
|
```sh
|
|
696
696
|
cat segment.json | metabase segment create
|
|
697
697
|
metabase segment create --file segment.json
|
|
698
|
+
metabase segment create --file segment.json --skip-validate
|
|
698
699
|
```
|
|
699
700
|
|
|
700
|
-
| Flag
|
|
701
|
-
|
|
|
702
|
-
| `--body <json>`
|
|
703
|
-
| `--file <path>`
|
|
701
|
+
| Flag | Description |
|
|
702
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
703
|
+
| `--body <json>` | Inline JSON body. |
|
|
704
|
+
| `--file <path>` | Path to JSON body file. |
|
|
705
|
+
| `--skip-validate` | Skip the local MBQL 5 pre-flight validation; let the server be the authority. Use only when the bundled schema disagrees with what the server accepts. |
|
|
704
706
|
|
|
705
|
-
Body fields: `name` (required), `table_id` (required positive integer), `definition` (required MBQL filter object), `description` (optional).
|
|
707
|
+
Body fields: `name` (required), `table_id` (required positive integer), `definition` (required MBQL filter object), `description` (optional). If `definition` is MBQL 5 (`lib/type: "mbql/query"`) it goes through the same pre-flight validation as `card create` and `metabase query`; pass `--skip-validate` to bypass.
|
|
706
708
|
|
|
707
709
|
### `metabase segment update <id>`
|
|
708
710
|
|
|
709
|
-
Patch a segment. The body MUST include `revision_message`. Other keys are partial: `name`, `definition`, `archived`, `description`, `caveats`, `points_of_interest`, `show_in_getting_started`.
|
|
711
|
+
Patch a segment. The body MUST include `revision_message`. Other keys are partial: `name`, `definition`, `archived`, `description`, `caveats`, `points_of_interest`, `show_in_getting_started`. If `definition` is MBQL 5 (`lib/type: "mbql/query"`) it goes through the same pre-flight validation as `segment create`; pass `--skip-validate` to bypass.
|
|
710
712
|
|
|
711
713
|
```sh
|
|
712
714
|
cat patch.json | metabase segment update 1
|
|
713
715
|
metabase segment update 1 --file patch.json
|
|
714
716
|
metabase segment update 1 --body '{"name":"renamed","revision_message":"rename"}'
|
|
717
|
+
metabase segment update 1 --file patch.json --skip-validate
|
|
715
718
|
```
|
|
716
719
|
|
|
717
|
-
| Flag
|
|
718
|
-
|
|
|
719
|
-
| `--body <json>`
|
|
720
|
-
| `--file <path>`
|
|
720
|
+
| Flag | Description |
|
|
721
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
722
|
+
| `--body <json>` | Inline JSON body. |
|
|
723
|
+
| `--file <path>` | Path to JSON body file. |
|
|
724
|
+
| `--skip-validate` | Skip the local MBQL 5 pre-flight validation; let the server be the authority. Use only when the bundled schema disagrees with what the server accepts. |
|
|
721
725
|
|
|
722
726
|
### `metabase segment archive <id>`
|
|
723
727
|
|
|
@@ -755,29 +759,33 @@ metabase measure get 1 --json --full
|
|
|
755
759
|
```sh
|
|
756
760
|
cat measure.json | metabase measure create
|
|
757
761
|
metabase measure create --file measure.json
|
|
762
|
+
metabase measure create --file measure.json --skip-validate
|
|
758
763
|
```
|
|
759
764
|
|
|
760
|
-
| Flag
|
|
761
|
-
|
|
|
762
|
-
| `--body <json>`
|
|
763
|
-
| `--file <path>`
|
|
765
|
+
| Flag | Description |
|
|
766
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
767
|
+
| `--body <json>` | Inline JSON body. |
|
|
768
|
+
| `--file <path>` | Path to JSON body file. |
|
|
769
|
+
| `--skip-validate` | Skip the local MBQL 5 pre-flight validation; let the server be the authority. Use only when the bundled schema disagrees with what the server accepts. |
|
|
764
770
|
|
|
765
|
-
Body fields: `name` (required), `table_id` (required positive integer), `definition` (required MBQL aggregation object), `description` (optional).
|
|
771
|
+
Body fields: `name` (required), `table_id` (required positive integer), `definition` (required MBQL aggregation object), `description` (optional). If `definition` is MBQL 5 (`lib/type: "mbql/query"`) it goes through the same pre-flight validation as `card create` and `metabase query`; pass `--skip-validate` to bypass.
|
|
766
772
|
|
|
767
773
|
### `metabase measure update <id>`
|
|
768
774
|
|
|
769
|
-
Patch a measure. The body MUST include `revision_message`. Other keys are partial: `name`, `definition`, `archived`, `description`.
|
|
775
|
+
Patch a measure. The body MUST include `revision_message`. Other keys are partial: `name`, `definition`, `archived`, `description`. If `definition` is MBQL 5 (`lib/type: "mbql/query"`) it goes through the same pre-flight validation as `measure create`; pass `--skip-validate` to bypass.
|
|
770
776
|
|
|
771
777
|
```sh
|
|
772
778
|
cat patch.json | metabase measure update 1
|
|
773
779
|
metabase measure update 1 --file patch.json
|
|
774
780
|
metabase measure update 1 --body '{"name":"renamed","revision_message":"rename"}'
|
|
781
|
+
metabase measure update 1 --file patch.json --skip-validate
|
|
775
782
|
```
|
|
776
783
|
|
|
777
|
-
| Flag
|
|
778
|
-
|
|
|
779
|
-
| `--body <json>`
|
|
780
|
-
| `--file <path>`
|
|
784
|
+
| Flag | Description |
|
|
785
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
786
|
+
| `--body <json>` | Inline JSON body. |
|
|
787
|
+
| `--file <path>` | Path to JSON body file. |
|
|
788
|
+
| `--skip-validate` | Skip the local MBQL 5 pre-flight validation; let the server be the authority. Use only when the bundled schema disagrees with what the server accepts. |
|
|
781
789
|
|
|
782
790
|
### `metabase measure archive <id>`
|
|
783
791
|
|
|
@@ -924,73 +932,73 @@ metabase search products --archived
|
|
|
924
932
|
| `--table-db-id` | Restrict to items on a given database id. |
|
|
925
933
|
| `--verified` | Only verified content. |
|
|
926
934
|
|
|
927
|
-
## Sync
|
|
935
|
+
## Remote Sync
|
|
928
936
|
|
|
929
|
-
Drive Metabase Enterprise Remote Sync (`/api/ee/remote-sync`) — import / export Metabase content against a configured git remote, inspect dirty state, and manage branches. All sync commands require an active EE token and superuser credentials.
|
|
937
|
+
Drive Metabase Enterprise Remote Sync (`/api/ee/remote-sync`) — import / export Metabase content against a configured git remote, inspect dirty state, and manage branches. All remote-sync commands require an active EE token and superuser credentials.
|
|
930
938
|
|
|
931
|
-
### `metabase sync status`
|
|
939
|
+
### `metabase remote-sync status`
|
|
932
940
|
|
|
933
941
|
Roll up the current sync state in one call: configured branch, dirty flag, and the most recent sync task (or `null` if none has ever run).
|
|
934
942
|
|
|
935
943
|
```sh
|
|
936
|
-
metabase sync status
|
|
937
|
-
metabase sync status --json
|
|
944
|
+
metabase remote-sync status
|
|
945
|
+
metabase remote-sync status --json
|
|
938
946
|
```
|
|
939
947
|
|
|
940
|
-
### `metabase sync is-dirty`
|
|
948
|
+
### `metabase remote-sync is-dirty`
|
|
941
949
|
|
|
942
950
|
Boolean check for whether any synced collection has unsynced local changes.
|
|
943
951
|
|
|
944
952
|
```sh
|
|
945
|
-
metabase sync is-dirty --json
|
|
953
|
+
metabase remote-sync is-dirty --json
|
|
946
954
|
```
|
|
947
955
|
|
|
948
|
-
### `metabase sync has-remote-changes`
|
|
956
|
+
### `metabase remote-sync has-remote-changes`
|
|
949
957
|
|
|
950
958
|
Compare the latest version on the remote branch against the version Metabase last imported. Cached for a short TTL server-side; pass `--force-refresh` to bypass.
|
|
951
959
|
|
|
952
960
|
```sh
|
|
953
|
-
metabase sync has-remote-changes
|
|
954
|
-
metabase sync has-remote-changes --force-refresh --json
|
|
961
|
+
metabase remote-sync has-remote-changes
|
|
962
|
+
metabase remote-sync has-remote-changes --force-refresh --json
|
|
955
963
|
```
|
|
956
964
|
|
|
957
965
|
| Flag | Description |
|
|
958
966
|
| ----------------- | --------------------------------------------------- |
|
|
959
967
|
| `--force-refresh` | Bypass the in-memory cache and re-check the remote. |
|
|
960
968
|
|
|
961
|
-
### `metabase sync dirty`
|
|
969
|
+
### `metabase remote-sync dirty`
|
|
962
970
|
|
|
963
971
|
List every object that has unsynced local changes (compact list envelope; `--full` for the per-row payload).
|
|
964
972
|
|
|
965
973
|
```sh
|
|
966
|
-
metabase sync dirty
|
|
967
|
-
metabase sync dirty --json
|
|
974
|
+
metabase remote-sync dirty
|
|
975
|
+
metabase remote-sync dirty --json
|
|
968
976
|
```
|
|
969
977
|
|
|
970
|
-
### `metabase sync current-task`
|
|
978
|
+
### `metabase remote-sync current-task`
|
|
971
979
|
|
|
972
980
|
Fetch the most recent sync task. Renders `{ status: "idle" }` when no task has ever run, otherwise the full task with its hydrated `status`.
|
|
973
981
|
|
|
974
982
|
```sh
|
|
975
|
-
metabase sync current-task
|
|
976
|
-
metabase sync current-task --json
|
|
983
|
+
metabase remote-sync current-task
|
|
984
|
+
metabase remote-sync current-task --json
|
|
977
985
|
```
|
|
978
986
|
|
|
979
|
-
### `metabase sync cancel-task`
|
|
987
|
+
### `metabase remote-sync cancel-task`
|
|
980
988
|
|
|
981
989
|
Cancel the currently running sync task. Fails with HTTP 400 if no task is running.
|
|
982
990
|
|
|
983
991
|
```sh
|
|
984
|
-
metabase sync cancel-task --json
|
|
992
|
+
metabase remote-sync cancel-task --json
|
|
985
993
|
```
|
|
986
994
|
|
|
987
|
-
### `metabase sync wait`
|
|
995
|
+
### `metabase remote-sync wait`
|
|
988
996
|
|
|
989
997
|
Poll `/current-task` until it reaches a terminal status (`successful`, `errored`, `cancelled`, `timed-out`, `conflict`). Exits 0 on `successful` or `cancelled`; exits 1 on `errored` / `timed-out` / `conflict`. Returns immediately with `{ status: "idle" }` if no task is running.
|
|
990
998
|
|
|
991
999
|
```sh
|
|
992
|
-
metabase sync wait
|
|
993
|
-
metabase sync wait --timeout 300000 --json
|
|
1000
|
+
metabase remote-sync wait
|
|
1001
|
+
metabase remote-sync wait --timeout 300000 --json
|
|
994
1002
|
```
|
|
995
1003
|
|
|
996
1004
|
| Flag | Description |
|
|
@@ -998,14 +1006,14 @@ metabase sync wait --timeout 300000 --json
|
|
|
998
1006
|
| `--timeout <ms>` | Polling timeout in ms (default 600000). |
|
|
999
1007
|
| `--interval <ms>` | Polling interval in ms (default 2000). |
|
|
1000
1008
|
|
|
1001
|
-
### `metabase sync import`
|
|
1009
|
+
### `metabase remote-sync import`
|
|
1002
1010
|
|
|
1003
1011
|
Import content from the configured git remote into Metabase (repo → Metabase). Auto-polls until the resulting task reaches a terminal status; pass `--no-wait` to return immediately after kickoff.
|
|
1004
1012
|
|
|
1005
1013
|
```sh
|
|
1006
|
-
metabase sync import
|
|
1007
|
-
metabase sync import --branch main --json
|
|
1008
|
-
metabase sync import --force --no-wait
|
|
1014
|
+
metabase remote-sync import
|
|
1015
|
+
metabase remote-sync import --branch main --json
|
|
1016
|
+
metabase remote-sync import --force --no-wait
|
|
1009
1017
|
```
|
|
1010
1018
|
|
|
1011
1019
|
| Flag | Description |
|
|
@@ -1016,14 +1024,14 @@ metabase sync import --force --no-wait
|
|
|
1016
1024
|
| `--timeout <ms>` | Polling timeout in ms (default 600000). Used with `--wait`. |
|
|
1017
1025
|
| `--interval <ms>` | Polling interval in ms (default 2000). Used with `--wait`. |
|
|
1018
1026
|
|
|
1019
|
-
### `metabase sync export`
|
|
1027
|
+
### `metabase remote-sync export`
|
|
1020
1028
|
|
|
1021
1029
|
Export Metabase changes back to the configured git remote (Metabase → repo). Auto-polls by default.
|
|
1022
1030
|
|
|
1023
1031
|
```sh
|
|
1024
|
-
metabase sync export -m "update dashboards"
|
|
1025
|
-
metabase sync export --branch main --json
|
|
1026
|
-
metabase sync export --no-wait
|
|
1032
|
+
metabase remote-sync export -m "update dashboards"
|
|
1033
|
+
metabase remote-sync export --branch main --json
|
|
1034
|
+
metabase remote-sync export --no-wait
|
|
1027
1035
|
```
|
|
1028
1036
|
|
|
1029
1037
|
| Flag | Description |
|
|
@@ -1035,13 +1043,13 @@ metabase sync export --no-wait
|
|
|
1035
1043
|
| `--timeout <ms>` | Polling timeout in ms (default 600000). Used with `--wait`. |
|
|
1036
1044
|
| `--interval <ms>` | Polling interval in ms (default 2000). Used with `--wait`. |
|
|
1037
1045
|
|
|
1038
|
-
### `metabase sync stash`
|
|
1046
|
+
### `metabase remote-sync stash`
|
|
1039
1047
|
|
|
1040
1048
|
Export the current Metabase state to a NEW branch on the remote and switch sync to it. Requires `remote-sync-type` to be `read-write`.
|
|
1041
1049
|
|
|
1042
1050
|
```sh
|
|
1043
|
-
metabase sync stash --new-branch wip
|
|
1044
|
-
metabase sync stash --new-branch wip -m "work in progress" --json
|
|
1051
|
+
metabase remote-sync stash --new-branch wip
|
|
1052
|
+
metabase remote-sync stash --new-branch wip -m "work in progress" --json
|
|
1045
1053
|
```
|
|
1046
1054
|
|
|
1047
1055
|
| Flag | Description |
|
|
@@ -1052,41 +1060,41 @@ metabase sync stash --new-branch wip -m "work in progress" --json
|
|
|
1052
1060
|
| `--timeout <ms>` | Polling timeout in ms. Used with `--wait`. |
|
|
1053
1061
|
| `--interval <ms>` | Polling interval in ms. Used with `--wait`. |
|
|
1054
1062
|
|
|
1055
|
-
### `metabase sync branches`
|
|
1063
|
+
### `metabase remote-sync branches`
|
|
1056
1064
|
|
|
1057
1065
|
List branches available on the configured git remote.
|
|
1058
1066
|
|
|
1059
1067
|
```sh
|
|
1060
|
-
metabase sync branches --json
|
|
1068
|
+
metabase remote-sync branches --json
|
|
1061
1069
|
```
|
|
1062
1070
|
|
|
1063
|
-
### `metabase sync create-branch <name>`
|
|
1071
|
+
### `metabase remote-sync create-branch <name>`
|
|
1064
1072
|
|
|
1065
1073
|
Create a new branch on the git remote (from the last imported version) and switch sync to it.
|
|
1066
1074
|
|
|
1067
1075
|
```sh
|
|
1068
|
-
metabase sync create-branch feat/dashboards
|
|
1069
|
-
metabase sync create-branch feat/x --json
|
|
1076
|
+
metabase remote-sync create-branch feat/dashboards
|
|
1077
|
+
metabase remote-sync create-branch feat/x --json
|
|
1070
1078
|
```
|
|
1071
1079
|
|
|
1072
|
-
### `metabase sync add-collection <id>`
|
|
1080
|
+
### `metabase remote-sync add-collection <id>`
|
|
1073
1081
|
|
|
1074
1082
|
Mark a collection as remote-synced. The toggle cascades to every descendant by `location` prefix, so flagging a parent flags the whole subtree. Returns `{ success, task_id? }`; `task_id` only appears when the toggle triggers a follow-up task (e.g. a finalization import after switching to read-only mode).
|
|
1075
1083
|
|
|
1076
1084
|
```sh
|
|
1077
|
-
metabase sync add-collection 12
|
|
1078
|
-
metabase sync add-collection 12 --json --profile prod
|
|
1085
|
+
metabase remote-sync add-collection 12
|
|
1086
|
+
metabase remote-sync add-collection 12 --json --profile prod
|
|
1079
1087
|
```
|
|
1080
1088
|
|
|
1081
1089
|
The server rejects toggles while `remote-sync-type` is `read-only` (the install default). Switch first with `metabase setting set remote-sync-type '"read-write"'`.
|
|
1082
1090
|
|
|
1083
|
-
### `metabase sync remove-collection <id>`
|
|
1091
|
+
### `metabase remote-sync remove-collection <id>`
|
|
1084
1092
|
|
|
1085
1093
|
Unmark a collection as remote-synced. Same cascade and same `read-only` precondition as `add-collection`.
|
|
1086
1094
|
|
|
1087
1095
|
```sh
|
|
1088
|
-
metabase sync remove-collection 12
|
|
1089
|
-
metabase sync remove-collection 12 --json --profile prod
|
|
1096
|
+
metabase remote-sync remove-collection 12
|
|
1097
|
+
metabase remote-sync remove-collection 12 --json --profile prod
|
|
1090
1098
|
```
|
|
1091
1099
|
|
|
1092
1100
|
## Workspaces
|
|
@@ -1332,25 +1340,20 @@ metabase eid translate --body '{"entity_ids":{"card":["abc123XYZ"]}}'
|
|
|
1332
1340
|
|
|
1333
1341
|
Run an MBQL 5 query with built-in schema validation. Three modes — discover the schema (`--print-schema`), validate without sending (`--dry-run`), run.
|
|
1334
1342
|
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
- **Internal MBQL** (default) — numeric IDs (`database: 1`, `source-table: 7`). POSTs to `/api/dataset`. This is what every existing Metabase API endpoint accepts.
|
|
1338
|
-
- **External MBQL** (`--external`) — string-id FKs (`database: "My DB"`, `source-table: ["My DB", null, "orders"]`). POSTs to `/api/dataset/external` (forward-looking representations endpoint).
|
|
1339
|
-
|
|
1340
|
-
External and internal MBQL are structurally identical; only the ID types differ. The bundled query schema is synced from `@metabase/representations`; the internal validator overrides `id.yaml` to require positive integers for every ID `$def`.
|
|
1343
|
+
MBQL 5 bodies use numeric IDs (`database: 1`, `source-table: 7`) and POST to `/api/dataset`. The bundled query schema is synced from `@metabase/representations`; `id.yaml` is overridden to require positive integers for every ID `$def`.
|
|
1341
1344
|
|
|
1342
1345
|
```sh
|
|
1343
|
-
metabase query --print-schema #
|
|
1344
|
-
metabase query --print-schema --external # string-FK variant
|
|
1346
|
+
metabase query --print-schema # JSON Schema bundle
|
|
1345
1347
|
cat q.json | metabase query --dry-run # validate, no network
|
|
1346
1348
|
metabase query --file q.json
|
|
1347
|
-
metabase query --file q.json --external
|
|
1348
1349
|
metabase query --file q.json --skip-validate # bypass pre-flight; let server reject
|
|
1349
1350
|
```
|
|
1350
1351
|
|
|
1351
1352
|
Body sources: `--file`, `--body`, or stdin (exactly one). Body is JSON.
|
|
1352
1353
|
|
|
1353
|
-
|
|
1354
|
+
Any non-MBQL 5 body skips pre-flight automatically — legacy MBQL 4 (`{ "type": "query", "database": N, "query": { "source-table": T, ... } }`), legacy native (`{ "type": "native", "database": N, "native": { "query": "..." } }`), or any other shape that doesn't carry `"lib/type": "mbql/query"`. The bundled schema only models MBQL 5; `/api/dataset` normalizes the rest server-side via `lib-be/normalize-query` (the same normalizer that backs `card create` / `transform create`), so behavior is symmetric across endpoints. `--dry-run` on a non-MBQL 5 body emits `{ ok: true, errors: [] }` (no schema applies). The double-wrap footgun — an MBQL 5 query nested inside a `{type:"query", query:…}` envelope — is still rejected with a `ConfigError` before send.
|
|
1355
|
+
|
|
1356
|
+
`--skip-validate` is an escape hatch when the bundled schema disagrees with what the server actually accepts (drift, false negative, edge case) for MBQL 5 bodies. Validation is skipped entirely and the body is sent as-is. Mutually exclusive with `--dry-run` (which is itself the validation mode).
|
|
1354
1357
|
|
|
1355
1358
|
Exit codes:
|
|
1356
1359
|
|
|
@@ -1360,18 +1363,18 @@ Exit codes:
|
|
|
1360
1363
|
|
|
1361
1364
|
Output by mode:
|
|
1362
1365
|
|
|
1363
|
-
- `--print-schema` — `{
|
|
1366
|
+
- `--print-schema` — `{ schema, defs: { "id.yaml", "parameter.yaml", "ref.yaml", "temporal_bucketing.yaml" } }`. The query schema's `$ref`s point into the `defs` namespace by file path; an agent can either feed the bundle directly into Ajv (`addSchema(defs["id.yaml"], "id.yaml")` etc., then `compile(schema)`) or read it as documentation.
|
|
1364
1367
|
- `--dry-run` — `{ ok: boolean, errors: { path: string, message: string }[] }`. `path` is a JSON Pointer into the body, `message` is the Ajv error string.
|
|
1365
1368
|
- Run failure (no `--dry-run`) — same `{ ok, errors }` envelope on stdout, exit 2, no request made.
|
|
1366
1369
|
- Run success — the streamed `CardQueryResult`.
|
|
1367
1370
|
|
|
1368
|
-
### MBQL 5 pre-flight in `card create`/`update` and `
|
|
1371
|
+
### MBQL 5 pre-flight in `card create`/`update`, `transform create`/`update`, `measure create`/`update`, and `segment create`/`update`
|
|
1369
1372
|
|
|
1370
|
-
When the embedded query (`card.dataset_query`,
|
|
1373
|
+
When the embedded query (`card.dataset_query`, `transform.source.query` for `source.type: "query"`, or `measure.definition` / `segment.definition`) is MBQL 5 (`lib/type: "mbql/query"`), it is pre-flight-validated against the same schema as `metabase query`. Validation failure: `{ ok, errors }` envelope on stdout, exit 2, request not made. MBQL 4 (legacy) bodies and Python transform sources skip validation — they're still accepted by the server and we don't ship a schema for them.
|
|
1371
1374
|
|
|
1372
|
-
Pass `--skip-validate` to bypass the pre-flight on `card create`, `card update`, `transform create`, or `
|
|
1375
|
+
Pass `--skip-validate` to bypass the pre-flight on any of `card create`, `card update`, `transform create`, `transform update`, `measure create`, `measure update`, `segment create`, or `segment update` — the body is sent as-is and the server is the authority. Same escape hatch as on `metabase query`; use only when the bundled schema disagrees with what the server actually accepts.
|
|
1373
1376
|
|
|
1374
|
-
Agent discovery path: `metabase __manifest` lists every command's args and description; the description for `card create`/`update` and `
|
|
1377
|
+
Agent discovery path: `metabase __manifest` lists every command's args and description; the description for `card create`/`update`, `transform create`/`update`, `measure create`/`update`, and `segment create`/`update` references `metabase query --print-schema` so an agent can fetch the validating schema directly.
|
|
1375
1378
|
|
|
1376
1379
|
The bundled query schema is synced from a pinned `@metabase/representations` release via `bun run sync:representations`; CI guards against drift.
|
|
1377
1380
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import "./parse-id-Dy4xSeLf.mjs";
|
|
7
|
+
import "./poll-task-DgGZa-HF.mjs";
|
|
8
|
+
import "./poll-DcT586gB.mjs";
|
|
9
|
+
import { SyncSettingsUpdateResult, add_collection_default, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-FNN_Arg9.mjs";
|
|
10
|
+
|
|
11
|
+
export { add_collection_default as default };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { renderItem } from "./render-
|
|
2
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
3
|
-
import { parseId } from "./parse-id-
|
|
4
|
-
import { REMOTE_SYNC_PATHS } from "./poll-task-
|
|
1
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
2
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C6l1Ju-X.mjs";
|
|
3
|
+
import { parseId } from "./parse-id-Dy4xSeLf.mjs";
|
|
4
|
+
import { REMOTE_SYNC_PATHS } from "./poll-task-DgGZa-HF.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
|
|
7
|
-
//#region src/commands/sync/add-collection.ts
|
|
7
|
+
//#region src/commands/remote-sync/add-collection.ts
|
|
8
8
|
const SyncSettingsUpdateResult = z.object({
|
|
9
9
|
success: z.boolean(),
|
|
10
10
|
task_id: z.number().int().positive().optional()
|
|
@@ -41,7 +41,7 @@ var add_collection_default = defineMetabaseCommand({
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
outputSchema: SyncSettingsUpdateResult,
|
|
44
|
-
examples: ["metabase sync add-collection 12", "metabase sync add-collection 12 --json --profile prod"],
|
|
44
|
+
examples: ["metabase remote-sync add-collection 12", "metabase remote-sync add-collection 12 --json --profile prod"],
|
|
45
45
|
async run({ args, ctx, getClient }) {
|
|
46
46
|
const collectionId = parseId(args.id, "id");
|
|
47
47
|
const client = await getClient();
|
|
@@ -6,7 +6,7 @@ var api_key_default = defineCommand({
|
|
|
6
6
|
name: "api-key",
|
|
7
7
|
description: "Manage Metabase API keys"
|
|
8
8
|
},
|
|
9
|
-
subCommands: { create: () => import("./create-
|
|
9
|
+
subCommands: { create: () => import("./create-C4Fec2QG.mjs").then((mod) => mod.default) }
|
|
10
10
|
});
|
|
11
11
|
|
|
12
12
|
//#endregion
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import "./
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { Card, cardView } from "./card-
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dy4xSeLf.mjs";
|
|
7
|
+
import { Card, cardView } from "./card-B2ZlGpQP.mjs";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/card/archive.ts
|
|
10
10
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import "./
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dy4xSeLf.mjs";
|
|
7
7
|
import { revisionMessageFlag } from "./revision-message-flag-D4E1lKE5.mjs";
|
|
8
|
-
import { Segment, segmentView } from "./segment-
|
|
8
|
+
import { Segment, segmentView } from "./segment-BMrUBz94.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/segment/archive.ts
|
|
11
11
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import "./
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dy4xSeLf.mjs";
|
|
7
7
|
import { Measure, measureView } from "./measure-jbc7fsCs.mjs";
|
|
8
8
|
import { revisionMessageFlag } from "./revision-message-flag-D4E1lKE5.mjs";
|
|
9
9
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import "./
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { Snippet, snippetView } from "./snippet-
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dy4xSeLf.mjs";
|
|
7
|
+
import { Snippet, snippetView } from "./snippet-Dw0Sjzkr.mjs";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/snippet/archive.ts
|
|
10
10
|
var archive_default = defineMetabaseCommand({
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/auth/index.ts
|
|
4
|
+
var auth_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "auth",
|
|
7
|
+
description: "Authenticate against a Metabase instance"
|
|
8
|
+
},
|
|
9
|
+
default: "login",
|
|
10
|
+
subCommands: {
|
|
11
|
+
login: () => import("./login-Ce_o5MLd.mjs").then((m) => m.default),
|
|
12
|
+
status: () => import("./status-51muEP07.mjs").then((m) => m.default),
|
|
13
|
+
list: () => import("./list-MWSTuRJt.mjs").then((m) => m.default),
|
|
14
|
+
logout: () => import("./logout-BBmwrBSd.mjs").then((m) => m.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { auth_default as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ConfigError } from "./
|
|
2
|
-
import { readInput } from "./input-
|
|
3
|
-
import { parseJson } from "./runtime-
|
|
1
|
+
import { ConfigError } from "./predicates-DiIiS3k7.mjs";
|
|
2
|
+
import { readInput } from "./input-ikCiip6x.mjs";
|
|
3
|
+
import { parseJson } from "./runtime-C6l1Ju-X.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/body.ts
|
|
6
6
|
async function readBody(sources, schema) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderList } from "./render-
|
|
4
|
-
import "./
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-
|
|
6
|
-
import { REMOTE_SYNC_PATHS } from "./poll-task-
|
|
7
|
-
import "./poll-
|
|
3
|
+
import { renderList } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import { REMOTE_SYNC_PATHS } from "./poll-task-DgGZa-HF.mjs";
|
|
7
|
+
import "./poll-DcT586gB.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
|
-
//#region src/commands/sync/branches.ts
|
|
10
|
+
//#region src/commands/remote-sync/branches.ts
|
|
11
11
|
const SyncBranchesApiResponse = z.object({ items: z.array(z.string()) });
|
|
12
12
|
const BranchRow = z.object({ name: z.string() });
|
|
13
13
|
const branchView = {
|
|
@@ -29,7 +29,7 @@ var branches_default = defineMetabaseCommand({
|
|
|
29
29
|
...connectionFlags
|
|
30
30
|
},
|
|
31
31
|
outputSchema: SyncBranchListEnvelope,
|
|
32
|
-
examples: ["metabase sync branches", "metabase sync branches --json"],
|
|
32
|
+
examples: ["metabase remote-sync branches", "metabase remote-sync branches --json"],
|
|
33
33
|
async run({ ctx, getClient }) {
|
|
34
34
|
const client = await getClient();
|
|
35
35
|
const response = await client.requestParsed(SyncBranchesApiResponse, REMOTE_SYNC_PATHS.branches);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import "./
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dy4xSeLf.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/transform/cancel.ts
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-_D_P9V4h.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import "./
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-
|
|
7
|
-
import "./poll-
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C6l1Ju-X.mjs";
|
|
6
|
+
import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-DgGZa-HF.mjs";
|
|
7
|
+
import "./poll-DcT586gB.mjs";
|
|
8
8
|
|
|
9
|
-
//#region src/commands/sync/cancel-task.ts
|
|
9
|
+
//#region src/commands/remote-sync/cancel-task.ts
|
|
10
10
|
var cancel_task_default = defineMetabaseCommand({
|
|
11
11
|
meta: {
|
|
12
12
|
name: "cancel-task",
|
|
13
|
-
description: "Cancel the running sync task"
|
|
13
|
+
description: "Cancel the running remote-sync task"
|
|
14
14
|
},
|
|
15
15
|
args: {
|
|
16
16
|
...outputFlags,
|
|
@@ -18,7 +18,7 @@ var cancel_task_default = defineMetabaseCommand({
|
|
|
18
18
|
...connectionFlags
|
|
19
19
|
},
|
|
20
20
|
outputSchema: SyncTask,
|
|
21
|
-
examples: ["metabase sync cancel-task", "metabase sync cancel-task --json"],
|
|
21
|
+
examples: ["metabase remote-sync cancel-task", "metabase remote-sync cancel-task --json"],
|
|
22
22
|
async run({ ctx, getClient }) {
|
|
23
23
|
const client = await getClient();
|
|
24
24
|
const task = await client.requestParsed(SyncTask, REMOTE_SYNC_PATHS.cancelTask, { method: "POST" });
|
|
@@ -7,6 +7,7 @@ const CardType = z.enum([
|
|
|
7
7
|
"metric"
|
|
8
8
|
]);
|
|
9
9
|
const CardQueryType = z.enum(["native", "query"]);
|
|
10
|
+
const CardDatasetQuery = z.object({}).loose().refine((value) => "lib/type" in value || "type" in value, { message: "dataset_query must include \"lib/type\" (MBQL 5) or \"type\" (legacy MBQL/native); empty `{}` is rejected" });
|
|
10
11
|
const Card = z.object({
|
|
11
12
|
id: z.number().int(),
|
|
12
13
|
name: z.string(),
|
|
@@ -70,7 +71,7 @@ const cardView = {
|
|
|
70
71
|
const CardCreateInput = z.object({
|
|
71
72
|
name: z.string().min(1),
|
|
72
73
|
type: CardType.optional(),
|
|
73
|
-
dataset_query:
|
|
74
|
+
dataset_query: CardDatasetQuery,
|
|
74
75
|
display: z.string().min(1),
|
|
75
76
|
visualization_settings: z.unknown(),
|
|
76
77
|
description: z.string().nullable().optional(),
|
|
@@ -83,7 +84,7 @@ const CardCreateInput = z.object({
|
|
|
83
84
|
const CardUpdateInput = z.object({
|
|
84
85
|
name: z.string().min(1).optional(),
|
|
85
86
|
type: CardType.optional(),
|
|
86
|
-
dataset_query:
|
|
87
|
+
dataset_query: CardDatasetQuery.optional(),
|
|
87
88
|
display: z.string().min(1).optional(),
|
|
88
89
|
visualization_settings: z.unknown().optional(),
|
|
89
90
|
description: z.string().nullable().optional(),
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/card/index.ts
|
|
4
|
+
var card_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "card",
|
|
7
|
+
description: "Manage Metabase cards (questions, models, metrics)"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-Wgyl5jTw.mjs").then((mod) => mod.default),
|
|
11
|
+
get: () => import("./get-BjzVuL-u.mjs").then((mod) => mod.default),
|
|
12
|
+
query: () => import("./query-DhWf5_XU.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-Bn3BDzsS.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-BFNyczga.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-C-G9Nxoi.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { card_default as default };
|