@xano/cli 0.0.40 → 0.0.42

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.
@@ -142,20 +142,20 @@
142
142
  "index.js"
143
143
  ]
144
144
  },
145
- "branch:get": {
145
+ "branch:delete": {
146
146
  "aliases": [],
147
147
  "args": {
148
148
  "branch_label": {
149
- "description": "Branch label (e.g., \"v1\", \"dev\")",
149
+ "description": "Branch label to delete (cannot delete \"v1\" or the live branch)",
150
150
  "name": "branch_label",
151
151
  "required": true
152
152
  }
153
153
  },
154
- "description": "Get details for a specific branch",
154
+ "description": "Delete a branch (cannot delete \"v1\" or the live branch)",
155
155
  "examples": [
156
- "$ xano branch get v1\nBranch: v1 (live)\n Created: 2024-01-15\n",
157
- "$ xano branch get dev -w 123\nBranch: dev\n Created: 2024-02-01\n",
158
- "$ xano branch get staging --output json\n{\n \"created_at\": \"2024-02-10T09:15:00Z\",\n \"label\": \"staging\",\n \"backup\": false,\n \"live\": false\n}\n"
156
+ "$ xano branch delete feature-old\nAre you sure you want to delete branch 'feature-old'? This action cannot be undone. (y/N) y\nDeleted branch: feature-old\n",
157
+ "$ xano branch delete dev --force\nDeleted branch: dev\n",
158
+ "$ xano branch delete staging -f -o json\n{\n \"deleted\": true,\n \"branch_label\": \"staging\"\n}\n"
159
159
  ],
160
160
  "flags": {
161
161
  "profile": {
@@ -177,6 +177,14 @@
177
177
  "allowNo": false,
178
178
  "type": "boolean"
179
179
  },
180
+ "force": {
181
+ "char": "f",
182
+ "description": "Skip confirmation prompt",
183
+ "name": "force",
184
+ "required": false,
185
+ "allowNo": false,
186
+ "type": "boolean"
187
+ },
180
188
  "output": {
181
189
  "char": "o",
182
190
  "description": "Output format",
@@ -203,7 +211,7 @@
203
211
  },
204
212
  "hasDynamicHelp": false,
205
213
  "hiddenAliases": [],
206
- "id": "branch:get",
214
+ "id": "branch:delete",
207
215
  "pluginAlias": "@xano/cli",
208
216
  "pluginName": "@xano/cli",
209
217
  "pluginType": "core",
@@ -214,24 +222,24 @@
214
222
  "dist",
215
223
  "commands",
216
224
  "branch",
217
- "get",
225
+ "delete",
218
226
  "index.js"
219
227
  ]
220
228
  },
221
- "branch:list": {
229
+ "branch:get": {
222
230
  "aliases": [],
223
231
  "args": {
224
- "workspace_id": {
225
- "description": "Workspace ID (uses profile workspace if not provided)",
226
- "name": "workspace_id",
227
- "required": false
232
+ "branch_label": {
233
+ "description": "Branch label (e.g., \"v1\", \"dev\")",
234
+ "name": "branch_label",
235
+ "required": true
228
236
  }
229
237
  },
230
- "description": "List all branches in a workspace",
238
+ "description": "Get details for a specific branch",
231
239
  "examples": [
232
- "$ xano branch list\nAvailable branches:\n - v1 (live)\n - dev\n - staging\n",
233
- "$ xano branch list 123\nAvailable branches:\n - v1 (live)\n - feature-auth\n",
234
- "$ xano branch list --output json\n[\n {\n \"created_at\": \"2024-01-15T10:30:00Z\",\n \"label\": \"v1\",\n \"backup\": false,\n \"live\": true\n }\n]\n"
240
+ "$ xano branch get v1\nBranch: v1 (live)\n Created: 2024-01-15\n",
241
+ "$ xano branch get dev -w 123\nBranch: dev\n Created: 2024-02-01\n",
242
+ "$ xano branch get staging --output json\n{\n \"created_at\": \"2024-02-10T09:15:00Z\",\n \"label\": \"staging\",\n \"backup\": false,\n \"live\": false\n}\n"
235
243
  ],
236
244
  "flags": {
237
245
  "profile": {
@@ -266,11 +274,20 @@
266
274
  "json"
267
275
  ],
268
276
  "type": "option"
277
+ },
278
+ "workspace": {
279
+ "char": "w",
280
+ "description": "Workspace ID (uses profile workspace if not provided)",
281
+ "name": "workspace",
282
+ "required": false,
283
+ "hasDynamicHelp": false,
284
+ "multiple": false,
285
+ "type": "option"
269
286
  }
270
287
  },
271
288
  "hasDynamicHelp": false,
272
289
  "hiddenAliases": [],
273
- "id": "branch:list",
290
+ "id": "branch:get",
274
291
  "pluginAlias": "@xano/cli",
275
292
  "pluginName": "@xano/cli",
276
293
  "pluginType": "core",
@@ -281,24 +298,24 @@
281
298
  "dist",
282
299
  "commands",
283
300
  "branch",
284
- "list",
301
+ "get",
285
302
  "index.js"
286
303
  ]
287
304
  },
288
- "branch:delete": {
305
+ "branch:list": {
289
306
  "aliases": [],
290
307
  "args": {
291
- "branch_label": {
292
- "description": "Branch label to delete (cannot delete \"v1\" or the live branch)",
293
- "name": "branch_label",
294
- "required": true
308
+ "workspace_id": {
309
+ "description": "Workspace ID (uses profile workspace if not provided)",
310
+ "name": "workspace_id",
311
+ "required": false
295
312
  }
296
313
  },
297
- "description": "Delete a branch (cannot delete \"v1\" or the live branch)",
314
+ "description": "List all branches in a workspace",
298
315
  "examples": [
299
- "$ xano branch delete feature-old\nAre you sure you want to delete branch 'feature-old'? This action cannot be undone. (y/N) y\nDeleted branch: feature-old\n",
300
- "$ xano branch delete dev --force\nDeleted branch: dev\n",
301
- "$ xano branch delete staging -f -o json\n{\n \"deleted\": true,\n \"branch_label\": \"staging\"\n}\n"
316
+ "$ xano branch list\nAvailable branches:\n - v1 (live)\n - dev\n - staging\n",
317
+ "$ xano branch list 123\nAvailable branches:\n - v1 (live)\n - feature-auth\n",
318
+ "$ xano branch list --output json\n[\n {\n \"created_at\": \"2024-01-15T10:30:00Z\",\n \"label\": \"v1\",\n \"backup\": false,\n \"live\": true\n }\n]\n"
302
319
  ],
303
320
  "flags": {
304
321
  "profile": {
@@ -320,14 +337,6 @@
320
337
  "allowNo": false,
321
338
  "type": "boolean"
322
339
  },
323
- "force": {
324
- "char": "f",
325
- "description": "Skip confirmation prompt",
326
- "name": "force",
327
- "required": false,
328
- "allowNo": false,
329
- "type": "boolean"
330
- },
331
340
  "output": {
332
341
  "char": "o",
333
342
  "description": "Output format",
@@ -341,20 +350,11 @@
341
350
  "json"
342
351
  ],
343
352
  "type": "option"
344
- },
345
- "workspace": {
346
- "char": "w",
347
- "description": "Workspace ID (uses profile workspace if not provided)",
348
- "name": "workspace",
349
- "required": false,
350
- "hasDynamicHelp": false,
351
- "multiple": false,
352
- "type": "option"
353
353
  }
354
354
  },
355
355
  "hasDynamicHelp": false,
356
356
  "hiddenAliases": [],
357
- "id": "branch:delete",
357
+ "id": "branch:list",
358
358
  "pluginAlias": "@xano/cli",
359
359
  "pluginName": "@xano/cli",
360
360
  "pluginType": "core",
@@ -365,7 +365,7 @@
365
365
  "dist",
366
366
  "commands",
367
367
  "branch",
368
- "delete",
368
+ "list",
369
369
  "index.js"
370
370
  ]
371
371
  },
@@ -453,20 +453,16 @@
453
453
  "index.js"
454
454
  ]
455
455
  },
456
- "branch:edit": {
456
+ "function:create": {
457
457
  "aliases": [],
458
- "args": {
459
- "branch_label": {
460
- "description": "Branch label to edit (cannot edit \"v1\" label)",
461
- "name": "branch_label",
462
- "required": true
463
- }
464
- },
465
- "description": "Update an existing branch (cannot update \"v1\" label)",
458
+ "args": {},
459
+ "description": "Create a new function in a workspace",
466
460
  "examples": [
467
- "$ xano branch edit dev --label development\nUpdated branch: development\n",
468
- "$ xano branch edit feature-auth -l feature-authentication --color \"#ff5733\"\nUpdated branch: feature-authentication\n Color: #ff5733\n",
469
- "$ xano branch edit staging --description \"Staging environment\" -o json\n{\n \"created_at\": \"2024-02-10T09:15:00Z\",\n \"label\": \"staging\",\n \"backup\": false\n}\n"
461
+ "$ xano function:create -w 40 -f function.xs\nFunction created successfully!\nID: 123\nName: my_function\n",
462
+ "$ xano function:create -f function.xs\nFunction created successfully!\nID: 123\nName: my_function\n",
463
+ "$ xano function:create -w 40 -f function.xs --edit\n# Opens function.xs in $EDITOR, then creates function with edited content\nFunction created successfully!\nID: 123\nName: my_function\n",
464
+ "$ cat function.xs | xano function:create -w 40 --stdin\nFunction created successfully!\nID: 123\nName: my_function\n",
465
+ "$ xano function:create -w 40 -f function.xs -o json\n{\n \"id\": 123,\n \"name\": \"my_function\",\n ...\n}\n"
470
466
  ],
471
467
  "flags": {
472
468
  "profile": {
@@ -488,28 +484,24 @@
488
484
  "allowNo": false,
489
485
  "type": "boolean"
490
486
  },
491
- "color": {
492
- "char": "c",
493
- "description": "New color hex code for the branch (e.g., \"#ff5733\")",
494
- "name": "color",
495
- "required": false,
496
- "hasDynamicHelp": false,
497
- "multiple": false,
498
- "type": "option"
499
- },
500
- "description": {
501
- "char": "d",
502
- "description": "New description for the branch",
503
- "name": "description",
487
+ "edit": {
488
+ "char": "e",
489
+ "dependsOn": [
490
+ "file"
491
+ ],
492
+ "description": "Open file in editor before creating function (requires --file)",
493
+ "name": "edit",
504
494
  "required": false,
505
- "hasDynamicHelp": false,
506
- "multiple": false,
507
- "type": "option"
495
+ "allowNo": false,
496
+ "type": "boolean"
508
497
  },
509
- "label": {
510
- "char": "l",
511
- "description": "New label for the branch",
512
- "name": "label",
498
+ "file": {
499
+ "char": "f",
500
+ "description": "Path to file containing XanoScript code",
501
+ "exclusive": [
502
+ "stdin"
503
+ ],
504
+ "name": "file",
513
505
  "required": false,
514
506
  "hasDynamicHelp": false,
515
507
  "multiple": false,
@@ -529,9 +521,20 @@
529
521
  ],
530
522
  "type": "option"
531
523
  },
524
+ "stdin": {
525
+ "char": "s",
526
+ "description": "Read XanoScript code from stdin",
527
+ "exclusive": [
528
+ "file"
529
+ ],
530
+ "name": "stdin",
531
+ "required": false,
532
+ "allowNo": false,
533
+ "type": "boolean"
534
+ },
532
535
  "workspace": {
533
536
  "char": "w",
534
- "description": "Workspace ID (uses profile workspace if not provided)",
537
+ "description": "Workspace ID (optional if set in profile)",
535
538
  "name": "workspace",
536
539
  "required": false,
537
540
  "hasDynamicHelp": false,
@@ -541,7 +544,7 @@
541
544
  },
542
545
  "hasDynamicHelp": false,
543
546
  "hiddenAliases": [],
544
- "id": "branch:edit",
547
+ "id": "function:create",
545
548
  "pluginAlias": "@xano/cli",
546
549
  "pluginName": "@xano/cli",
547
550
  "pluginType": "core",
@@ -551,21 +554,30 @@
551
554
  "relativePath": [
552
555
  "dist",
553
556
  "commands",
554
- "branch",
555
- "edit",
557
+ "function",
558
+ "create",
556
559
  "index.js"
557
560
  ]
558
561
  },
559
- "function:create": {
562
+ "function:edit": {
560
563
  "aliases": [],
561
- "args": {},
562
- "description": "Create a new function in a workspace",
564
+ "args": {
565
+ "function_id": {
566
+ "description": "Function ID to edit",
567
+ "name": "function_id",
568
+ "required": false
569
+ }
570
+ },
571
+ "description": "Edit a function in a workspace",
563
572
  "examples": [
564
- "$ xano function:create -w 40 -f function.xs\nFunction created successfully!\nID: 123\nName: my_function\n",
565
- "$ xano function:create -f function.xs\nFunction created successfully!\nID: 123\nName: my_function\n",
566
- "$ xano function:create -w 40 -f function.xs --edit\n# Opens function.xs in $EDITOR, then creates function with edited content\nFunction created successfully!\nID: 123\nName: my_function\n",
567
- "$ cat function.xs | xano function:create -w 40 --stdin\nFunction created successfully!\nID: 123\nName: my_function\n",
568
- "$ xano function:create -w 40 -f function.xs -o json\n{\n \"id\": 123,\n \"name\": \"my_function\",\n ...\n}\n"
573
+ "$ xano function:edit 163\n# Fetches the function code and opens it in $EDITOR for editing\nFunction updated successfully!\nID: 163\nName: my_function\n",
574
+ "$ xano function:edit\n# Prompts for function, fetches the code and opens it in $EDITOR for editing\nSelect a function to edit:\n ❯ my_function (ID: 163) - Sample function\n another-func (ID: 164)\n",
575
+ "$ xano function:edit 163 -f function.xs\nFunction updated successfully!\nID: 163\nName: my_function\n",
576
+ "$ xano function:edit 163 -w 40 -f function.xs\nFunction updated successfully!\nID: 163\nName: my_function\n",
577
+ "$ xano function:edit -f function.xs\nSelect a function to edit:\n ❯ my_function (ID: 163) - Sample function\n another-func (ID: 164)\n",
578
+ "$ xano function:edit 163 -f function.xs --edit\n# Opens function.xs in $EDITOR, then updates function with edited content\nFunction updated successfully!\nID: 163\nName: my_function\n",
579
+ "$ cat function.xs | xano function:edit 163 --stdin\nFunction updated successfully!\nID: 163\nName: my_function\n",
580
+ "$ xano function:edit 163 -f function.xs -o json\n{\n \"id\": 163,\n \"name\": \"my_function\",\n ...\n}\n"
569
581
  ],
570
582
  "flags": {
571
583
  "profile": {
@@ -589,10 +601,7 @@
589
601
  },
590
602
  "edit": {
591
603
  "char": "e",
592
- "dependsOn": [
593
- "file"
594
- ],
595
- "description": "Open file in editor before creating function (requires --file)",
604
+ "description": "Open file in editor before updating function (requires --file)",
596
605
  "name": "edit",
597
606
  "required": false,
598
607
  "allowNo": false,
@@ -624,6 +633,13 @@
624
633
  ],
625
634
  "type": "option"
626
635
  },
636
+ "publish": {
637
+ "description": "Publish the function after editing",
638
+ "name": "publish",
639
+ "required": false,
640
+ "allowNo": false,
641
+ "type": "boolean"
642
+ },
627
643
  "stdin": {
628
644
  "char": "s",
629
645
  "description": "Read XanoScript code from stdin",
@@ -647,7 +663,7 @@
647
663
  },
648
664
  "hasDynamicHelp": false,
649
665
  "hiddenAliases": [],
650
- "id": "function:create",
666
+ "id": "function:edit",
651
667
  "pluginAlias": "@xano/cli",
652
668
  "pluginName": "@xano/cli",
653
669
  "pluginType": "core",
@@ -658,7 +674,7 @@
658
674
  "dist",
659
675
  "commands",
660
676
  "function",
661
- "create",
677
+ "edit",
662
678
  "index.js"
663
679
  ]
664
680
  },
@@ -756,19 +772,15 @@
756
772
  "index.js"
757
773
  ]
758
774
  },
759
- "platform:get": {
775
+ "function:list": {
760
776
  "aliases": [],
761
- "args": {
762
- "platform_id": {
763
- "description": "Platform ID to retrieve",
764
- "name": "platform_id",
765
- "required": true
766
- }
767
- },
768
- "description": "Get details of a specific platform",
777
+ "args": {},
778
+ "description": "List all functions in a workspace from the Xano Metadata API",
769
779
  "examples": [
770
- "$ xano platform get 23629\nPlatform ID: 23629\n Created: 2025-11-28\n Helm: 0.1.356\n Images:\n backend 0.0.2985\n frontend 0.1.3427\n database 0.1.6\n node 0.1.192\n deno 0.0.212\n redis 0.1.34\n realtime 0.1.149\n standalone 0.0.2456\n playwright 0.0.992\n static 0.0.10\n static-build 0.0.4\n backend-encoded 0.0.1396\n",
771
- "$ xano platform get 23629 -o json"
780
+ "$ xano function:list -w 40\nAvailable functions:\n - function-1 (ID: 1)\n - function-2 (ID: 2)\n - function-3 (ID: 3)\n",
781
+ "$ xano function:list --profile production\nAvailable functions:\n - my-function (ID: 1)\n - another-function (ID: 2)\n",
782
+ "$ xano function:list -w 40 --output json\n[\n {\n \"id\": 1,\n \"name\": \"function-1\"\n }\n]\n",
783
+ "$ xano function:list -p staging -o json --include_draft\n[\n {\n \"id\": 1,\n \"name\": \"function-1\"\n }\n]\n"
772
784
  ],
773
785
  "flags": {
774
786
  "profile": {
@@ -790,6 +802,33 @@
790
802
  "allowNo": false,
791
803
  "type": "boolean"
792
804
  },
805
+ "include_draft": {
806
+ "description": "Include draft functions",
807
+ "name": "include_draft",
808
+ "required": false,
809
+ "allowNo": false,
810
+ "type": "boolean"
811
+ },
812
+ "include_xanoscript": {
813
+ "description": "Include XanoScript in response",
814
+ "name": "include_xanoscript",
815
+ "required": false,
816
+ "allowNo": false,
817
+ "type": "boolean"
818
+ },
819
+ "order": {
820
+ "description": "Sort order",
821
+ "name": "order",
822
+ "required": false,
823
+ "default": "desc",
824
+ "hasDynamicHelp": false,
825
+ "multiple": false,
826
+ "options": [
827
+ "asc",
828
+ "desc"
829
+ ],
830
+ "type": "option"
831
+ },
793
832
  "output": {
794
833
  "char": "o",
795
834
  "description": "Output format",
@@ -803,7 +842,109 @@
803
842
  "json"
804
843
  ],
805
844
  "type": "option"
806
- }
845
+ },
846
+ "page": {
847
+ "description": "Page number for pagination",
848
+ "name": "page",
849
+ "required": false,
850
+ "default": 1,
851
+ "hasDynamicHelp": false,
852
+ "multiple": false,
853
+ "type": "option"
854
+ },
855
+ "per_page": {
856
+ "description": "Number of results per page",
857
+ "name": "per_page",
858
+ "required": false,
859
+ "default": 50,
860
+ "hasDynamicHelp": false,
861
+ "multiple": false,
862
+ "type": "option"
863
+ },
864
+ "sort": {
865
+ "description": "Sort field",
866
+ "name": "sort",
867
+ "required": false,
868
+ "default": "created_at",
869
+ "hasDynamicHelp": false,
870
+ "multiple": false,
871
+ "type": "option"
872
+ },
873
+ "workspace": {
874
+ "char": "w",
875
+ "description": "Workspace ID (optional if set in profile)",
876
+ "name": "workspace",
877
+ "required": false,
878
+ "hasDynamicHelp": false,
879
+ "multiple": false,
880
+ "type": "option"
881
+ }
882
+ },
883
+ "hasDynamicHelp": false,
884
+ "hiddenAliases": [],
885
+ "id": "function:list",
886
+ "pluginAlias": "@xano/cli",
887
+ "pluginName": "@xano/cli",
888
+ "pluginType": "core",
889
+ "strict": true,
890
+ "enableJsonFlag": false,
891
+ "isESM": true,
892
+ "relativePath": [
893
+ "dist",
894
+ "commands",
895
+ "function",
896
+ "list",
897
+ "index.js"
898
+ ]
899
+ },
900
+ "platform:get": {
901
+ "aliases": [],
902
+ "args": {
903
+ "platform_id": {
904
+ "description": "Platform ID to retrieve",
905
+ "name": "platform_id",
906
+ "required": true
907
+ }
908
+ },
909
+ "description": "Get details of a specific platform",
910
+ "examples": [
911
+ "$ xano platform get 23629\nPlatform ID: 23629\n Created: 2025-11-28\n Helm: 0.1.356\n Images:\n backend 0.0.2985\n frontend 0.1.3427\n database 0.1.6\n node 0.1.192\n deno 0.0.212\n redis 0.1.34\n realtime 0.1.149\n standalone 0.0.2456\n playwright 0.0.992\n static 0.0.10\n static-build 0.0.4\n backend-encoded 0.0.1396\n",
912
+ "$ xano platform get 23629 -o json"
913
+ ],
914
+ "flags": {
915
+ "profile": {
916
+ "char": "p",
917
+ "description": "Profile to use (uses default profile if not specified)",
918
+ "env": "XANO_PROFILE",
919
+ "name": "profile",
920
+ "required": false,
921
+ "hasDynamicHelp": false,
922
+ "multiple": false,
923
+ "type": "option"
924
+ },
925
+ "verbose": {
926
+ "char": "v",
927
+ "description": "Show detailed request/response information",
928
+ "env": "XANO_VERBOSE",
929
+ "name": "verbose",
930
+ "required": false,
931
+ "allowNo": false,
932
+ "type": "boolean"
933
+ },
934
+ "output": {
935
+ "char": "o",
936
+ "description": "Output format",
937
+ "name": "output",
938
+ "required": false,
939
+ "default": "summary",
940
+ "hasDynamicHelp": false,
941
+ "multiple": false,
942
+ "options": [
943
+ "summary",
944
+ "json"
945
+ ],
946
+ "type": "option"
947
+ }
807
948
  },
808
949
  "hasDynamicHelp": false,
809
950
  "hiddenAliases": [],
@@ -969,15 +1110,62 @@
969
1110
  "index.js"
970
1111
  ]
971
1112
  },
972
- "function:list": {
1113
+ "profile:delete": {
973
1114
  "aliases": [],
974
- "args": {},
975
- "description": "List all functions in a workspace from the Xano Metadata API",
1115
+ "args": {
1116
+ "name": {
1117
+ "description": "Profile name to delete",
1118
+ "name": "name",
1119
+ "required": true
1120
+ }
1121
+ },
1122
+ "description": "Delete a profile configuration",
976
1123
  "examples": [
977
- "$ xano function:list -w 40\nAvailable functions:\n - function-1 (ID: 1)\n - function-2 (ID: 2)\n - function-3 (ID: 3)\n",
978
- "$ xano function:list --profile production\nAvailable functions:\n - my-function (ID: 1)\n - another-function (ID: 2)\n",
979
- "$ xano function:list -w 40 --output json\n[\n {\n \"id\": 1,\n \"name\": \"function-1\"\n }\n]\n",
980
- "$ xano function:list -p staging -o json --include_draft\n[\n {\n \"id\": 1,\n \"name\": \"function-1\"\n }\n]\n"
1124
+ "$ xano profile:delete old-profile\nAre you sure you want to delete profile 'old-profile'? (y/n): y\nProfile 'old-profile' deleted successfully from ~/.xano/credentials.yaml\n",
1125
+ "$ xano profile:delete old-profile --force\nProfile 'old-profile' deleted successfully from ~/.xano/credentials.yaml\n",
1126
+ "$ xano profile:delete old-profile -f\nProfile 'old-profile' deleted successfully from ~/.xano/credentials.yaml\n"
1127
+ ],
1128
+ "flags": {
1129
+ "force": {
1130
+ "char": "f",
1131
+ "description": "Skip confirmation prompt",
1132
+ "name": "force",
1133
+ "required": false,
1134
+ "allowNo": false,
1135
+ "type": "boolean"
1136
+ }
1137
+ },
1138
+ "hasDynamicHelp": false,
1139
+ "hiddenAliases": [],
1140
+ "id": "profile:delete",
1141
+ "pluginAlias": "@xano/cli",
1142
+ "pluginName": "@xano/cli",
1143
+ "pluginType": "core",
1144
+ "strict": true,
1145
+ "enableJsonFlag": false,
1146
+ "isESM": true,
1147
+ "relativePath": [
1148
+ "dist",
1149
+ "commands",
1150
+ "profile",
1151
+ "delete",
1152
+ "index.js"
1153
+ ]
1154
+ },
1155
+ "branch:edit": {
1156
+ "aliases": [],
1157
+ "args": {
1158
+ "branch_label": {
1159
+ "description": "Branch label to edit (cannot edit \"v1\" label)",
1160
+ "name": "branch_label",
1161
+ "required": true
1162
+ }
1163
+ },
1164
+ "description": "Update an existing branch (cannot update \"v1\" label)",
1165
+ "examples": [
1166
+ "$ xano branch edit dev --label development\nUpdated branch: development\n",
1167
+ "$ xano branch edit feature-auth -l feature-authentication --color \"#ff5733\"\nUpdated branch: feature-authentication\n Color: #ff5733\n",
1168
+ "$ xano branch edit staging --description \"Staging environment\" -o json\n{\n \"created_at\": \"2024-02-10T09:15:00Z\",\n \"label\": \"staging\",\n \"backup\": false\n}\n"
981
1169
  ],
982
1170
  "flags": {
983
1171
  "profile": {
@@ -999,31 +1187,31 @@
999
1187
  "allowNo": false,
1000
1188
  "type": "boolean"
1001
1189
  },
1002
- "include_draft": {
1003
- "description": "Include draft functions",
1004
- "name": "include_draft",
1190
+ "color": {
1191
+ "char": "c",
1192
+ "description": "New color hex code for the branch (e.g., \"#ff5733\")",
1193
+ "name": "color",
1005
1194
  "required": false,
1006
- "allowNo": false,
1007
- "type": "boolean"
1195
+ "hasDynamicHelp": false,
1196
+ "multiple": false,
1197
+ "type": "option"
1008
1198
  },
1009
- "include_xanoscript": {
1010
- "description": "Include XanoScript in response",
1011
- "name": "include_xanoscript",
1199
+ "description": {
1200
+ "char": "d",
1201
+ "description": "New description for the branch",
1202
+ "name": "description",
1012
1203
  "required": false,
1013
- "allowNo": false,
1014
- "type": "boolean"
1204
+ "hasDynamicHelp": false,
1205
+ "multiple": false,
1206
+ "type": "option"
1015
1207
  },
1016
- "order": {
1017
- "description": "Sort order",
1018
- "name": "order",
1208
+ "label": {
1209
+ "char": "l",
1210
+ "description": "New label for the branch",
1211
+ "name": "label",
1019
1212
  "required": false,
1020
- "default": "desc",
1021
1213
  "hasDynamicHelp": false,
1022
1214
  "multiple": false,
1023
- "options": [
1024
- "asc",
1025
- "desc"
1026
- ],
1027
1215
  "type": "option"
1028
1216
  },
1029
1217
  "output": {
@@ -1040,36 +1228,9 @@
1040
1228
  ],
1041
1229
  "type": "option"
1042
1230
  },
1043
- "page": {
1044
- "description": "Page number for pagination",
1045
- "name": "page",
1046
- "required": false,
1047
- "default": 1,
1048
- "hasDynamicHelp": false,
1049
- "multiple": false,
1050
- "type": "option"
1051
- },
1052
- "per_page": {
1053
- "description": "Number of results per page",
1054
- "name": "per_page",
1055
- "required": false,
1056
- "default": 50,
1057
- "hasDynamicHelp": false,
1058
- "multiple": false,
1059
- "type": "option"
1060
- },
1061
- "sort": {
1062
- "description": "Sort field",
1063
- "name": "sort",
1064
- "required": false,
1065
- "default": "created_at",
1066
- "hasDynamicHelp": false,
1067
- "multiple": false,
1068
- "type": "option"
1069
- },
1070
1231
  "workspace": {
1071
1232
  "char": "w",
1072
- "description": "Workspace ID (optional if set in profile)",
1233
+ "description": "Workspace ID (uses profile workspace if not provided)",
1073
1234
  "name": "workspace",
1074
1235
  "required": false,
1075
1236
  "hasDynamicHelp": false,
@@ -1079,49 +1240,7 @@
1079
1240
  },
1080
1241
  "hasDynamicHelp": false,
1081
1242
  "hiddenAliases": [],
1082
- "id": "function:list",
1083
- "pluginAlias": "@xano/cli",
1084
- "pluginName": "@xano/cli",
1085
- "pluginType": "core",
1086
- "strict": true,
1087
- "enableJsonFlag": false,
1088
- "isESM": true,
1089
- "relativePath": [
1090
- "dist",
1091
- "commands",
1092
- "function",
1093
- "list",
1094
- "index.js"
1095
- ]
1096
- },
1097
- "profile:delete": {
1098
- "aliases": [],
1099
- "args": {
1100
- "name": {
1101
- "description": "Profile name to delete",
1102
- "name": "name",
1103
- "required": true
1104
- }
1105
- },
1106
- "description": "Delete a profile configuration",
1107
- "examples": [
1108
- "$ xano profile:delete old-profile\nAre you sure you want to delete profile 'old-profile'? (y/n): y\nProfile 'old-profile' deleted successfully from ~/.xano/credentials.yaml\n",
1109
- "$ xano profile:delete old-profile --force\nProfile 'old-profile' deleted successfully from ~/.xano/credentials.yaml\n",
1110
- "$ xano profile:delete old-profile -f\nProfile 'old-profile' deleted successfully from ~/.xano/credentials.yaml\n"
1111
- ],
1112
- "flags": {
1113
- "force": {
1114
- "char": "f",
1115
- "description": "Skip confirmation prompt",
1116
- "name": "force",
1117
- "required": false,
1118
- "allowNo": false,
1119
- "type": "boolean"
1120
- }
1121
- },
1122
- "hasDynamicHelp": false,
1123
- "hiddenAliases": [],
1124
- "id": "profile:delete",
1243
+ "id": "branch:edit",
1125
1244
  "pluginAlias": "@xano/cli",
1126
1245
  "pluginName": "@xano/cli",
1127
1246
  "pluginType": "core",
@@ -1131,8 +1250,8 @@
1131
1250
  "relativePath": [
1132
1251
  "dist",
1133
1252
  "commands",
1134
- "profile",
1135
- "delete",
1253
+ "branch",
1254
+ "edit",
1136
1255
  "index.js"
1137
1256
  ]
1138
1257
  },
@@ -1250,25 +1369,14 @@
1250
1369
  "index.js"
1251
1370
  ]
1252
1371
  },
1253
- "function:edit": {
1372
+ "profile:me": {
1254
1373
  "aliases": [],
1255
- "args": {
1256
- "function_id": {
1257
- "description": "Function ID to edit",
1258
- "name": "function_id",
1259
- "required": false
1260
- }
1261
- },
1262
- "description": "Edit a function in a workspace",
1374
+ "args": {},
1375
+ "description": "Get information about the currently authenticated user",
1263
1376
  "examples": [
1264
- "$ xano function:edit 163\n# Fetches the function code and opens it in $EDITOR for editing\nFunction updated successfully!\nID: 163\nName: my_function\n",
1265
- "$ xano function:edit\n# Prompts for function, fetches the code and opens it in $EDITOR for editing\nSelect a function to edit:\n ❯ my_function (ID: 163) - Sample function\n another-func (ID: 164)\n",
1266
- "$ xano function:edit 163 -f function.xs\nFunction updated successfully!\nID: 163\nName: my_function\n",
1267
- "$ xano function:edit 163 -w 40 -f function.xs\nFunction updated successfully!\nID: 163\nName: my_function\n",
1268
- "$ xano function:edit -f function.xs\nSelect a function to edit:\n ❯ my_function (ID: 163) - Sample function\n another-func (ID: 164)\n",
1269
- "$ xano function:edit 163 -f function.xs --edit\n# Opens function.xs in $EDITOR, then updates function with edited content\nFunction updated successfully!\nID: 163\nName: my_function\n",
1270
- "$ cat function.xs | xano function:edit 163 --stdin\nFunction updated successfully!\nID: 163\nName: my_function\n",
1271
- "$ xano function:edit 163 -f function.xs -o json\n{\n \"id\": 163,\n \"name\": \"my_function\",\n ...\n}\n"
1377
+ "$ xano profile:me\nUser Information:\n ID: 1\n Name: John Doe\n Email: john@example.com\n",
1378
+ "$ xano profile:me --profile production\nUser Information:\n ID: 42\n Name: Admin User\n Email: admin@example.com\n",
1379
+ "$ xano profile:me --output json\n{\n \"id\": 1,\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\"\n}\n"
1272
1380
  ],
1273
1381
  "flags": {
1274
1382
  "profile": {
@@ -1290,26 +1398,6 @@
1290
1398
  "allowNo": false,
1291
1399
  "type": "boolean"
1292
1400
  },
1293
- "edit": {
1294
- "char": "e",
1295
- "description": "Open file in editor before updating function (requires --file)",
1296
- "name": "edit",
1297
- "required": false,
1298
- "allowNo": false,
1299
- "type": "boolean"
1300
- },
1301
- "file": {
1302
- "char": "f",
1303
- "description": "Path to file containing XanoScript code",
1304
- "exclusive": [
1305
- "stdin"
1306
- ],
1307
- "name": "file",
1308
- "required": false,
1309
- "hasDynamicHelp": false,
1310
- "multiple": false,
1311
- "type": "option"
1312
- },
1313
1401
  "output": {
1314
1402
  "char": "o",
1315
1403
  "description": "Output format",
@@ -1323,38 +1411,11 @@
1323
1411
  "json"
1324
1412
  ],
1325
1413
  "type": "option"
1326
- },
1327
- "publish": {
1328
- "description": "Publish the function after editing",
1329
- "name": "publish",
1330
- "required": false,
1331
- "allowNo": false,
1332
- "type": "boolean"
1333
- },
1334
- "stdin": {
1335
- "char": "s",
1336
- "description": "Read XanoScript code from stdin",
1337
- "exclusive": [
1338
- "file"
1339
- ],
1340
- "name": "stdin",
1341
- "required": false,
1342
- "allowNo": false,
1343
- "type": "boolean"
1344
- },
1345
- "workspace": {
1346
- "char": "w",
1347
- "description": "Workspace ID (optional if set in profile)",
1348
- "name": "workspace",
1349
- "required": false,
1350
- "hasDynamicHelp": false,
1351
- "multiple": false,
1352
- "type": "option"
1353
1414
  }
1354
1415
  },
1355
1416
  "hasDynamicHelp": false,
1356
1417
  "hiddenAliases": [],
1357
- "id": "function:edit",
1418
+ "id": "profile:me",
1358
1419
  "pluginAlias": "@xano/cli",
1359
1420
  "pluginName": "@xano/cli",
1360
1421
  "pluginType": "core",
@@ -1364,58 +1425,33 @@
1364
1425
  "relativePath": [
1365
1426
  "dist",
1366
1427
  "commands",
1367
- "function",
1368
- "edit",
1428
+ "profile",
1429
+ "me",
1369
1430
  "index.js"
1370
1431
  ]
1371
1432
  },
1372
- "profile:me": {
1433
+ "profile:list": {
1373
1434
  "aliases": [],
1374
1435
  "args": {},
1375
- "description": "Get information about the currently authenticated user",
1436
+ "description": "List all available profile configurations",
1376
1437
  "examples": [
1377
- "$ xano profile:me\nUser Information:\n ID: 1\n Name: John Doe\n Email: john@example.com\n",
1378
- "$ xano profile:me --profile production\nUser Information:\n ID: 42\n Name: Admin User\n Email: admin@example.com\n",
1379
- "$ xano profile:me --output json\n{\n \"id\": 1,\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\"\n}\n"
1438
+ "$ xano profile:list\nAvailable profiles:\n - default\n - production\n - staging\n - development\n",
1439
+ "$ xano profile:list --details\nAvailable profiles:\n\nProfile: default\n Account Origin: https://account.xano.com\n Instance Origin: https://instance.xano.com\n Access Token: ***...***\n Workspace: my-workspace\n Branch: main\n Project: my-project\n\nProfile: production\n Account Origin: https://account.xano.com\n Instance Origin: https://prod-instance.xano.com\n Access Token: ***...***\n",
1440
+ "$ xano profile:list -d\nAvailable profiles:\n\nProfile: default\n Account Origin: https://account.xano.com\n Instance Origin: https://instance.xano.com\n Access Token: ***...***\n Workspace: my-workspace\n Branch: main\n Project: my-project\n"
1380
1441
  ],
1381
1442
  "flags": {
1382
- "profile": {
1383
- "char": "p",
1384
- "description": "Profile to use (uses default profile if not specified)",
1385
- "env": "XANO_PROFILE",
1386
- "name": "profile",
1387
- "required": false,
1388
- "hasDynamicHelp": false,
1389
- "multiple": false,
1390
- "type": "option"
1391
- },
1392
- "verbose": {
1393
- "char": "v",
1394
- "description": "Show detailed request/response information",
1395
- "env": "XANO_VERBOSE",
1396
- "name": "verbose",
1443
+ "details": {
1444
+ "char": "d",
1445
+ "description": "Show detailed information for each profile",
1446
+ "name": "details",
1397
1447
  "required": false,
1398
1448
  "allowNo": false,
1399
1449
  "type": "boolean"
1400
- },
1401
- "output": {
1402
- "char": "o",
1403
- "description": "Output format",
1404
- "name": "output",
1405
- "required": false,
1406
- "default": "summary",
1407
- "hasDynamicHelp": false,
1408
- "multiple": false,
1409
- "options": [
1410
- "summary",
1411
- "json"
1412
- ],
1413
- "type": "option"
1414
1450
  }
1415
1451
  },
1416
1452
  "hasDynamicHelp": false,
1417
1453
  "hiddenAliases": [],
1418
- "id": "profile:me",
1454
+ "id": "profile:list",
1419
1455
  "pluginAlias": "@xano/cli",
1420
1456
  "pluginName": "@xano/cli",
1421
1457
  "pluginType": "core",
@@ -1426,7 +1462,7 @@
1426
1462
  "dist",
1427
1463
  "commands",
1428
1464
  "profile",
1429
- "me",
1465
+ "list",
1430
1466
  "index.js"
1431
1467
  ]
1432
1468
  },
@@ -1462,54 +1498,18 @@
1462
1498
  "index.js"
1463
1499
  ]
1464
1500
  },
1465
- "profile:get_default": {
1501
+ "profile:token": {
1466
1502
  "aliases": [],
1467
1503
  "args": {},
1468
- "description": "Get the current default profile name",
1504
+ "description": "Print the access token for the default profile",
1469
1505
  "examples": [
1470
- "$ xano profile:get-default\nproduction\n",
1471
- "$ xano profile:get-default\nNo default profile set\n"
1506
+ "$ xano profile:token\neyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\n",
1507
+ "$ xano profile:token | pbcopy\n# Copies the token to clipboard on macOS\n"
1472
1508
  ],
1473
1509
  "flags": {},
1474
1510
  "hasDynamicHelp": false,
1475
1511
  "hiddenAliases": [],
1476
- "id": "profile:get_default",
1477
- "pluginAlias": "@xano/cli",
1478
- "pluginName": "@xano/cli",
1479
- "pluginType": "core",
1480
- "strict": true,
1481
- "enableJsonFlag": false,
1482
- "isESM": true,
1483
- "relativePath": [
1484
- "dist",
1485
- "commands",
1486
- "profile",
1487
- "get_default",
1488
- "index.js"
1489
- ]
1490
- },
1491
- "profile:list": {
1492
- "aliases": [],
1493
- "args": {},
1494
- "description": "List all available profile configurations",
1495
- "examples": [
1496
- "$ xano profile:list\nAvailable profiles:\n - default\n - production\n - staging\n - development\n",
1497
- "$ xano profile:list --details\nAvailable profiles:\n\nProfile: default\n Account Origin: https://account.xano.com\n Instance Origin: https://instance.xano.com\n Access Token: ***...***\n Workspace: my-workspace\n Branch: main\n Project: my-project\n\nProfile: production\n Account Origin: https://account.xano.com\n Instance Origin: https://prod-instance.xano.com\n Access Token: ***...***\n",
1498
- "$ xano profile:list -d\nAvailable profiles:\n\nProfile: default\n Account Origin: https://account.xano.com\n Instance Origin: https://instance.xano.com\n Access Token: ***...***\n Workspace: my-workspace\n Branch: main\n Project: my-project\n"
1499
- ],
1500
- "flags": {
1501
- "details": {
1502
- "char": "d",
1503
- "description": "Show detailed information for each profile",
1504
- "name": "details",
1505
- "required": false,
1506
- "allowNo": false,
1507
- "type": "boolean"
1508
- }
1509
- },
1510
- "hasDynamicHelp": false,
1511
- "hiddenAliases": [],
1512
- "id": "profile:list",
1512
+ "id": "profile:token",
1513
1513
  "pluginAlias": "@xano/cli",
1514
1514
  "pluginName": "@xano/cli",
1515
1515
  "pluginType": "core",
@@ -1520,7 +1520,7 @@
1520
1520
  "dist",
1521
1521
  "commands",
1522
1522
  "profile",
1523
- "list",
1523
+ "token",
1524
1524
  "index.js"
1525
1525
  ]
1526
1526
  },
@@ -1569,18 +1569,18 @@
1569
1569
  "index.js"
1570
1570
  ]
1571
1571
  },
1572
- "profile:token": {
1572
+ "profile:workspace": {
1573
1573
  "aliases": [],
1574
1574
  "args": {},
1575
- "description": "Print the access token for the default profile",
1575
+ "description": "Print the workspace ID for the default profile",
1576
1576
  "examples": [
1577
- "$ xano profile:token\neyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\n",
1578
- "$ xano profile:token | pbcopy\n# Copies the token to clipboard on macOS\n"
1577
+ "$ xano profile:workspace\nabc123-workspace-id\n",
1578
+ "$ xano profile:workspace | pbcopy\n# Copies the workspace ID to clipboard on macOS\n"
1579
1579
  ],
1580
1580
  "flags": {},
1581
1581
  "hasDynamicHelp": false,
1582
1582
  "hiddenAliases": [],
1583
- "id": "profile:token",
1583
+ "id": "profile:workspace",
1584
1584
  "pluginAlias": "@xano/cli",
1585
1585
  "pluginName": "@xano/cli",
1586
1586
  "pluginType": "core",
@@ -1591,7 +1591,33 @@
1591
1591
  "dist",
1592
1592
  "commands",
1593
1593
  "profile",
1594
- "token",
1594
+ "workspace",
1595
+ "index.js"
1596
+ ]
1597
+ },
1598
+ "profile:get_default": {
1599
+ "aliases": [],
1600
+ "args": {},
1601
+ "description": "Get the current default profile name",
1602
+ "examples": [
1603
+ "$ xano profile:get-default\nproduction\n",
1604
+ "$ xano profile:get-default\nNo default profile set\n"
1605
+ ],
1606
+ "flags": {},
1607
+ "hasDynamicHelp": false,
1608
+ "hiddenAliases": [],
1609
+ "id": "profile:get_default",
1610
+ "pluginAlias": "@xano/cli",
1611
+ "pluginName": "@xano/cli",
1612
+ "pluginType": "core",
1613
+ "strict": true,
1614
+ "enableJsonFlag": false,
1615
+ "isESM": true,
1616
+ "relativePath": [
1617
+ "dist",
1618
+ "commands",
1619
+ "profile",
1620
+ "get_default",
1595
1621
  "index.js"
1596
1622
  ]
1597
1623
  },
@@ -1706,20 +1732,19 @@
1706
1732
  "index.js"
1707
1733
  ]
1708
1734
  },
1709
- "release:delete": {
1735
+ "release:edit": {
1710
1736
  "aliases": [],
1711
1737
  "args": {
1712
1738
  "release_name": {
1713
- "description": "Release name to delete",
1739
+ "description": "Release name to edit",
1714
1740
  "name": "release_name",
1715
1741
  "required": true
1716
1742
  }
1717
1743
  },
1718
- "description": "Delete a release permanently. This action cannot be undone.",
1744
+ "description": "Edit an existing release",
1719
1745
  "examples": [
1720
- "$ xano release delete v1.0\nAre you sure you want to delete release 'v1.0'? This action cannot be undone. (y/N) y\nDeleted release 'v1.0'\n",
1721
- "$ xano release delete v1.0 --force\nDeleted release 'v1.0'\n",
1722
- "$ xano release delete v1.0 -f -o json"
1746
+ "$ xano release edit v1.0 --name \"v1.0-final\" --description \"Updated description\"\nUpdated release: v1.0-final - ID: 10\n",
1747
+ "$ xano release edit v1.0 --description \"New description\" -o json"
1723
1748
  ],
1724
1749
  "flags": {
1725
1750
  "profile": {
@@ -1741,13 +1766,23 @@
1741
1766
  "allowNo": false,
1742
1767
  "type": "boolean"
1743
1768
  },
1744
- "force": {
1745
- "char": "f",
1746
- "description": "Skip confirmation prompt",
1747
- "name": "force",
1769
+ "description": {
1770
+ "char": "d",
1771
+ "description": "New description",
1772
+ "name": "description",
1748
1773
  "required": false,
1749
- "allowNo": false,
1750
- "type": "boolean"
1774
+ "hasDynamicHelp": false,
1775
+ "multiple": false,
1776
+ "type": "option"
1777
+ },
1778
+ "name": {
1779
+ "char": "n",
1780
+ "description": "New name for the release",
1781
+ "name": "name",
1782
+ "required": false,
1783
+ "hasDynamicHelp": false,
1784
+ "multiple": false,
1785
+ "type": "option"
1751
1786
  },
1752
1787
  "output": {
1753
1788
  "char": "o",
@@ -1775,7 +1810,7 @@
1775
1810
  },
1776
1811
  "hasDynamicHelp": false,
1777
1812
  "hiddenAliases": [],
1778
- "id": "release:delete",
1813
+ "id": "release:edit",
1779
1814
  "pluginAlias": "@xano/cli",
1780
1815
  "pluginName": "@xano/cli",
1781
1816
  "pluginType": "core",
@@ -1786,43 +1821,24 @@
1786
1821
  "dist",
1787
1822
  "commands",
1788
1823
  "release",
1789
- "delete",
1790
- "index.js"
1791
- ]
1792
- },
1793
- "profile:workspace": {
1794
- "aliases": [],
1795
- "args": {},
1796
- "description": "Print the workspace ID for the default profile",
1797
- "examples": [
1798
- "$ xano profile:workspace\nabc123-workspace-id\n",
1799
- "$ xano profile:workspace | pbcopy\n# Copies the workspace ID to clipboard on macOS\n"
1800
- ],
1801
- "flags": {},
1802
- "hasDynamicHelp": false,
1803
- "hiddenAliases": [],
1804
- "id": "profile:workspace",
1805
- "pluginAlias": "@xano/cli",
1806
- "pluginName": "@xano/cli",
1807
- "pluginType": "core",
1808
- "strict": true,
1809
- "enableJsonFlag": false,
1810
- "isESM": true,
1811
- "relativePath": [
1812
- "dist",
1813
- "commands",
1814
- "profile",
1815
- "workspace",
1824
+ "edit",
1816
1825
  "index.js"
1817
1826
  ]
1818
1827
  },
1819
- "release:import": {
1828
+ "release:export": {
1820
1829
  "aliases": [],
1821
- "args": {},
1822
- "description": "Import a release file into a workspace",
1830
+ "args": {
1831
+ "release_name": {
1832
+ "description": "Release name to export",
1833
+ "name": "release_name",
1834
+ "required": true
1835
+ }
1836
+ },
1837
+ "description": "Export (download) a release to a local file",
1823
1838
  "examples": [
1824
- "$ xano release import --file ./my-release.tar.gz\nImported release as #15\n",
1825
- "$ xano release import --file ./my-release.tar.gz -o json"
1839
+ "$ xano release export v1.0\nDownloaded release 'v1.0' to ./release-v1.0.tar.gz\n",
1840
+ "$ xano release export v1.0 --output ./backups/my-release.tar.gz",
1841
+ "$ xano release export v1.0 -o json"
1826
1842
  ],
1827
1843
  "flags": {
1828
1844
  "profile": {
@@ -1844,19 +1860,10 @@
1844
1860
  "allowNo": false,
1845
1861
  "type": "boolean"
1846
1862
  },
1847
- "file": {
1848
- "char": "f",
1849
- "description": "Path to the release file (.tar.gz)",
1850
- "name": "file",
1851
- "required": true,
1852
- "hasDynamicHelp": false,
1853
- "multiple": false,
1854
- "type": "option"
1855
- },
1856
- "output": {
1863
+ "format": {
1857
1864
  "char": "o",
1858
1865
  "description": "Output format",
1859
- "name": "output",
1866
+ "name": "format",
1860
1867
  "required": false,
1861
1868
  "default": "summary",
1862
1869
  "hasDynamicHelp": false,
@@ -1867,6 +1874,14 @@
1867
1874
  ],
1868
1875
  "type": "option"
1869
1876
  },
1877
+ "output": {
1878
+ "description": "Output file path (defaults to ./release-{name}.tar.gz)",
1879
+ "name": "output",
1880
+ "required": false,
1881
+ "hasDynamicHelp": false,
1882
+ "multiple": false,
1883
+ "type": "option"
1884
+ },
1870
1885
  "workspace": {
1871
1886
  "char": "w",
1872
1887
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -1879,7 +1894,7 @@
1879
1894
  },
1880
1895
  "hasDynamicHelp": false,
1881
1896
  "hiddenAliases": [],
1882
- "id": "release:import",
1897
+ "id": "release:export",
1883
1898
  "pluginAlias": "@xano/cli",
1884
1899
  "pluginName": "@xano/cli",
1885
1900
  "pluginType": "core",
@@ -1890,24 +1905,23 @@
1890
1905
  "dist",
1891
1906
  "commands",
1892
1907
  "release",
1893
- "import",
1908
+ "export",
1894
1909
  "index.js"
1895
1910
  ]
1896
1911
  },
1897
- "release:export": {
1912
+ "release:get": {
1898
1913
  "aliases": [],
1899
1914
  "args": {
1900
1915
  "release_name": {
1901
- "description": "Release name to export",
1916
+ "description": "Release name to retrieve",
1902
1917
  "name": "release_name",
1903
1918
  "required": true
1904
1919
  }
1905
1920
  },
1906
- "description": "Export (download) a release to a local file",
1921
+ "description": "Get details of a specific release",
1907
1922
  "examples": [
1908
- "$ xano release export v1.0\nDownloaded release 'v1.0' to ./release-v1.0.tar.gz\n",
1909
- "$ xano release export v1.0 --output ./backups/my-release.tar.gz",
1910
- "$ xano release export v1.0 -o json"
1923
+ "$ xano release get v1.0\nRelease: v1.0 - ID: 10\n Branch: main\n Description: Initial release\n Hotfix: false\n",
1924
+ "$ xano release get v1.0 -w 5 -o json"
1911
1925
  ],
1912
1926
  "flags": {
1913
1927
  "profile": {
@@ -1929,10 +1943,10 @@
1929
1943
  "allowNo": false,
1930
1944
  "type": "boolean"
1931
1945
  },
1932
- "format": {
1946
+ "output": {
1933
1947
  "char": "o",
1934
1948
  "description": "Output format",
1935
- "name": "format",
1949
+ "name": "output",
1936
1950
  "required": false,
1937
1951
  "default": "summary",
1938
1952
  "hasDynamicHelp": false,
@@ -1943,14 +1957,6 @@
1943
1957
  ],
1944
1958
  "type": "option"
1945
1959
  },
1946
- "output": {
1947
- "description": "Output file path (defaults to ./release-{name}.tar.gz)",
1948
- "name": "output",
1949
- "required": false,
1950
- "hasDynamicHelp": false,
1951
- "multiple": false,
1952
- "type": "option"
1953
- },
1954
1960
  "workspace": {
1955
1961
  "char": "w",
1956
1962
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -1963,7 +1969,7 @@
1963
1969
  },
1964
1970
  "hasDynamicHelp": false,
1965
1971
  "hiddenAliases": [],
1966
- "id": "release:export",
1972
+ "id": "release:get",
1967
1973
  "pluginAlias": "@xano/cli",
1968
1974
  "pluginName": "@xano/cli",
1969
1975
  "pluginType": "core",
@@ -1974,23 +1980,24 @@
1974
1980
  "dist",
1975
1981
  "commands",
1976
1982
  "release",
1977
- "export",
1983
+ "get",
1978
1984
  "index.js"
1979
1985
  ]
1980
1986
  },
1981
- "release:get": {
1987
+ "release:delete": {
1982
1988
  "aliases": [],
1983
1989
  "args": {
1984
1990
  "release_name": {
1985
- "description": "Release name to retrieve",
1991
+ "description": "Release name to delete",
1986
1992
  "name": "release_name",
1987
1993
  "required": true
1988
1994
  }
1989
1995
  },
1990
- "description": "Get details of a specific release",
1996
+ "description": "Delete a release permanently. This action cannot be undone.",
1991
1997
  "examples": [
1992
- "$ xano release get v1.0\nRelease: v1.0 - ID: 10\n Branch: main\n Description: Initial release\n Hotfix: false\n",
1993
- "$ xano release get v1.0 -w 5 -o json"
1998
+ "$ xano release delete v1.0\nAre you sure you want to delete release 'v1.0'? This action cannot be undone. (y/N) y\nDeleted release 'v1.0'\n",
1999
+ "$ xano release delete v1.0 --force\nDeleted release 'v1.0'\n",
2000
+ "$ xano release delete v1.0 -f -o json"
1994
2001
  ],
1995
2002
  "flags": {
1996
2003
  "profile": {
@@ -2012,6 +2019,14 @@
2012
2019
  "allowNo": false,
2013
2020
  "type": "boolean"
2014
2021
  },
2022
+ "force": {
2023
+ "char": "f",
2024
+ "description": "Skip confirmation prompt",
2025
+ "name": "force",
2026
+ "required": false,
2027
+ "allowNo": false,
2028
+ "type": "boolean"
2029
+ },
2015
2030
  "output": {
2016
2031
  "char": "o",
2017
2032
  "description": "Output format",
@@ -2038,7 +2053,7 @@
2038
2053
  },
2039
2054
  "hasDynamicHelp": false,
2040
2055
  "hiddenAliases": [],
2041
- "id": "release:get",
2056
+ "id": "release:delete",
2042
2057
  "pluginAlias": "@xano/cli",
2043
2058
  "pluginName": "@xano/cli",
2044
2059
  "pluginType": "core",
@@ -2049,23 +2064,17 @@
2049
2064
  "dist",
2050
2065
  "commands",
2051
2066
  "release",
2052
- "get",
2053
- "index.js"
2054
- ]
2055
- },
2056
- "release:edit": {
2057
- "aliases": [],
2058
- "args": {
2059
- "release_name": {
2060
- "description": "Release name to edit",
2061
- "name": "release_name",
2062
- "required": true
2063
- }
2064
- },
2065
- "description": "Edit an existing release",
2067
+ "delete",
2068
+ "index.js"
2069
+ ]
2070
+ },
2071
+ "release:import": {
2072
+ "aliases": [],
2073
+ "args": {},
2074
+ "description": "Import a release file into a workspace",
2066
2075
  "examples": [
2067
- "$ xano release edit v1.0 --name \"v1.0-final\" --description \"Updated description\"\nUpdated release: v1.0-final - ID: 10\n",
2068
- "$ xano release edit v1.0 --description \"New description\" -o json"
2076
+ "$ xano release import --file ./my-release.tar.gz\nImported release as #15\n",
2077
+ "$ xano release import --file ./my-release.tar.gz -o json"
2069
2078
  ],
2070
2079
  "flags": {
2071
2080
  "profile": {
@@ -2087,20 +2096,11 @@
2087
2096
  "allowNo": false,
2088
2097
  "type": "boolean"
2089
2098
  },
2090
- "description": {
2091
- "char": "d",
2092
- "description": "New description",
2093
- "name": "description",
2094
- "required": false,
2095
- "hasDynamicHelp": false,
2096
- "multiple": false,
2097
- "type": "option"
2098
- },
2099
- "name": {
2100
- "char": "n",
2101
- "description": "New name for the release",
2102
- "name": "name",
2103
- "required": false,
2099
+ "file": {
2100
+ "char": "f",
2101
+ "description": "Path to the release file (.tar.gz)",
2102
+ "name": "file",
2103
+ "required": true,
2104
2104
  "hasDynamicHelp": false,
2105
2105
  "multiple": false,
2106
2106
  "type": "option"
@@ -2131,7 +2131,7 @@
2131
2131
  },
2132
2132
  "hasDynamicHelp": false,
2133
2133
  "hiddenAliases": [],
2134
- "id": "release:edit",
2134
+ "id": "release:import",
2135
2135
  "pluginAlias": "@xano/cli",
2136
2136
  "pluginName": "@xano/cli",
2137
2137
  "pluginType": "core",
@@ -2142,7 +2142,7 @@
2142
2142
  "dist",
2143
2143
  "commands",
2144
2144
  "release",
2145
- "edit",
2145
+ "import",
2146
2146
  "index.js"
2147
2147
  ]
2148
2148
  },
@@ -2384,245 +2384,16 @@
2384
2384
  ],
2385
2385
  "type": "option"
2386
2386
  },
2387
- "records": {
2388
- "description": "Include records (default: true, use --no-records to exclude)",
2389
- "name": "records",
2390
- "required": false,
2391
- "allowNo": true,
2392
- "type": "boolean"
2393
- },
2394
- "workspace": {
2395
- "char": "w",
2396
- "description": "Workspace ID (optional if set in profile)",
2397
- "name": "workspace",
2398
- "required": false,
2399
- "hasDynamicHelp": false,
2400
- "multiple": false,
2401
- "type": "option"
2402
- }
2403
- },
2404
- "hasDynamicHelp": false,
2405
- "hiddenAliases": [],
2406
- "id": "release:push",
2407
- "pluginAlias": "@xano/cli",
2408
- "pluginName": "@xano/cli",
2409
- "pluginType": "core",
2410
- "strict": true,
2411
- "enableJsonFlag": false,
2412
- "isESM": true,
2413
- "relativePath": [
2414
- "dist",
2415
- "commands",
2416
- "release",
2417
- "push",
2418
- "index.js"
2419
- ]
2420
- },
2421
- "static_host:list": {
2422
- "aliases": [],
2423
- "args": {},
2424
- "description": "List all static hosts in a workspace from the Xano Metadata API",
2425
- "examples": [
2426
- "$ xano static_host:list -w 40\nAvailable static hosts:\n - my-static-host (ID: 1)\n - another-host (ID: 2)\n",
2427
- "$ xano static_host:list --profile production\nAvailable static hosts:\n - my-static-host (ID: 1)\n - another-host (ID: 2)\n",
2428
- "$ xano static_host:list -w 40 --output json\n[\n {\n \"id\": 1,\n \"name\": \"my-static-host\",\n \"domain\": \"example.com\"\n }\n]\n",
2429
- "$ xano static_host:list -p staging -o json --page 2\n[\n {\n \"id\": 3,\n \"name\": \"static-host-3\"\n }\n]\n"
2430
- ],
2431
- "flags": {
2432
- "profile": {
2433
- "char": "p",
2434
- "description": "Profile to use (uses default profile if not specified)",
2435
- "env": "XANO_PROFILE",
2436
- "name": "profile",
2437
- "required": false,
2438
- "hasDynamicHelp": false,
2439
- "multiple": false,
2440
- "type": "option"
2441
- },
2442
- "verbose": {
2443
- "char": "v",
2444
- "description": "Show detailed request/response information",
2445
- "env": "XANO_VERBOSE",
2446
- "name": "verbose",
2447
- "required": false,
2448
- "allowNo": false,
2449
- "type": "boolean"
2450
- },
2451
- "output": {
2452
- "char": "o",
2453
- "description": "Output format",
2454
- "name": "output",
2455
- "required": false,
2456
- "default": "summary",
2457
- "hasDynamicHelp": false,
2458
- "multiple": false,
2459
- "options": [
2460
- "summary",
2461
- "json"
2462
- ],
2463
- "type": "option"
2464
- },
2465
- "page": {
2466
- "description": "Page number for pagination",
2467
- "name": "page",
2468
- "required": false,
2469
- "default": 1,
2470
- "hasDynamicHelp": false,
2471
- "multiple": false,
2472
- "type": "option"
2473
- },
2474
- "per_page": {
2475
- "description": "Number of results per page",
2476
- "name": "per_page",
2477
- "required": false,
2478
- "default": 50,
2479
- "hasDynamicHelp": false,
2480
- "multiple": false,
2481
- "type": "option"
2482
- },
2483
- "workspace": {
2484
- "char": "w",
2485
- "description": "Workspace ID (optional if set in profile)",
2486
- "name": "workspace",
2487
- "required": false,
2488
- "hasDynamicHelp": false,
2489
- "multiple": false,
2490
- "type": "option"
2491
- }
2492
- },
2493
- "hasDynamicHelp": false,
2494
- "hiddenAliases": [],
2495
- "id": "static_host:list",
2496
- "pluginAlias": "@xano/cli",
2497
- "pluginName": "@xano/cli",
2498
- "pluginType": "core",
2499
- "strict": true,
2500
- "enableJsonFlag": false,
2501
- "isESM": true,
2502
- "relativePath": [
2503
- "dist",
2504
- "commands",
2505
- "static_host",
2506
- "list",
2507
- "index.js"
2508
- ]
2509
- },
2510
- "tenant:create": {
2511
- "aliases": [],
2512
- "args": {
2513
- "display": {
2514
- "description": "Display name for the tenant",
2515
- "name": "display",
2516
- "required": true
2517
- }
2518
- },
2519
- "description": "Create a new tenant in a workspace",
2520
- "examples": [
2521
- "$ xano tenant create \"Production\"\nCreated tenant: Production (production) - ID: 42\n",
2522
- "$ xano tenant create \"Staging\" --description \"Staging env\" --cluster_id 1 --platform_id 1 --license tier2 -o json"
2523
- ],
2524
- "flags": {
2525
- "profile": {
2526
- "char": "p",
2527
- "description": "Profile to use (uses default profile if not specified)",
2528
- "env": "XANO_PROFILE",
2529
- "name": "profile",
2530
- "required": false,
2531
- "hasDynamicHelp": false,
2532
- "multiple": false,
2533
- "type": "option"
2534
- },
2535
- "verbose": {
2536
- "char": "v",
2537
- "description": "Show detailed request/response information",
2538
- "env": "XANO_VERBOSE",
2539
- "name": "verbose",
2540
- "required": false,
2541
- "allowNo": false,
2542
- "type": "boolean"
2543
- },
2544
- "cluster_id": {
2545
- "description": "Cluster ID to deploy to (required for tier2/tier3)",
2546
- "name": "cluster_id",
2547
- "required": false,
2548
- "hasDynamicHelp": false,
2549
- "multiple": false,
2550
- "type": "option"
2551
- },
2552
- "description": {
2553
- "char": "d",
2554
- "description": "Tenant description",
2555
- "name": "description",
2556
- "required": false,
2557
- "hasDynamicHelp": false,
2558
- "multiple": false,
2559
- "type": "option"
2560
- },
2561
- "domain": {
2562
- "description": "Custom domain for the tenant",
2563
- "name": "domain",
2564
- "required": false,
2565
- "hasDynamicHelp": false,
2566
- "multiple": false,
2567
- "type": "option"
2568
- },
2569
- "ephemeral": {
2570
- "description": "Mark tenant as ephemeral (allows push operations)",
2571
- "name": "ephemeral",
2572
- "allowNo": false,
2573
- "type": "boolean"
2574
- },
2575
- "ingress": {
2576
- "description": "Enable ingress",
2577
- "name": "ingress",
2578
- "allowNo": true,
2579
- "type": "boolean"
2580
- },
2581
- "license": {
2582
- "description": "License tier",
2583
- "name": "license",
2584
- "required": false,
2585
- "default": "tier1",
2586
- "hasDynamicHelp": false,
2587
- "multiple": false,
2588
- "options": [
2589
- "tier1",
2590
- "tier2",
2591
- "tier3"
2592
- ],
2593
- "type": "option"
2594
- },
2595
- "output": {
2596
- "char": "o",
2597
- "description": "Output format",
2598
- "name": "output",
2599
- "required": false,
2600
- "default": "summary",
2601
- "hasDynamicHelp": false,
2602
- "multiple": false,
2603
- "options": [
2604
- "summary",
2605
- "json"
2606
- ],
2607
- "type": "option"
2608
- },
2609
- "platform_id": {
2610
- "description": "Platform ID to use",
2611
- "name": "platform_id",
2387
+ "records": {
2388
+ "description": "Include records (default: true, use --no-records to exclude)",
2389
+ "name": "records",
2612
2390
  "required": false,
2613
- "hasDynamicHelp": false,
2614
- "multiple": false,
2615
- "type": "option"
2616
- },
2617
- "tasks": {
2618
- "description": "Enable background tasks",
2619
- "name": "tasks",
2620
2391
  "allowNo": true,
2621
2392
  "type": "boolean"
2622
2393
  },
2623
2394
  "workspace": {
2624
2395
  "char": "w",
2625
- "description": "Workspace ID (uses profile workspace if not provided)",
2396
+ "description": "Workspace ID (optional if set in profile)",
2626
2397
  "name": "workspace",
2627
2398
  "required": false,
2628
2399
  "hasDynamicHelp": false,
@@ -2632,7 +2403,7 @@
2632
2403
  },
2633
2404
  "hasDynamicHelp": false,
2634
2405
  "hiddenAliases": [],
2635
- "id": "tenant:create",
2406
+ "id": "release:push",
2636
2407
  "pluginAlias": "@xano/cli",
2637
2408
  "pluginName": "@xano/cli",
2638
2409
  "pluginType": "core",
@@ -2642,24 +2413,20 @@
2642
2413
  "relativePath": [
2643
2414
  "dist",
2644
2415
  "commands",
2645
- "tenant",
2646
- "create",
2416
+ "release",
2417
+ "push",
2647
2418
  "index.js"
2648
2419
  ]
2649
2420
  },
2650
- "tenant:deploy_release": {
2421
+ "static_host:list": {
2651
2422
  "aliases": [],
2652
- "args": {
2653
- "tenant_name": {
2654
- "description": "Tenant name to deploy to",
2655
- "name": "tenant_name",
2656
- "required": true
2657
- }
2658
- },
2659
- "description": "Deploy a release to a tenant",
2423
+ "args": {},
2424
+ "description": "List all static hosts in a workspace from the Xano Metadata API",
2660
2425
  "examples": [
2661
- "$ xano tenant deploy_release t1234-abcd-xyz1 --release v1.0\nDeployed release \"v1.0\" to tenant: My Tenant (my-tenant)\n",
2662
- "$ xano tenant deploy_release t1234-abcd-xyz1 --release v1.0 -o json"
2426
+ "$ xano static_host:list -w 40\nAvailable static hosts:\n - my-static-host (ID: 1)\n - another-host (ID: 2)\n",
2427
+ "$ xano static_host:list --profile production\nAvailable static hosts:\n - my-static-host (ID: 1)\n - another-host (ID: 2)\n",
2428
+ "$ xano static_host:list -w 40 --output json\n[\n {\n \"id\": 1,\n \"name\": \"my-static-host\",\n \"domain\": \"example.com\"\n }\n]\n",
2429
+ "$ xano static_host:list -p staging -o json --page 2\n[\n {\n \"id\": 3,\n \"name\": \"static-host-3\"\n }\n]\n"
2663
2430
  ],
2664
2431
  "flags": {
2665
2432
  "profile": {
@@ -2695,18 +2462,27 @@
2695
2462
  ],
2696
2463
  "type": "option"
2697
2464
  },
2698
- "release": {
2699
- "char": "r",
2700
- "description": "Release name to deploy",
2701
- "name": "release",
2702
- "required": true,
2465
+ "page": {
2466
+ "description": "Page number for pagination",
2467
+ "name": "page",
2468
+ "required": false,
2469
+ "default": 1,
2470
+ "hasDynamicHelp": false,
2471
+ "multiple": false,
2472
+ "type": "option"
2473
+ },
2474
+ "per_page": {
2475
+ "description": "Number of results per page",
2476
+ "name": "per_page",
2477
+ "required": false,
2478
+ "default": 50,
2703
2479
  "hasDynamicHelp": false,
2704
2480
  "multiple": false,
2705
2481
  "type": "option"
2706
2482
  },
2707
2483
  "workspace": {
2708
2484
  "char": "w",
2709
- "description": "Workspace ID (uses profile workspace if not provided)",
2485
+ "description": "Workspace ID (optional if set in profile)",
2710
2486
  "name": "workspace",
2711
2487
  "required": false,
2712
2488
  "hasDynamicHelp": false,
@@ -2716,7 +2492,7 @@
2716
2492
  },
2717
2493
  "hasDynamicHelp": false,
2718
2494
  "hiddenAliases": [],
2719
- "id": "tenant:deploy_release",
2495
+ "id": "static_host:list",
2720
2496
  "pluginAlias": "@xano/cli",
2721
2497
  "pluginName": "@xano/cli",
2722
2498
  "pluginType": "core",
@@ -2726,24 +2502,19 @@
2726
2502
  "relativePath": [
2727
2503
  "dist",
2728
2504
  "commands",
2729
- "tenant",
2730
- "deploy_release",
2505
+ "static_host",
2506
+ "list",
2731
2507
  "index.js"
2732
2508
  ]
2733
2509
  },
2734
- "tenant:edit": {
2510
+ "unit_test:list": {
2735
2511
  "aliases": [],
2736
- "args": {
2737
- "tenant_name": {
2738
- "description": "Tenant name to edit",
2739
- "name": "tenant_name",
2740
- "required": true
2741
- }
2742
- },
2743
- "description": "Edit an existing tenant",
2512
+ "args": {},
2513
+ "description": "List all unit tests in a workspace",
2744
2514
  "examples": [
2745
- "$ xano tenant edit t1234-abcd-xyz1 --display \"New Name\" --description \"Updated description\"\nUpdated tenant: New Name (my-tenant) - ID: 42\n",
2746
- "$ xano tenant edit t1234-abcd-xyz1 --no-tasks --no-ingress -o json"
2515
+ "$ xano unit-test list\nUnit tests in workspace 5:\n - my-test (ID: abc-123) [function: math]\n - auth-check (ID: def-456) [query: /user/login]\n",
2516
+ "$ xano unit-test list -w 5 --output json",
2517
+ "$ xano unit-test list --obj-type function"
2747
2518
  ],
2748
2519
  "flags": {
2749
2520
  "profile": {
@@ -2765,38 +2536,28 @@
2765
2536
  "allowNo": false,
2766
2537
  "type": "boolean"
2767
2538
  },
2768
- "description": {
2769
- "char": "d",
2770
- "description": "New description",
2771
- "name": "description",
2772
- "required": false,
2773
- "hasDynamicHelp": false,
2774
- "multiple": false,
2775
- "type": "option"
2776
- },
2777
- "display": {
2778
- "description": "New display name",
2779
- "name": "display",
2539
+ "branch": {
2540
+ "char": "b",
2541
+ "description": "Filter by branch name",
2542
+ "name": "branch",
2780
2543
  "required": false,
2781
2544
  "hasDynamicHelp": false,
2782
2545
  "multiple": false,
2783
2546
  "type": "option"
2784
2547
  },
2785
- "domain": {
2786
- "description": "Custom domain",
2787
- "name": "domain",
2548
+ "obj-type": {
2549
+ "description": "Filter by object type",
2550
+ "name": "obj-type",
2788
2551
  "required": false,
2789
2552
  "hasDynamicHelp": false,
2790
2553
  "multiple": false,
2554
+ "options": [
2555
+ "function",
2556
+ "query",
2557
+ "middleware"
2558
+ ],
2791
2559
  "type": "option"
2792
2560
  },
2793
- "ingress": {
2794
- "description": "Enable/disable ingress",
2795
- "name": "ingress",
2796
- "required": false,
2797
- "allowNo": true,
2798
- "type": "boolean"
2799
- },
2800
2561
  "output": {
2801
2562
  "char": "o",
2802
2563
  "description": "Output format",
@@ -2811,27 +2572,80 @@
2811
2572
  ],
2812
2573
  "type": "option"
2813
2574
  },
2814
- "proxy": {
2815
- "description": "Proxy URL",
2816
- "name": "proxy",
2575
+ "workspace": {
2576
+ "char": "w",
2577
+ "description": "Workspace ID (uses profile workspace if not provided)",
2578
+ "name": "workspace",
2579
+ "required": false,
2580
+ "hasDynamicHelp": false,
2581
+ "multiple": false,
2582
+ "type": "option"
2583
+ }
2584
+ },
2585
+ "hasDynamicHelp": false,
2586
+ "hiddenAliases": [],
2587
+ "id": "unit_test:list",
2588
+ "pluginAlias": "@xano/cli",
2589
+ "pluginName": "@xano/cli",
2590
+ "pluginType": "core",
2591
+ "strict": true,
2592
+ "enableJsonFlag": false,
2593
+ "isESM": true,
2594
+ "relativePath": [
2595
+ "dist",
2596
+ "commands",
2597
+ "unit_test",
2598
+ "list",
2599
+ "index.js"
2600
+ ]
2601
+ },
2602
+ "unit_test:run": {
2603
+ "aliases": [],
2604
+ "args": {
2605
+ "unit_test_id": {
2606
+ "description": "ID of the unit test to run",
2607
+ "name": "unit_test_id",
2608
+ "required": true
2609
+ }
2610
+ },
2611
+ "description": "Run a unit test",
2612
+ "examples": [
2613
+ "$ xano unit-test run abc-123\nRunning unit test abc-123...\nResult: PASS\n",
2614
+ "$ xano unit-test run abc-123 -o json"
2615
+ ],
2616
+ "flags": {
2617
+ "profile": {
2618
+ "char": "p",
2619
+ "description": "Profile to use (uses default profile if not specified)",
2620
+ "env": "XANO_PROFILE",
2621
+ "name": "profile",
2817
2622
  "required": false,
2818
2623
  "hasDynamicHelp": false,
2819
2624
  "multiple": false,
2820
2625
  "type": "option"
2821
2626
  },
2822
- "rbac": {
2823
- "description": "Enable/disable RBAC",
2824
- "name": "rbac",
2627
+ "verbose": {
2628
+ "char": "v",
2629
+ "description": "Show detailed request/response information",
2630
+ "env": "XANO_VERBOSE",
2631
+ "name": "verbose",
2825
2632
  "required": false,
2826
- "allowNo": true,
2633
+ "allowNo": false,
2827
2634
  "type": "boolean"
2828
2635
  },
2829
- "tasks": {
2830
- "description": "Enable/disable background tasks",
2831
- "name": "tasks",
2636
+ "output": {
2637
+ "char": "o",
2638
+ "description": "Output format",
2639
+ "name": "output",
2832
2640
  "required": false,
2833
- "allowNo": true,
2834
- "type": "boolean"
2641
+ "default": "summary",
2642
+ "hasDynamicHelp": false,
2643
+ "multiple": false,
2644
+ "options": [
2645
+ "summary",
2646
+ "json"
2647
+ ],
2648
+ "type": "option"
2835
2649
  },
2836
2650
  "workspace": {
2837
2651
  "char": "w",
@@ -2845,7 +2659,7 @@
2845
2659
  },
2846
2660
  "hasDynamicHelp": false,
2847
2661
  "hiddenAliases": [],
2848
- "id": "tenant:edit",
2662
+ "id": "unit_test:run",
2849
2663
  "pluginAlias": "@xano/cli",
2850
2664
  "pluginName": "@xano/cli",
2851
2665
  "pluginType": "core",
@@ -2855,25 +2669,18 @@
2855
2669
  "relativePath": [
2856
2670
  "dist",
2857
2671
  "commands",
2858
- "tenant",
2859
- "edit",
2672
+ "unit_test",
2673
+ "run",
2860
2674
  "index.js"
2861
2675
  ]
2862
2676
  },
2863
- "tenant:delete": {
2677
+ "unit_test:run_all": {
2864
2678
  "aliases": [],
2865
- "args": {
2866
- "tenant_name": {
2867
- "description": "Tenant name to delete",
2868
- "name": "tenant_name",
2869
- "required": true
2870
- }
2871
- },
2872
- "description": "Delete a tenant permanently. This destroys all associated infrastructure and cannot be undone.",
2679
+ "args": {},
2680
+ "description": "Run all unit tests in a workspace",
2873
2681
  "examples": [
2874
- "$ xano tenant delete t1234-abcd-xyz1\nAre you sure you want to delete tenant t1234-abcd-xyz1? This action cannot be undone. (y/N) y\nDeleted tenant t1234-abcd-xyz1\n",
2875
- "$ xano tenant delete t1234-abcd-xyz1 --force\nDeleted tenant t1234-abcd-xyz1\n",
2876
- "$ xano tenant delete t1234-abcd-xyz1 -f -o json"
2682
+ "$ xano unit-test run-all\nRunning 5 unit tests...\n\nPASS my-test [function: math]\nPASS auth-check [query: /user/login]\nFAIL data-validation [function: validate]\n Error: assertion failed\n\nResults: 2 passed, 1 failed\n",
2683
+ "$ xano unit-test run-all --obj-type function -o json"
2877
2684
  ],
2878
2685
  "flags": {
2879
2686
  "profile": {
@@ -2895,13 +2702,27 @@
2895
2702
  "allowNo": false,
2896
2703
  "type": "boolean"
2897
2704
  },
2898
- "force": {
2899
- "char": "f",
2900
- "description": "Skip confirmation prompt",
2901
- "name": "force",
2705
+ "branch": {
2706
+ "char": "b",
2707
+ "description": "Filter by branch name",
2708
+ "name": "branch",
2902
2709
  "required": false,
2903
- "allowNo": false,
2904
- "type": "boolean"
2710
+ "hasDynamicHelp": false,
2711
+ "multiple": false,
2712
+ "type": "option"
2713
+ },
2714
+ "obj-type": {
2715
+ "description": "Filter by object type",
2716
+ "name": "obj-type",
2717
+ "required": false,
2718
+ "hasDynamicHelp": false,
2719
+ "multiple": false,
2720
+ "options": [
2721
+ "function",
2722
+ "query",
2723
+ "middleware"
2724
+ ],
2725
+ "type": "option"
2905
2726
  },
2906
2727
  "output": {
2907
2728
  "char": "o",
@@ -2929,7 +2750,7 @@
2929
2750
  },
2930
2751
  "hasDynamicHelp": false,
2931
2752
  "hiddenAliases": [],
2932
- "id": "tenant:delete",
2753
+ "id": "unit_test:run_all",
2933
2754
  "pluginAlias": "@xano/cli",
2934
2755
  "pluginName": "@xano/cli",
2935
2756
  "pluginType": "core",
@@ -2939,24 +2760,24 @@
2939
2760
  "relativePath": [
2940
2761
  "dist",
2941
2762
  "commands",
2942
- "tenant",
2943
- "delete",
2763
+ "unit_test",
2764
+ "run_all",
2944
2765
  "index.js"
2945
2766
  ]
2946
2767
  },
2947
- "tenant:deploy_platform": {
2768
+ "workflow_test:delete": {
2948
2769
  "aliases": [],
2949
2770
  "args": {
2950
- "tenant_name": {
2951
- "description": "Tenant name to deploy to",
2952
- "name": "tenant_name",
2771
+ "workflow_test_id": {
2772
+ "description": "ID of the workflow test to delete",
2773
+ "name": "workflow_test_id",
2953
2774
  "required": true
2954
2775
  }
2955
2776
  },
2956
- "description": "Deploy a platform version to a tenant",
2777
+ "description": "Delete a workflow test",
2957
2778
  "examples": [
2958
- "$ xano tenant deploy_platform t1234-abcd-xyz1 --platform_id 5\nDeployed platform 5 to tenant: My Tenant (my-tenant)\n",
2959
- "$ xano tenant deploy_platform t1234-abcd-xyz1 --platform_id 5 -o json"
2779
+ "$ xano workflow-test delete 1\nAre you sure you want to delete workflow test 1? (y/N) y\nDeleted workflow test 1\n",
2780
+ "$ xano workflow-test delete 1 --force"
2960
2781
  ],
2961
2782
  "flags": {
2962
2783
  "profile": {
@@ -2978,6 +2799,14 @@
2978
2799
  "allowNo": false,
2979
2800
  "type": "boolean"
2980
2801
  },
2802
+ "force": {
2803
+ "char": "f",
2804
+ "description": "Skip confirmation prompt",
2805
+ "name": "force",
2806
+ "required": false,
2807
+ "allowNo": false,
2808
+ "type": "boolean"
2809
+ },
2981
2810
  "output": {
2982
2811
  "char": "o",
2983
2812
  "description": "Output format",
@@ -2992,14 +2821,6 @@
2992
2821
  ],
2993
2822
  "type": "option"
2994
2823
  },
2995
- "platform_id": {
2996
- "description": "Platform ID to deploy",
2997
- "name": "platform_id",
2998
- "required": true,
2999
- "hasDynamicHelp": false,
3000
- "multiple": false,
3001
- "type": "option"
3002
- },
3003
2824
  "workspace": {
3004
2825
  "char": "w",
3005
2826
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -3012,7 +2833,7 @@
3012
2833
  },
3013
2834
  "hasDynamicHelp": false,
3014
2835
  "hiddenAliases": [],
3015
- "id": "tenant:deploy_platform",
2836
+ "id": "workflow_test:delete",
3016
2837
  "pluginAlias": "@xano/cli",
3017
2838
  "pluginName": "@xano/cli",
3018
2839
  "pluginType": "core",
@@ -3022,24 +2843,25 @@
3022
2843
  "relativePath": [
3023
2844
  "dist",
3024
2845
  "commands",
3025
- "tenant",
3026
- "deploy_platform",
2846
+ "workflow_test",
2847
+ "delete",
3027
2848
  "index.js"
3028
2849
  ]
3029
2850
  },
3030
- "tenant:get": {
2851
+ "workflow_test:get": {
3031
2852
  "aliases": [],
3032
2853
  "args": {
3033
- "tenant_name": {
3034
- "description": "Tenant name to retrieve",
3035
- "name": "tenant_name",
2854
+ "workflow_test_id": {
2855
+ "description": "ID of the workflow test",
2856
+ "name": "workflow_test_id",
3036
2857
  "required": true
3037
2858
  }
3038
2859
  },
3039
- "description": "Get details of a specific tenant",
2860
+ "description": "Get a specific workflow test",
3040
2861
  "examples": [
3041
- "$ xano tenant get t1234-abcd-xyz1\nTenant: My Tenant (my-tenant)\n State: ok\n License: tier1\n Domain: my-tenant.xano.io\n Cluster: default\n Release: v1.0\n",
3042
- "$ xano tenant get t1234-abcd-xyz1 -w 5 -o json"
2862
+ "$ xano workflow-test get 1\nWorkflow Test: my-test (ID: 1)\n Description: Validates auth endpoints\n Branch: main\n",
2863
+ "$ xano workflow-test get 1 -o xs",
2864
+ "$ xano workflow-test get 1 -o json"
3043
2865
  ],
3044
2866
  "flags": {
3045
2867
  "profile": {
@@ -3061,6 +2883,13 @@
3061
2883
  "allowNo": false,
3062
2884
  "type": "boolean"
3063
2885
  },
2886
+ "include-draft": {
2887
+ "description": "Include draft version",
2888
+ "name": "include-draft",
2889
+ "required": false,
2890
+ "allowNo": false,
2891
+ "type": "boolean"
2892
+ },
3064
2893
  "output": {
3065
2894
  "char": "o",
3066
2895
  "description": "Output format",
@@ -3071,7 +2900,8 @@
3071
2900
  "multiple": false,
3072
2901
  "options": [
3073
2902
  "summary",
3074
- "json"
2903
+ "json",
2904
+ "xs"
3075
2905
  ],
3076
2906
  "type": "option"
3077
2907
  },
@@ -3087,7 +2917,7 @@
3087
2917
  },
3088
2918
  "hasDynamicHelp": false,
3089
2919
  "hiddenAliases": [],
3090
- "id": "tenant:get",
2920
+ "id": "workflow_test:get",
3091
2921
  "pluginAlias": "@xano/cli",
3092
2922
  "pluginName": "@xano/cli",
3093
2923
  "pluginType": "core",
@@ -3097,18 +2927,19 @@
3097
2927
  "relativePath": [
3098
2928
  "dist",
3099
2929
  "commands",
3100
- "tenant",
2930
+ "workflow_test",
3101
2931
  "get",
3102
2932
  "index.js"
3103
2933
  ]
3104
2934
  },
3105
- "tenant:list": {
2935
+ "workflow_test:list": {
3106
2936
  "aliases": [],
3107
2937
  "args": {},
3108
- "description": "List all tenants in a workspace",
2938
+ "description": "List all workflow tests in a workspace",
3109
2939
  "examples": [
3110
- "$ xano tenant list\nTenants in workspace 5:\n - My Tenant (my-tenant) [ok] - tier1\n - Staging (staging) [ok] - tier1\n",
3111
- "$ xano tenant list -w 5 --output json"
2940
+ "$ xano workflow-test list\nWorkflow tests in workspace 5:\n - my-test (ID: 1)\n - auth-flow (ID: 2) - Validates auth endpoints\n",
2941
+ "$ xano workflow-test list -w 5 --output json",
2942
+ "$ xano workflow-test list --branch main"
3112
2943
  ],
3113
2944
  "flags": {
3114
2945
  "profile": {
@@ -3130,6 +2961,15 @@
3130
2961
  "allowNo": false,
3131
2962
  "type": "boolean"
3132
2963
  },
2964
+ "branch": {
2965
+ "char": "b",
2966
+ "description": "Filter by branch name",
2967
+ "name": "branch",
2968
+ "required": false,
2969
+ "hasDynamicHelp": false,
2970
+ "multiple": false,
2971
+ "type": "option"
2972
+ },
3133
2973
  "output": {
3134
2974
  "char": "o",
3135
2975
  "description": "Output format",
@@ -3156,7 +2996,7 @@
3156
2996
  },
3157
2997
  "hasDynamicHelp": false,
3158
2998
  "hiddenAliases": [],
3159
- "id": "tenant:list",
2999
+ "id": "workflow_test:list",
3160
3000
  "pluginAlias": "@xano/cli",
3161
3001
  "pluginName": "@xano/cli",
3162
3002
  "pluginType": "core",
@@ -3166,26 +3006,24 @@
3166
3006
  "relativePath": [
3167
3007
  "dist",
3168
3008
  "commands",
3169
- "tenant",
3009
+ "workflow_test",
3170
3010
  "list",
3171
3011
  "index.js"
3172
3012
  ]
3173
3013
  },
3174
- "tenant:pull": {
3014
+ "workflow_test:run": {
3175
3015
  "aliases": [],
3176
3016
  "args": {
3177
- "directory": {
3178
- "description": "Output directory for pulled documents",
3179
- "name": "directory",
3017
+ "workflow_test_id": {
3018
+ "description": "ID of the workflow test to run",
3019
+ "name": "workflow_test_id",
3180
3020
  "required": true
3181
3021
  }
3182
3022
  },
3183
- "description": "Pull a tenant multidoc from the Xano Metadata API and split into individual files",
3023
+ "description": "Run a workflow test",
3184
3024
  "examples": [
3185
- "$ xano tenant pull ./my-tenant -t my-tenant\nPulled 42 documents from tenant my-tenant to ./my-tenant\n",
3186
- "$ xano tenant pull ./output -t my-tenant -w 40\nPulled 15 documents from tenant my-tenant to ./output\n",
3187
- "$ xano tenant pull ./backup -t my-tenant --profile production --env --records\nPulled 58 documents from tenant my-tenant to ./backup\n",
3188
- "$ xano tenant pull ./my-tenant -t my-tenant --draft\nPulled 42 documents from tenant my-tenant to ./my-tenant\n"
3025
+ "$ xano workflow-test run 1\nRunning workflow test 1...\nResult: PASS (1.234s)\n",
3026
+ "$ xano workflow-test run 1 -o json"
3189
3027
  ],
3190
3028
  "flags": {
3191
3029
  "profile": {
@@ -3207,39 +3045,23 @@
3207
3045
  "allowNo": false,
3208
3046
  "type": "boolean"
3209
3047
  },
3210
- "draft": {
3211
- "description": "Include draft versions",
3212
- "name": "draft",
3213
- "required": false,
3214
- "allowNo": false,
3215
- "type": "boolean"
3216
- },
3217
- "env": {
3218
- "description": "Include environment variables",
3219
- "name": "env",
3220
- "required": false,
3221
- "allowNo": false,
3222
- "type": "boolean"
3223
- },
3224
- "records": {
3225
- "description": "Include records",
3226
- "name": "records",
3048
+ "output": {
3049
+ "char": "o",
3050
+ "description": "Output format",
3051
+ "name": "output",
3227
3052
  "required": false,
3228
- "allowNo": false,
3229
- "type": "boolean"
3230
- },
3231
- "tenant": {
3232
- "char": "t",
3233
- "description": "Tenant name to pull from",
3234
- "name": "tenant",
3235
- "required": true,
3053
+ "default": "summary",
3236
3054
  "hasDynamicHelp": false,
3237
3055
  "multiple": false,
3056
+ "options": [
3057
+ "summary",
3058
+ "json"
3059
+ ],
3238
3060
  "type": "option"
3239
3061
  },
3240
3062
  "workspace": {
3241
3063
  "char": "w",
3242
- "description": "Workspace ID (optional if set in profile)",
3064
+ "description": "Workspace ID (uses profile workspace if not provided)",
3243
3065
  "name": "workspace",
3244
3066
  "required": false,
3245
3067
  "hasDynamicHelp": false,
@@ -3249,7 +3071,7 @@
3249
3071
  },
3250
3072
  "hasDynamicHelp": false,
3251
3073
  "hiddenAliases": [],
3252
- "id": "tenant:pull",
3074
+ "id": "workflow_test:run",
3253
3075
  "pluginAlias": "@xano/cli",
3254
3076
  "pluginName": "@xano/cli",
3255
3077
  "pluginType": "core",
@@ -3259,24 +3081,18 @@
3259
3081
  "relativePath": [
3260
3082
  "dist",
3261
3083
  "commands",
3262
- "tenant",
3263
- "pull",
3084
+ "workflow_test",
3085
+ "run",
3264
3086
  "index.js"
3265
3087
  ]
3266
3088
  },
3267
- "tenant:impersonate": {
3089
+ "workflow_test:run_all": {
3268
3090
  "aliases": [],
3269
- "args": {
3270
- "tenant_name": {
3271
- "description": "Tenant name to impersonate",
3272
- "name": "tenant_name",
3273
- "required": true
3274
- }
3275
- },
3276
- "description": "Impersonate a tenant and open it in the browser",
3091
+ "args": {},
3092
+ "description": "Run all workflow tests in a workspace",
3277
3093
  "examples": [
3278
- "$ xano tenant impersonate my-tenant\nOpening browser...\nImpersonation successful!\n",
3279
- "$ xano tenant impersonate my-tenant -o json"
3094
+ "$ xano workflow-test run-all\nRunning 3 workflow tests...\n\nPASS my-test (1.234s)\nPASS auth-flow (0.567s)\nFAIL data-validation (0.890s)\n Error: assertion failed at step 3\n\nResults: 2 passed, 1 failed (2.691s total)\n",
3095
+ "$ xano workflow-test run-all --branch main -o json"
3280
3096
  ],
3281
3097
  "flags": {
3282
3098
  "profile": {
@@ -3298,6 +3114,15 @@
3298
3114
  "allowNo": false,
3299
3115
  "type": "boolean"
3300
3116
  },
3117
+ "branch": {
3118
+ "char": "b",
3119
+ "description": "Filter by branch name",
3120
+ "name": "branch",
3121
+ "required": false,
3122
+ "hasDynamicHelp": false,
3123
+ "multiple": false,
3124
+ "type": "option"
3125
+ },
3301
3126
  "output": {
3302
3127
  "char": "o",
3303
3128
  "description": "Output format",
@@ -3312,14 +3137,6 @@
3312
3137
  ],
3313
3138
  "type": "option"
3314
3139
  },
3315
- "url-only": {
3316
- "char": "u",
3317
- "description": "Print the URL without opening the browser",
3318
- "name": "url-only",
3319
- "required": false,
3320
- "allowNo": false,
3321
- "type": "boolean"
3322
- },
3323
3140
  "workspace": {
3324
3141
  "char": "w",
3325
3142
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -3332,7 +3149,7 @@
3332
3149
  },
3333
3150
  "hasDynamicHelp": false,
3334
3151
  "hiddenAliases": [],
3335
- "id": "tenant:impersonate",
3152
+ "id": "workflow_test:run_all",
3336
3153
  "pluginAlias": "@xano/cli",
3337
3154
  "pluginName": "@xano/cli",
3338
3155
  "pluginType": "core",
@@ -3342,19 +3159,24 @@
3342
3159
  "relativePath": [
3343
3160
  "dist",
3344
3161
  "commands",
3345
- "tenant",
3346
- "impersonate",
3162
+ "workflow_test",
3163
+ "run_all",
3347
3164
  "index.js"
3348
3165
  ]
3349
3166
  },
3350
- "unit_test:list": {
3167
+ "tenant:create": {
3351
3168
  "aliases": [],
3352
- "args": {},
3353
- "description": "List all unit tests in a workspace",
3169
+ "args": {
3170
+ "display": {
3171
+ "description": "Display name for the tenant",
3172
+ "name": "display",
3173
+ "required": true
3174
+ }
3175
+ },
3176
+ "description": "Create a new tenant in a workspace",
3354
3177
  "examples": [
3355
- "$ xano unit-test list\nUnit tests in workspace 5:\n - my-test (ID: abc-123) [function: math]\n - auth-check (ID: def-456) [query: /user/login]\n",
3356
- "$ xano unit-test list -w 5 --output json",
3357
- "$ xano unit-test list --obj-type function"
3178
+ "$ xano tenant create \"Production\"\nCreated tenant: Production (production) - ID: 42\n",
3179
+ "$ xano tenant create \"Staging\" --description \"Staging env\" --cluster_id 1 --platform_id 1 --license tier2 -o json"
3358
3180
  ],
3359
3181
  "flags": {
3360
3182
  "profile": {
@@ -3376,25 +3198,54 @@
3376
3198
  "allowNo": false,
3377
3199
  "type": "boolean"
3378
3200
  },
3379
- "branch": {
3380
- "char": "b",
3381
- "description": "Filter by branch name",
3382
- "name": "branch",
3201
+ "cluster_id": {
3202
+ "description": "Cluster ID to deploy to (required for tier2/tier3)",
3203
+ "name": "cluster_id",
3383
3204
  "required": false,
3384
3205
  "hasDynamicHelp": false,
3385
3206
  "multiple": false,
3386
3207
  "type": "option"
3387
3208
  },
3388
- "obj-type": {
3389
- "description": "Filter by object type",
3390
- "name": "obj-type",
3209
+ "description": {
3210
+ "char": "d",
3211
+ "description": "Tenant description",
3212
+ "name": "description",
3213
+ "required": false,
3214
+ "hasDynamicHelp": false,
3215
+ "multiple": false,
3216
+ "type": "option"
3217
+ },
3218
+ "domain": {
3219
+ "description": "Custom domain for the tenant",
3220
+ "name": "domain",
3221
+ "required": false,
3222
+ "hasDynamicHelp": false,
3223
+ "multiple": false,
3224
+ "type": "option"
3225
+ },
3226
+ "ephemeral": {
3227
+ "description": "Mark tenant as ephemeral (allows push operations)",
3228
+ "name": "ephemeral",
3229
+ "allowNo": false,
3230
+ "type": "boolean"
3231
+ },
3232
+ "ingress": {
3233
+ "description": "Enable ingress",
3234
+ "name": "ingress",
3235
+ "allowNo": true,
3236
+ "type": "boolean"
3237
+ },
3238
+ "license": {
3239
+ "description": "License tier",
3240
+ "name": "license",
3391
3241
  "required": false,
3242
+ "default": "tier1",
3392
3243
  "hasDynamicHelp": false,
3393
3244
  "multiple": false,
3394
3245
  "options": [
3395
- "function",
3396
- "query",
3397
- "middleware"
3246
+ "tier1",
3247
+ "tier2",
3248
+ "tier3"
3398
3249
  ],
3399
3250
  "type": "option"
3400
3251
  },
@@ -3412,6 +3263,20 @@
3412
3263
  ],
3413
3264
  "type": "option"
3414
3265
  },
3266
+ "platform_id": {
3267
+ "description": "Platform ID to use",
3268
+ "name": "platform_id",
3269
+ "required": false,
3270
+ "hasDynamicHelp": false,
3271
+ "multiple": false,
3272
+ "type": "option"
3273
+ },
3274
+ "tasks": {
3275
+ "description": "Enable background tasks",
3276
+ "name": "tasks",
3277
+ "allowNo": true,
3278
+ "type": "boolean"
3279
+ },
3415
3280
  "workspace": {
3416
3281
  "char": "w",
3417
3282
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -3424,7 +3289,7 @@
3424
3289
  },
3425
3290
  "hasDynamicHelp": false,
3426
3291
  "hiddenAliases": [],
3427
- "id": "unit_test:list",
3292
+ "id": "tenant:create",
3428
3293
  "pluginAlias": "@xano/cli",
3429
3294
  "pluginName": "@xano/cli",
3430
3295
  "pluginType": "core",
@@ -3434,24 +3299,25 @@
3434
3299
  "relativePath": [
3435
3300
  "dist",
3436
3301
  "commands",
3437
- "unit_test",
3438
- "list",
3302
+ "tenant",
3303
+ "create",
3439
3304
  "index.js"
3440
3305
  ]
3441
3306
  },
3442
- "unit_test:run": {
3307
+ "tenant:delete": {
3443
3308
  "aliases": [],
3444
3309
  "args": {
3445
- "unit_test_id": {
3446
- "description": "ID of the unit test to run",
3447
- "name": "unit_test_id",
3310
+ "tenant_name": {
3311
+ "description": "Tenant name to delete",
3312
+ "name": "tenant_name",
3448
3313
  "required": true
3449
3314
  }
3450
3315
  },
3451
- "description": "Run a unit test",
3316
+ "description": "Delete a tenant permanently. This destroys all associated infrastructure and cannot be undone.",
3452
3317
  "examples": [
3453
- "$ xano unit-test run abc-123\nRunning unit test abc-123...\nResult: PASS\n",
3454
- "$ xano unit-test run abc-123 -o json"
3318
+ "$ xano tenant delete t1234-abcd-xyz1\nAre you sure you want to delete tenant t1234-abcd-xyz1? This action cannot be undone. (y/N) y\nDeleted tenant t1234-abcd-xyz1\n",
3319
+ "$ xano tenant delete t1234-abcd-xyz1 --force\nDeleted tenant t1234-abcd-xyz1\n",
3320
+ "$ xano tenant delete t1234-abcd-xyz1 -f -o json"
3455
3321
  ],
3456
3322
  "flags": {
3457
3323
  "profile": {
@@ -3473,6 +3339,14 @@
3473
3339
  "allowNo": false,
3474
3340
  "type": "boolean"
3475
3341
  },
3342
+ "force": {
3343
+ "char": "f",
3344
+ "description": "Skip confirmation prompt",
3345
+ "name": "force",
3346
+ "required": false,
3347
+ "allowNo": false,
3348
+ "type": "boolean"
3349
+ },
3476
3350
  "output": {
3477
3351
  "char": "o",
3478
3352
  "description": "Output format",
@@ -3499,7 +3373,7 @@
3499
3373
  },
3500
3374
  "hasDynamicHelp": false,
3501
3375
  "hiddenAliases": [],
3502
- "id": "unit_test:run",
3376
+ "id": "tenant:delete",
3503
3377
  "pluginAlias": "@xano/cli",
3504
3378
  "pluginName": "@xano/cli",
3505
3379
  "pluginType": "core",
@@ -3509,28 +3383,24 @@
3509
3383
  "relativePath": [
3510
3384
  "dist",
3511
3385
  "commands",
3512
- "unit_test",
3513
- "run",
3386
+ "tenant",
3387
+ "delete",
3514
3388
  "index.js"
3515
3389
  ]
3516
3390
  },
3517
- "tenant:push": {
3391
+ "tenant:deploy_platform": {
3518
3392
  "aliases": [],
3519
3393
  "args": {
3520
- "directory": {
3521
- "description": "Directory containing documents to push (as produced by tenant pull or workspace pull)",
3522
- "name": "directory",
3394
+ "tenant_name": {
3395
+ "description": "Tenant name to deploy to",
3396
+ "name": "tenant_name",
3523
3397
  "required": true
3524
3398
  }
3525
3399
  },
3526
- "description": "Push local documents to a tenant via the Xano Metadata API multidoc endpoint",
3400
+ "description": "Deploy a platform version to a tenant",
3527
3401
  "examples": [
3528
- "$ xano tenant push ./my-workspace -t my-tenant\nPushed 42 documents to tenant my-tenant from ./my-workspace\n",
3529
- "$ xano tenant push ./output -t my-tenant -w 40\nPushed 15 documents to tenant my-tenant from ./output\n",
3530
- "$ xano tenant push ./backup -t my-tenant --profile production\nPushed 58 documents to tenant my-tenant from ./backup\n",
3531
- "$ xano tenant push ./my-workspace -t my-tenant --no-records\nPush schema only, skip importing table records\n",
3532
- "$ xano tenant push ./my-workspace -t my-tenant --no-env\nPush without overwriting environment variables\n",
3533
- "$ xano tenant push ./my-workspace -t my-tenant --truncate\nTruncate all table records before importing\n"
3402
+ "$ xano tenant deploy_platform t1234-abcd-xyz1 --platform_id 5\nDeployed platform 5 to tenant: My Tenant (my-tenant)\n",
3403
+ "$ xano tenant deploy_platform t1234-abcd-xyz1 --platform_id 5 -o json"
3534
3404
  ],
3535
3405
  "flags": {
3536
3406
  "profile": {
@@ -3552,39 +3422,31 @@
3552
3422
  "allowNo": false,
3553
3423
  "type": "boolean"
3554
3424
  },
3555
- "env": {
3556
- "description": "Include environment variables in import (default: true, use --no-env to exclude)",
3557
- "name": "env",
3558
- "required": false,
3559
- "allowNo": true,
3560
- "type": "boolean"
3561
- },
3562
- "records": {
3563
- "description": "Include records in import (default: true, use --no-records to exclude)",
3564
- "name": "records",
3425
+ "output": {
3426
+ "char": "o",
3427
+ "description": "Output format",
3428
+ "name": "output",
3565
3429
  "required": false,
3566
- "allowNo": true,
3567
- "type": "boolean"
3430
+ "default": "summary",
3431
+ "hasDynamicHelp": false,
3432
+ "multiple": false,
3433
+ "options": [
3434
+ "summary",
3435
+ "json"
3436
+ ],
3437
+ "type": "option"
3568
3438
  },
3569
- "tenant": {
3570
- "char": "t",
3571
- "description": "Tenant name to push to",
3572
- "name": "tenant",
3439
+ "platform_id": {
3440
+ "description": "Platform ID to deploy",
3441
+ "name": "platform_id",
3573
3442
  "required": true,
3574
3443
  "hasDynamicHelp": false,
3575
3444
  "multiple": false,
3576
3445
  "type": "option"
3577
3446
  },
3578
- "truncate": {
3579
- "description": "Truncate all table records before importing",
3580
- "name": "truncate",
3581
- "required": false,
3582
- "allowNo": false,
3583
- "type": "boolean"
3584
- },
3585
3447
  "workspace": {
3586
3448
  "char": "w",
3587
- "description": "Workspace ID (optional if set in profile)",
3449
+ "description": "Workspace ID (uses profile workspace if not provided)",
3588
3450
  "name": "workspace",
3589
3451
  "required": false,
3590
3452
  "hasDynamicHelp": false,
@@ -3594,7 +3456,7 @@
3594
3456
  },
3595
3457
  "hasDynamicHelp": false,
3596
3458
  "hiddenAliases": [],
3597
- "id": "tenant:push",
3459
+ "id": "tenant:deploy_platform",
3598
3460
  "pluginAlias": "@xano/cli",
3599
3461
  "pluginName": "@xano/cli",
3600
3462
  "pluginType": "core",
@@ -3605,23 +3467,23 @@
3605
3467
  "dist",
3606
3468
  "commands",
3607
3469
  "tenant",
3608
- "push",
3470
+ "deploy_platform",
3609
3471
  "index.js"
3610
3472
  ]
3611
3473
  },
3612
- "workflow_test:delete": {
3474
+ "tenant:deploy_release": {
3613
3475
  "aliases": [],
3614
3476
  "args": {
3615
- "workflow_test_id": {
3616
- "description": "ID of the workflow test to delete",
3617
- "name": "workflow_test_id",
3477
+ "tenant_name": {
3478
+ "description": "Tenant name to deploy to",
3479
+ "name": "tenant_name",
3618
3480
  "required": true
3619
3481
  }
3620
3482
  },
3621
- "description": "Delete a workflow test",
3483
+ "description": "Deploy a release to a tenant",
3622
3484
  "examples": [
3623
- "$ xano workflow-test delete 1\nAre you sure you want to delete workflow test 1? (y/N) y\nDeleted workflow test 1\n",
3624
- "$ xano workflow-test delete 1 --force"
3485
+ "$ xano tenant deploy_release t1234-abcd-xyz1 --release v1.0\nDeployed release \"v1.0\" to tenant: My Tenant (my-tenant)\n",
3486
+ "$ xano tenant deploy_release t1234-abcd-xyz1 --release v1.0 -o json"
3625
3487
  ],
3626
3488
  "flags": {
3627
3489
  "profile": {
@@ -3643,14 +3505,6 @@
3643
3505
  "allowNo": false,
3644
3506
  "type": "boolean"
3645
3507
  },
3646
- "force": {
3647
- "char": "f",
3648
- "description": "Skip confirmation prompt",
3649
- "name": "force",
3650
- "required": false,
3651
- "allowNo": false,
3652
- "type": "boolean"
3653
- },
3654
3508
  "output": {
3655
3509
  "char": "o",
3656
3510
  "description": "Output format",
@@ -3665,6 +3519,15 @@
3665
3519
  ],
3666
3520
  "type": "option"
3667
3521
  },
3522
+ "release": {
3523
+ "char": "r",
3524
+ "description": "Release name to deploy",
3525
+ "name": "release",
3526
+ "required": true,
3527
+ "hasDynamicHelp": false,
3528
+ "multiple": false,
3529
+ "type": "option"
3530
+ },
3668
3531
  "workspace": {
3669
3532
  "char": "w",
3670
3533
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -3677,7 +3540,7 @@
3677
3540
  },
3678
3541
  "hasDynamicHelp": false,
3679
3542
  "hiddenAliases": [],
3680
- "id": "workflow_test:delete",
3543
+ "id": "tenant:deploy_release",
3681
3544
  "pluginAlias": "@xano/cli",
3682
3545
  "pluginName": "@xano/cli",
3683
3546
  "pluginType": "core",
@@ -3687,18 +3550,24 @@
3687
3550
  "relativePath": [
3688
3551
  "dist",
3689
3552
  "commands",
3690
- "workflow_test",
3691
- "delete",
3553
+ "tenant",
3554
+ "deploy_release",
3692
3555
  "index.js"
3693
3556
  ]
3694
3557
  },
3695
- "unit_test:run_all": {
3558
+ "tenant:edit": {
3696
3559
  "aliases": [],
3697
- "args": {},
3698
- "description": "Run all unit tests in a workspace",
3560
+ "args": {
3561
+ "tenant_name": {
3562
+ "description": "Tenant name to edit",
3563
+ "name": "tenant_name",
3564
+ "required": true
3565
+ }
3566
+ },
3567
+ "description": "Edit an existing tenant",
3699
3568
  "examples": [
3700
- "$ xano unit-test run-all\nRunning 5 unit tests...\n\nPASS my-test [function: math]\nPASS auth-check [query: /user/login]\nFAIL data-validation [function: validate]\n Error: assertion failed\n\nResults: 2 passed, 1 failed\n",
3701
- "$ xano unit-test run-all --obj-type function -o json"
3569
+ "$ xano tenant edit t1234-abcd-xyz1 --display \"New Name\" --description \"Updated description\"\nUpdated tenant: New Name (my-tenant) - ID: 42\n",
3570
+ "$ xano tenant edit t1234-abcd-xyz1 --no-tasks --no-ingress -o json"
3702
3571
  ],
3703
3572
  "flags": {
3704
3573
  "profile": {
@@ -3720,28 +3589,38 @@
3720
3589
  "allowNo": false,
3721
3590
  "type": "boolean"
3722
3591
  },
3723
- "branch": {
3724
- "char": "b",
3725
- "description": "Filter by branch name",
3726
- "name": "branch",
3592
+ "description": {
3593
+ "char": "d",
3594
+ "description": "New description",
3595
+ "name": "description",
3727
3596
  "required": false,
3728
3597
  "hasDynamicHelp": false,
3729
3598
  "multiple": false,
3730
3599
  "type": "option"
3731
3600
  },
3732
- "obj-type": {
3733
- "description": "Filter by object type",
3734
- "name": "obj-type",
3601
+ "display": {
3602
+ "description": "New display name",
3603
+ "name": "display",
3604
+ "required": false,
3605
+ "hasDynamicHelp": false,
3606
+ "multiple": false,
3607
+ "type": "option"
3608
+ },
3609
+ "domain": {
3610
+ "description": "Custom domain",
3611
+ "name": "domain",
3735
3612
  "required": false,
3736
3613
  "hasDynamicHelp": false,
3737
3614
  "multiple": false,
3738
- "options": [
3739
- "function",
3740
- "query",
3741
- "middleware"
3742
- ],
3743
3615
  "type": "option"
3744
3616
  },
3617
+ "ingress": {
3618
+ "description": "Enable/disable ingress",
3619
+ "name": "ingress",
3620
+ "required": false,
3621
+ "allowNo": true,
3622
+ "type": "boolean"
3623
+ },
3745
3624
  "output": {
3746
3625
  "char": "o",
3747
3626
  "description": "Output format",
@@ -3756,6 +3635,28 @@
3756
3635
  ],
3757
3636
  "type": "option"
3758
3637
  },
3638
+ "proxy": {
3639
+ "description": "Proxy URL",
3640
+ "name": "proxy",
3641
+ "required": false,
3642
+ "hasDynamicHelp": false,
3643
+ "multiple": false,
3644
+ "type": "option"
3645
+ },
3646
+ "rbac": {
3647
+ "description": "Enable/disable RBAC",
3648
+ "name": "rbac",
3649
+ "required": false,
3650
+ "allowNo": true,
3651
+ "type": "boolean"
3652
+ },
3653
+ "tasks": {
3654
+ "description": "Enable/disable background tasks",
3655
+ "name": "tasks",
3656
+ "required": false,
3657
+ "allowNo": true,
3658
+ "type": "boolean"
3659
+ },
3759
3660
  "workspace": {
3760
3661
  "char": "w",
3761
3662
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -3768,7 +3669,7 @@
3768
3669
  },
3769
3670
  "hasDynamicHelp": false,
3770
3671
  "hiddenAliases": [],
3771
- "id": "unit_test:run_all",
3672
+ "id": "tenant:edit",
3772
3673
  "pluginAlias": "@xano/cli",
3773
3674
  "pluginName": "@xano/cli",
3774
3675
  "pluginType": "core",
@@ -3778,25 +3679,24 @@
3778
3679
  "relativePath": [
3779
3680
  "dist",
3780
3681
  "commands",
3781
- "unit_test",
3782
- "run_all",
3682
+ "tenant",
3683
+ "edit",
3783
3684
  "index.js"
3784
3685
  ]
3785
3686
  },
3786
- "workflow_test:get": {
3687
+ "tenant:get": {
3787
3688
  "aliases": [],
3788
3689
  "args": {
3789
- "workflow_test_id": {
3790
- "description": "ID of the workflow test",
3791
- "name": "workflow_test_id",
3690
+ "tenant_name": {
3691
+ "description": "Tenant name to retrieve",
3692
+ "name": "tenant_name",
3792
3693
  "required": true
3793
3694
  }
3794
3695
  },
3795
- "description": "Get a specific workflow test",
3696
+ "description": "Get details of a specific tenant",
3796
3697
  "examples": [
3797
- "$ xano workflow-test get 1\nWorkflow Test: my-test (ID: 1)\n Description: Validates auth endpoints\n Branch: main\n",
3798
- "$ xano workflow-test get 1 -o xs",
3799
- "$ xano workflow-test get 1 -o json"
3698
+ "$ xano tenant get t1234-abcd-xyz1\nTenant: My Tenant (my-tenant)\n State: ok\n License: tier1\n Domain: my-tenant.xano.io\n Cluster: default\n Release: v1.0\n",
3699
+ "$ xano tenant get t1234-abcd-xyz1 -w 5 -o json"
3800
3700
  ],
3801
3701
  "flags": {
3802
3702
  "profile": {
@@ -3818,13 +3718,6 @@
3818
3718
  "allowNo": false,
3819
3719
  "type": "boolean"
3820
3720
  },
3821
- "include-draft": {
3822
- "description": "Include draft version",
3823
- "name": "include-draft",
3824
- "required": false,
3825
- "allowNo": false,
3826
- "type": "boolean"
3827
- },
3828
3721
  "output": {
3829
3722
  "char": "o",
3830
3723
  "description": "Output format",
@@ -3835,8 +3728,7 @@
3835
3728
  "multiple": false,
3836
3729
  "options": [
3837
3730
  "summary",
3838
- "json",
3839
- "xs"
3731
+ "json"
3840
3732
  ],
3841
3733
  "type": "option"
3842
3734
  },
@@ -3852,7 +3744,7 @@
3852
3744
  },
3853
3745
  "hasDynamicHelp": false,
3854
3746
  "hiddenAliases": [],
3855
- "id": "workflow_test:get",
3747
+ "id": "tenant:get",
3856
3748
  "pluginAlias": "@xano/cli",
3857
3749
  "pluginName": "@xano/cli",
3858
3750
  "pluginType": "core",
@@ -3862,24 +3754,24 @@
3862
3754
  "relativePath": [
3863
3755
  "dist",
3864
3756
  "commands",
3865
- "workflow_test",
3757
+ "tenant",
3866
3758
  "get",
3867
3759
  "index.js"
3868
3760
  ]
3869
3761
  },
3870
- "workflow_test:run": {
3762
+ "tenant:impersonate": {
3871
3763
  "aliases": [],
3872
3764
  "args": {
3873
- "workflow_test_id": {
3874
- "description": "ID of the workflow test to run",
3875
- "name": "workflow_test_id",
3765
+ "tenant_name": {
3766
+ "description": "Tenant name to impersonate",
3767
+ "name": "tenant_name",
3876
3768
  "required": true
3877
3769
  }
3878
3770
  },
3879
- "description": "Run a workflow test",
3771
+ "description": "Impersonate a tenant and open it in the browser",
3880
3772
  "examples": [
3881
- "$ xano workflow-test run 1\nRunning workflow test 1...\nResult: PASS (1.234s)\n",
3882
- "$ xano workflow-test run 1 -o json"
3773
+ "$ xano tenant impersonate my-tenant\nOpening browser...\nImpersonation successful!\n",
3774
+ "$ xano tenant impersonate my-tenant -o json"
3883
3775
  ],
3884
3776
  "flags": {
3885
3777
  "profile": {
@@ -3915,6 +3807,14 @@
3915
3807
  ],
3916
3808
  "type": "option"
3917
3809
  },
3810
+ "url-only": {
3811
+ "char": "u",
3812
+ "description": "Print the URL without opening the browser",
3813
+ "name": "url-only",
3814
+ "required": false,
3815
+ "allowNo": false,
3816
+ "type": "boolean"
3817
+ },
3918
3818
  "workspace": {
3919
3819
  "char": "w",
3920
3820
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -3927,7 +3827,7 @@
3927
3827
  },
3928
3828
  "hasDynamicHelp": false,
3929
3829
  "hiddenAliases": [],
3930
- "id": "workflow_test:run",
3830
+ "id": "tenant:impersonate",
3931
3831
  "pluginAlias": "@xano/cli",
3932
3832
  "pluginName": "@xano/cli",
3933
3833
  "pluginType": "core",
@@ -3937,18 +3837,25 @@
3937
3837
  "relativePath": [
3938
3838
  "dist",
3939
3839
  "commands",
3940
- "workflow_test",
3941
- "run",
3840
+ "tenant",
3841
+ "impersonate",
3942
3842
  "index.js"
3943
3843
  ]
3944
3844
  },
3945
- "workflow_test:run_all": {
3845
+ "workspace:create": {
3946
3846
  "aliases": [],
3947
- "args": {},
3948
- "description": "Run all workflow tests in a workspace",
3847
+ "args": {
3848
+ "name": {
3849
+ "description": "Name of the workspace",
3850
+ "name": "name",
3851
+ "required": true
3852
+ }
3853
+ },
3854
+ "description": "Create a new workspace via the Xano Metadata API",
3949
3855
  "examples": [
3950
- "$ xano workflow-test run-all\nRunning 3 workflow tests...\n\nPASS my-test (1.234s)\nPASS auth-flow (0.567s)\nFAIL data-validation (0.890s)\n Error: assertion failed at step 3\n\nResults: 2 passed, 1 failed (2.691s total)\n",
3951
- "$ xano workflow-test run-all --branch main -o json"
3856
+ "$ xano workspace create my-workspace\nCreated workspace: my-workspace (ID: 123)\n",
3857
+ "$ xano workspace create my-app --description \"My application workspace\"\nCreated workspace: my-app (ID: 456)\n Description: My application workspace\n",
3858
+ "$ xano workspace create new-project -d \"New project workspace\" -o json\n{\n \"id\": 789,\n \"name\": \"new-project\",\n \"description\": \"New project workspace\"\n}\n"
3952
3859
  ],
3953
3860
  "flags": {
3954
3861
  "profile": {
@@ -3970,10 +3877,10 @@
3970
3877
  "allowNo": false,
3971
3878
  "type": "boolean"
3972
3879
  },
3973
- "branch": {
3974
- "char": "b",
3975
- "description": "Filter by branch name",
3976
- "name": "branch",
3880
+ "description": {
3881
+ "char": "d",
3882
+ "description": "Description for the workspace",
3883
+ "name": "description",
3977
3884
  "required": false,
3978
3885
  "hasDynamicHelp": false,
3979
3886
  "multiple": false,
@@ -3992,20 +3899,11 @@
3992
3899
  "json"
3993
3900
  ],
3994
3901
  "type": "option"
3995
- },
3996
- "workspace": {
3997
- "char": "w",
3998
- "description": "Workspace ID (uses profile workspace if not provided)",
3999
- "name": "workspace",
4000
- "required": false,
4001
- "hasDynamicHelp": false,
4002
- "multiple": false,
4003
- "type": "option"
4004
3902
  }
4005
3903
  },
4006
3904
  "hasDynamicHelp": false,
4007
3905
  "hiddenAliases": [],
4008
- "id": "workflow_test:run_all",
3906
+ "id": "workspace:create",
4009
3907
  "pluginAlias": "@xano/cli",
4010
3908
  "pluginName": "@xano/cli",
4011
3909
  "pluginType": "core",
@@ -4015,25 +3913,25 @@
4015
3913
  "relativePath": [
4016
3914
  "dist",
4017
3915
  "commands",
4018
- "workflow_test",
4019
- "run_all",
3916
+ "workspace",
3917
+ "create",
4020
3918
  "index.js"
4021
3919
  ]
4022
3920
  },
4023
- "workspace:create": {
3921
+ "workspace:delete": {
4024
3922
  "aliases": [],
4025
3923
  "args": {
4026
- "name": {
4027
- "description": "Name of the workspace",
4028
- "name": "name",
3924
+ "workspace_id": {
3925
+ "description": "Workspace ID to delete",
3926
+ "name": "workspace_id",
4029
3927
  "required": true
4030
3928
  }
4031
3929
  },
4032
- "description": "Create a new workspace via the Xano Metadata API",
3930
+ "description": "Delete a workspace via the Xano Metadata API. Cannot delete workspaces with active tenants.",
4033
3931
  "examples": [
4034
- "$ xano workspace create my-workspace\nCreated workspace: my-workspace (ID: 123)\n",
4035
- "$ xano workspace create my-app --description \"My application workspace\"\nCreated workspace: my-app (ID: 456)\n Description: My application workspace\n",
4036
- "$ xano workspace create new-project -d \"New project workspace\" -o json\n{\n \"id\": 789,\n \"name\": \"new-project\",\n \"description\": \"New project workspace\"\n}\n"
3932
+ "$ xano workspace delete 123\nAre you sure you want to delete workspace 123? This action cannot be undone. (y/N) y\nDeleted workspace 123\n",
3933
+ "$ xano workspace delete 123 --force\nDeleted workspace 123\n",
3934
+ "$ xano workspace delete 123 -f -o json\n{\n \"deleted\": true,\n \"workspace_id\": 123\n}\n"
4037
3935
  ],
4038
3936
  "flags": {
4039
3937
  "profile": {
@@ -4055,14 +3953,13 @@
4055
3953
  "allowNo": false,
4056
3954
  "type": "boolean"
4057
3955
  },
4058
- "description": {
4059
- "char": "d",
4060
- "description": "Description for the workspace",
4061
- "name": "description",
3956
+ "force": {
3957
+ "char": "f",
3958
+ "description": "Skip confirmation prompt",
3959
+ "name": "force",
4062
3960
  "required": false,
4063
- "hasDynamicHelp": false,
4064
- "multiple": false,
4065
- "type": "option"
3961
+ "allowNo": false,
3962
+ "type": "boolean"
4066
3963
  },
4067
3964
  "output": {
4068
3965
  "char": "o",
@@ -4081,7 +3978,7 @@
4081
3978
  },
4082
3979
  "hasDynamicHelp": false,
4083
3980
  "hiddenAliases": [],
4084
- "id": "workspace:create",
3981
+ "id": "workspace:delete",
4085
3982
  "pluginAlias": "@xano/cli",
4086
3983
  "pluginName": "@xano/cli",
4087
3984
  "pluginType": "core",
@@ -4092,7 +3989,7 @@
4092
3989
  "dist",
4093
3990
  "commands",
4094
3991
  "workspace",
4095
- "create",
3992
+ "delete",
4096
3993
  "index.js"
4097
3994
  ]
4098
3995
  },
@@ -4196,20 +4093,184 @@
4196
4093
  "index.js"
4197
4094
  ]
4198
4095
  },
4199
- "workspace:delete": {
4096
+ "tenant:list": {
4097
+ "aliases": [],
4098
+ "args": {},
4099
+ "description": "List all tenants in a workspace",
4100
+ "examples": [
4101
+ "$ xano tenant list\nTenants in workspace 5:\n - My Tenant (my-tenant) [ok] - tier1\n - Staging (staging) [ok] - tier1\n",
4102
+ "$ xano tenant list -w 5 --output json"
4103
+ ],
4104
+ "flags": {
4105
+ "profile": {
4106
+ "char": "p",
4107
+ "description": "Profile to use (uses default profile if not specified)",
4108
+ "env": "XANO_PROFILE",
4109
+ "name": "profile",
4110
+ "required": false,
4111
+ "hasDynamicHelp": false,
4112
+ "multiple": false,
4113
+ "type": "option"
4114
+ },
4115
+ "verbose": {
4116
+ "char": "v",
4117
+ "description": "Show detailed request/response information",
4118
+ "env": "XANO_VERBOSE",
4119
+ "name": "verbose",
4120
+ "required": false,
4121
+ "allowNo": false,
4122
+ "type": "boolean"
4123
+ },
4124
+ "output": {
4125
+ "char": "o",
4126
+ "description": "Output format",
4127
+ "name": "output",
4128
+ "required": false,
4129
+ "default": "summary",
4130
+ "hasDynamicHelp": false,
4131
+ "multiple": false,
4132
+ "options": [
4133
+ "summary",
4134
+ "json"
4135
+ ],
4136
+ "type": "option"
4137
+ },
4138
+ "workspace": {
4139
+ "char": "w",
4140
+ "description": "Workspace ID (uses profile workspace if not provided)",
4141
+ "name": "workspace",
4142
+ "required": false,
4143
+ "hasDynamicHelp": false,
4144
+ "multiple": false,
4145
+ "type": "option"
4146
+ }
4147
+ },
4148
+ "hasDynamicHelp": false,
4149
+ "hiddenAliases": [],
4150
+ "id": "tenant:list",
4151
+ "pluginAlias": "@xano/cli",
4152
+ "pluginName": "@xano/cli",
4153
+ "pluginType": "core",
4154
+ "strict": true,
4155
+ "enableJsonFlag": false,
4156
+ "isESM": true,
4157
+ "relativePath": [
4158
+ "dist",
4159
+ "commands",
4160
+ "tenant",
4161
+ "list",
4162
+ "index.js"
4163
+ ]
4164
+ },
4165
+ "tenant:push": {
4166
+ "aliases": [],
4167
+ "args": {
4168
+ "directory": {
4169
+ "description": "Directory containing documents to push (as produced by tenant pull or workspace pull)",
4170
+ "name": "directory",
4171
+ "required": true
4172
+ }
4173
+ },
4174
+ "description": "Push local documents to a tenant via the Xano Metadata API multidoc endpoint",
4175
+ "examples": [
4176
+ "$ xano tenant push ./my-workspace -t my-tenant\nPushed 42 documents to tenant my-tenant from ./my-workspace\n",
4177
+ "$ xano tenant push ./output -t my-tenant -w 40\nPushed 15 documents to tenant my-tenant from ./output\n",
4178
+ "$ xano tenant push ./backup -t my-tenant --profile production\nPushed 58 documents to tenant my-tenant from ./backup\n",
4179
+ "$ xano tenant push ./my-workspace -t my-tenant --no-records\nPush schema only, skip importing table records\n",
4180
+ "$ xano tenant push ./my-workspace -t my-tenant --no-env\nPush without overwriting environment variables\n",
4181
+ "$ xano tenant push ./my-workspace -t my-tenant --truncate\nTruncate all table records before importing\n"
4182
+ ],
4183
+ "flags": {
4184
+ "profile": {
4185
+ "char": "p",
4186
+ "description": "Profile to use (uses default profile if not specified)",
4187
+ "env": "XANO_PROFILE",
4188
+ "name": "profile",
4189
+ "required": false,
4190
+ "hasDynamicHelp": false,
4191
+ "multiple": false,
4192
+ "type": "option"
4193
+ },
4194
+ "verbose": {
4195
+ "char": "v",
4196
+ "description": "Show detailed request/response information",
4197
+ "env": "XANO_VERBOSE",
4198
+ "name": "verbose",
4199
+ "required": false,
4200
+ "allowNo": false,
4201
+ "type": "boolean"
4202
+ },
4203
+ "env": {
4204
+ "description": "Include environment variables in import (default: true, use --no-env to exclude)",
4205
+ "name": "env",
4206
+ "required": false,
4207
+ "allowNo": true,
4208
+ "type": "boolean"
4209
+ },
4210
+ "records": {
4211
+ "description": "Include records in import (default: true, use --no-records to exclude)",
4212
+ "name": "records",
4213
+ "required": false,
4214
+ "allowNo": true,
4215
+ "type": "boolean"
4216
+ },
4217
+ "tenant": {
4218
+ "char": "t",
4219
+ "description": "Tenant name to push to",
4220
+ "name": "tenant",
4221
+ "required": true,
4222
+ "hasDynamicHelp": false,
4223
+ "multiple": false,
4224
+ "type": "option"
4225
+ },
4226
+ "truncate": {
4227
+ "description": "Truncate all table records before importing",
4228
+ "name": "truncate",
4229
+ "required": false,
4230
+ "allowNo": false,
4231
+ "type": "boolean"
4232
+ },
4233
+ "workspace": {
4234
+ "char": "w",
4235
+ "description": "Workspace ID (optional if set in profile)",
4236
+ "name": "workspace",
4237
+ "required": false,
4238
+ "hasDynamicHelp": false,
4239
+ "multiple": false,
4240
+ "type": "option"
4241
+ }
4242
+ },
4243
+ "hasDynamicHelp": false,
4244
+ "hiddenAliases": [],
4245
+ "id": "tenant:push",
4246
+ "pluginAlias": "@xano/cli",
4247
+ "pluginName": "@xano/cli",
4248
+ "pluginType": "core",
4249
+ "strict": true,
4250
+ "enableJsonFlag": false,
4251
+ "isESM": true,
4252
+ "relativePath": [
4253
+ "dist",
4254
+ "commands",
4255
+ "tenant",
4256
+ "push",
4257
+ "index.js"
4258
+ ]
4259
+ },
4260
+ "workspace:get": {
4200
4261
  "aliases": [],
4201
4262
  "args": {
4202
4263
  "workspace_id": {
4203
- "description": "Workspace ID to delete",
4264
+ "description": "Workspace ID to get details for (uses profile workspace if not provided)",
4204
4265
  "name": "workspace_id",
4205
- "required": true
4266
+ "required": false
4206
4267
  }
4207
4268
  },
4208
- "description": "Delete a workspace via the Xano Metadata API. Cannot delete workspaces with active tenants.",
4269
+ "description": "Get details of a specific workspace from the Xano Metadata API",
4209
4270
  "examples": [
4210
- "$ xano workspace delete 123\nAre you sure you want to delete workspace 123? This action cannot be undone. (y/N) y\nDeleted workspace 123\n",
4211
- "$ xano workspace delete 123 --force\nDeleted workspace 123\n",
4212
- "$ xano workspace delete 123 -f -o json\n{\n \"deleted\": true,\n \"workspace_id\": 123\n}\n"
4271
+ "$ xano workspace get 123\nWorkspace: my-workspace (ID: 123)\n Description: My workspace description\n Created: 2024-01-15\n",
4272
+ "$ xano workspace get --output json\n{\n \"id\": 123,\n \"name\": \"my-workspace\",\n \"description\": \"My workspace description\"\n}\n",
4273
+ "$ xano workspace get 456 -p production -o json\n{\n \"id\": 456,\n \"name\": \"production-workspace\"\n}\n"
4213
4274
  ],
4214
4275
  "flags": {
4215
4276
  "profile": {
@@ -4231,14 +4292,6 @@
4231
4292
  "allowNo": false,
4232
4293
  "type": "boolean"
4233
4294
  },
4234
- "force": {
4235
- "char": "f",
4236
- "description": "Skip confirmation prompt",
4237
- "name": "force",
4238
- "required": false,
4239
- "allowNo": false,
4240
- "type": "boolean"
4241
- },
4242
4295
  "output": {
4243
4296
  "char": "o",
4244
4297
  "description": "Output format",
@@ -4256,7 +4309,7 @@
4256
4309
  },
4257
4310
  "hasDynamicHelp": false,
4258
4311
  "hiddenAliases": [],
4259
- "id": "workspace:delete",
4312
+ "id": "workspace:get",
4260
4313
  "pluginAlias": "@xano/cli",
4261
4314
  "pluginName": "@xano/cli",
4262
4315
  "pluginType": "core",
@@ -4267,24 +4320,25 @@
4267
4320
  "dist",
4268
4321
  "commands",
4269
4322
  "workspace",
4270
- "delete",
4323
+ "get",
4271
4324
  "index.js"
4272
4325
  ]
4273
4326
  },
4274
- "workspace:get": {
4327
+ "tenant:pull": {
4275
4328
  "aliases": [],
4276
4329
  "args": {
4277
- "workspace_id": {
4278
- "description": "Workspace ID to get details for (uses profile workspace if not provided)",
4279
- "name": "workspace_id",
4280
- "required": false
4330
+ "directory": {
4331
+ "description": "Output directory for pulled documents",
4332
+ "name": "directory",
4333
+ "required": true
4281
4334
  }
4282
4335
  },
4283
- "description": "Get details of a specific workspace from the Xano Metadata API",
4336
+ "description": "Pull a tenant multidoc from the Xano Metadata API and split into individual files",
4284
4337
  "examples": [
4285
- "$ xano workspace get 123\nWorkspace: my-workspace (ID: 123)\n Description: My workspace description\n Created: 2024-01-15\n",
4286
- "$ xano workspace get --output json\n{\n \"id\": 123,\n \"name\": \"my-workspace\",\n \"description\": \"My workspace description\"\n}\n",
4287
- "$ xano workspace get 456 -p production -o json\n{\n \"id\": 456,\n \"name\": \"production-workspace\"\n}\n"
4338
+ "$ xano tenant pull ./my-tenant -t my-tenant\nPulled 42 documents from tenant my-tenant to ./my-tenant\n",
4339
+ "$ xano tenant pull ./output -t my-tenant -w 40\nPulled 15 documents from tenant my-tenant to ./output\n",
4340
+ "$ xano tenant pull ./backup -t my-tenant --profile production --env --records\nPulled 58 documents from tenant my-tenant to ./backup\n",
4341
+ "$ xano tenant pull ./my-tenant -t my-tenant --draft\nPulled 42 documents from tenant my-tenant to ./my-tenant\n"
4288
4342
  ],
4289
4343
  "flags": {
4290
4344
  "profile": {
@@ -4306,24 +4360,49 @@
4306
4360
  "allowNo": false,
4307
4361
  "type": "boolean"
4308
4362
  },
4309
- "output": {
4310
- "char": "o",
4311
- "description": "Output format",
4312
- "name": "output",
4363
+ "draft": {
4364
+ "description": "Include draft versions",
4365
+ "name": "draft",
4366
+ "required": false,
4367
+ "allowNo": false,
4368
+ "type": "boolean"
4369
+ },
4370
+ "env": {
4371
+ "description": "Include environment variables",
4372
+ "name": "env",
4373
+ "required": false,
4374
+ "allowNo": false,
4375
+ "type": "boolean"
4376
+ },
4377
+ "records": {
4378
+ "description": "Include records",
4379
+ "name": "records",
4380
+ "required": false,
4381
+ "allowNo": false,
4382
+ "type": "boolean"
4383
+ },
4384
+ "tenant": {
4385
+ "char": "t",
4386
+ "description": "Tenant name to pull from",
4387
+ "name": "tenant",
4388
+ "required": true,
4389
+ "hasDynamicHelp": false,
4390
+ "multiple": false,
4391
+ "type": "option"
4392
+ },
4393
+ "workspace": {
4394
+ "char": "w",
4395
+ "description": "Workspace ID (optional if set in profile)",
4396
+ "name": "workspace",
4313
4397
  "required": false,
4314
- "default": "summary",
4315
4398
  "hasDynamicHelp": false,
4316
4399
  "multiple": false,
4317
- "options": [
4318
- "summary",
4319
- "json"
4320
- ],
4321
4400
  "type": "option"
4322
4401
  }
4323
4402
  },
4324
4403
  "hasDynamicHelp": false,
4325
4404
  "hiddenAliases": [],
4326
- "id": "workspace:get",
4405
+ "id": "tenant:pull",
4327
4406
  "pluginAlias": "@xano/cli",
4328
4407
  "pluginName": "@xano/cli",
4329
4408
  "pluginType": "core",
@@ -4333,8 +4412,8 @@
4333
4412
  "relativePath": [
4334
4413
  "dist",
4335
4414
  "commands",
4336
- "workspace",
4337
- "get",
4415
+ "tenant",
4416
+ "pull",
4338
4417
  "index.js"
4339
4418
  ]
4340
4419
  },
@@ -4400,14 +4479,20 @@
4400
4479
  "index.js"
4401
4480
  ]
4402
4481
  },
4403
- "workflow_test:list": {
4482
+ "static_host:build:create": {
4404
4483
  "aliases": [],
4405
- "args": {},
4406
- "description": "List all workflow tests in a workspace",
4484
+ "args": {
4485
+ "static_host": {
4486
+ "description": "Static Host name",
4487
+ "name": "static_host",
4488
+ "required": true
4489
+ }
4490
+ },
4491
+ "description": "Create a new build for a static host",
4407
4492
  "examples": [
4408
- "$ xano workflow-test list\nWorkflow tests in workspace 5:\n - my-test (ID: 1)\n - auth-flow (ID: 2) - Validates auth endpoints\n",
4409
- "$ xano workflow-test list -w 5 --output json",
4410
- "$ xano workflow-test list --branch main"
4493
+ "$ xano static_host:build:create default -f ./build.zip -n \"v1.0.0\"\nBuild created successfully!\nID: 123\nName: v1.0.0\nStatus: pending\n",
4494
+ "$ xano static_host:build:create default -w 40 -f ./dist.zip -n \"production\" -d \"Production build\"\nBuild created successfully!\nID: 124\nName: production\nDescription: Production build\n",
4495
+ "$ xano static_host:build:create myhost -f ./app.zip -n \"release-1.2\" -o json\n{\n \"id\": 125,\n \"name\": \"release-1.2\",\n \"status\": \"pending\"\n}\n"
4411
4496
  ],
4412
4497
  "flags": {
4413
4498
  "profile": {
@@ -4429,15 +4514,33 @@
4429
4514
  "allowNo": false,
4430
4515
  "type": "boolean"
4431
4516
  },
4432
- "branch": {
4433
- "char": "b",
4434
- "description": "Filter by branch name",
4435
- "name": "branch",
4517
+ "description": {
4518
+ "char": "d",
4519
+ "description": "Build description",
4520
+ "name": "description",
4436
4521
  "required": false,
4437
4522
  "hasDynamicHelp": false,
4438
4523
  "multiple": false,
4439
4524
  "type": "option"
4440
4525
  },
4526
+ "file": {
4527
+ "char": "f",
4528
+ "description": "Path to zip file to upload",
4529
+ "name": "file",
4530
+ "required": true,
4531
+ "hasDynamicHelp": false,
4532
+ "multiple": false,
4533
+ "type": "option"
4534
+ },
4535
+ "name": {
4536
+ "char": "n",
4537
+ "description": "Build name",
4538
+ "name": "name",
4539
+ "required": true,
4540
+ "hasDynamicHelp": false,
4541
+ "multiple": false,
4542
+ "type": "option"
4543
+ },
4441
4544
  "output": {
4442
4545
  "char": "o",
4443
4546
  "description": "Output format",
@@ -4454,7 +4557,7 @@
4454
4557
  },
4455
4558
  "workspace": {
4456
4559
  "char": "w",
4457
- "description": "Workspace ID (uses profile workspace if not provided)",
4560
+ "description": "Workspace ID (optional if set in profile)",
4458
4561
  "name": "workspace",
4459
4562
  "required": false,
4460
4563
  "hasDynamicHelp": false,
@@ -4464,7 +4567,7 @@
4464
4567
  },
4465
4568
  "hasDynamicHelp": false,
4466
4569
  "hiddenAliases": [],
4467
- "id": "workflow_test:list",
4570
+ "id": "static_host:build:create",
4468
4571
  "pluginAlias": "@xano/cli",
4469
4572
  "pluginName": "@xano/cli",
4470
4573
  "pluginType": "core",
@@ -4474,31 +4577,32 @@
4474
4577
  "relativePath": [
4475
4578
  "dist",
4476
4579
  "commands",
4477
- "workflow_test",
4478
- "list",
4580
+ "static_host",
4581
+ "build",
4582
+ "create",
4479
4583
  "index.js"
4480
4584
  ]
4481
4585
  },
4482
- "workspace:push": {
4586
+ "static_host:build:get": {
4483
4587
  "aliases": [],
4484
4588
  "args": {
4485
- "directory": {
4486
- "description": "Directory containing documents to push (as produced by workspace pull)",
4487
- "name": "directory",
4589
+ "build_id": {
4590
+ "description": "Build ID",
4591
+ "name": "build_id",
4592
+ "required": true
4593
+ },
4594
+ "static_host": {
4595
+ "description": "Static Host name",
4596
+ "name": "static_host",
4488
4597
  "required": true
4489
4598
  }
4490
4599
  },
4491
- "description": "Push local documents to a workspace via the Xano Metadata API multidoc endpoint",
4600
+ "description": "Get details of a specific build for a static host",
4492
4601
  "examples": [
4493
- "$ xano workspace push ./my-workspace\nPushed 42 documents from ./my-workspace\n",
4494
- "$ xano workspace push ./output -w 40\nPushed 15 documents from ./output\n",
4495
- "$ xano workspace push ./backup --profile production\nPushed 58 documents from ./backup\n",
4496
- "$ xano workspace push ./my-workspace -b dev\nPushed 42 documents from ./my-workspace\n",
4497
- "$ xano workspace push ./my-workspace --no-records\nPush schema only, skip importing table records\n",
4498
- "$ xano workspace push ./my-workspace --no-env\nPush without overwriting environment variables\n",
4499
- "$ xano workspace push ./my-workspace --truncate\nTruncate all table records before importing\n",
4500
- "$ xano workspace push ./my-workspace --truncate --no-records\nTruncate all table records without importing new ones\n",
4501
- "$ xano workspace push ./my-workspace --no-records --no-env\nPush schema only, skip records and environment variables\n"
4602
+ "$ xano static_host:build:get default 52\nBuild Details:\nID: 52\nName: v1.0.0\nStatus: completed\n",
4603
+ "$ xano static_host:build:get default 52 -w 40\nBuild Details:\nID: 52\nName: v1.0.0\nStatus: completed\n",
4604
+ "$ xano static_host:build:get myhost 123 --profile production\nBuild Details:\nID: 123\nName: production-build\n",
4605
+ "$ xano static_host:build:get default 52 -o json\n{\n \"id\": 52,\n \"name\": \"v1.0.0\",\n \"status\": \"completed\"\n}\n"
4502
4606
  ],
4503
4607
  "flags": {
4504
4608
  "profile": {
@@ -4520,36 +4624,20 @@
4520
4624
  "allowNo": false,
4521
4625
  "type": "boolean"
4522
4626
  },
4523
- "branch": {
4524
- "char": "b",
4525
- "description": "Branch name (optional if set in profile, defaults to live)",
4526
- "name": "branch",
4627
+ "output": {
4628
+ "char": "o",
4629
+ "description": "Output format",
4630
+ "name": "output",
4527
4631
  "required": false,
4632
+ "default": "summary",
4528
4633
  "hasDynamicHelp": false,
4529
4634
  "multiple": false,
4635
+ "options": [
4636
+ "summary",
4637
+ "json"
4638
+ ],
4530
4639
  "type": "option"
4531
4640
  },
4532
- "env": {
4533
- "description": "Include environment variables in import (default: true, use --no-env to exclude)",
4534
- "name": "env",
4535
- "required": false,
4536
- "allowNo": true,
4537
- "type": "boolean"
4538
- },
4539
- "records": {
4540
- "description": "Include records in import (default: true, use --no-records to exclude)",
4541
- "name": "records",
4542
- "required": false,
4543
- "allowNo": true,
4544
- "type": "boolean"
4545
- },
4546
- "truncate": {
4547
- "description": "Truncate all table records before importing",
4548
- "name": "truncate",
4549
- "required": false,
4550
- "allowNo": false,
4551
- "type": "boolean"
4552
- },
4553
4641
  "workspace": {
4554
4642
  "char": "w",
4555
4643
  "description": "Workspace ID (optional if set in profile)",
@@ -4562,7 +4650,7 @@
4562
4650
  },
4563
4651
  "hasDynamicHelp": false,
4564
4652
  "hiddenAliases": [],
4565
- "id": "workspace:push",
4653
+ "id": "static_host:build:get",
4566
4654
  "pluginAlias": "@xano/cli",
4567
4655
  "pluginName": "@xano/cli",
4568
4656
  "pluginType": "core",
@@ -4572,27 +4660,27 @@
4572
4660
  "relativePath": [
4573
4661
  "dist",
4574
4662
  "commands",
4575
- "workspace",
4576
- "push",
4663
+ "static_host",
4664
+ "build",
4665
+ "get",
4577
4666
  "index.js"
4578
4667
  ]
4579
4668
  },
4580
- "workspace:pull": {
4669
+ "static_host:build:list": {
4581
4670
  "aliases": [],
4582
4671
  "args": {
4583
- "directory": {
4584
- "description": "Output directory for pulled documents",
4585
- "name": "directory",
4672
+ "static_host": {
4673
+ "description": "Static Host name",
4674
+ "name": "static_host",
4586
4675
  "required": true
4587
4676
  }
4588
4677
  },
4589
- "description": "Pull a workspace multidoc from the Xano Metadata API and split into individual files",
4678
+ "description": "List all builds for a static host",
4590
4679
  "examples": [
4591
- "$ xano workspace pull ./my-workspace\nPulled 42 documents to ./my-workspace\n",
4592
- "$ xano workspace pull ./output -w 40\nPulled 15 documents to ./output\n",
4593
- "$ xano workspace pull ./backup --profile production --env --records\nPulled 58 documents to ./backup\n",
4594
- "$ xano workspace pull ./my-workspace --draft\nPulled 42 documents to ./my-workspace\n",
4595
- "$ xano workspace pull ./my-workspace -b dev\nPulled 42 documents to ./my-workspace\n"
4680
+ "$ xano static_host:build:list default -w 40\nAvailable builds:\n - v1.0.0 (ID: 1) - Status: completed\n - v1.0.1 (ID: 2) - Status: pending\n",
4681
+ "$ xano static_host:build:list myhost --profile production\nAvailable builds:\n - production (ID: 1) - Status: completed\n - staging (ID: 2) - Status: completed\n",
4682
+ "$ xano static_host:build:list default -w 40 --output json\n[\n {\n \"id\": 1,\n \"name\": \"v1.0.0\",\n \"status\": \"completed\"\n }\n]\n",
4683
+ "$ xano static_host:build:list default -p staging -o json --page 2\n[\n {\n \"id\": 3,\n \"name\": \"v1.0.2\"\n }\n]\n"
4596
4684
  ],
4597
4685
  "flags": {
4598
4686
  "profile": {
@@ -4614,35 +4702,37 @@
4614
4702
  "allowNo": false,
4615
4703
  "type": "boolean"
4616
4704
  },
4617
- "branch": {
4618
- "char": "b",
4619
- "description": "Branch name (optional if set in profile, defaults to live)",
4620
- "name": "branch",
4705
+ "output": {
4706
+ "char": "o",
4707
+ "description": "Output format",
4708
+ "name": "output",
4621
4709
  "required": false,
4710
+ "default": "summary",
4622
4711
  "hasDynamicHelp": false,
4623
4712
  "multiple": false,
4713
+ "options": [
4714
+ "summary",
4715
+ "json"
4716
+ ],
4624
4717
  "type": "option"
4625
4718
  },
4626
- "env": {
4627
- "description": "Include environment variables",
4628
- "name": "env",
4629
- "required": false,
4630
- "allowNo": false,
4631
- "type": "boolean"
4632
- },
4633
- "draft": {
4634
- "description": "Include draft versions",
4635
- "name": "draft",
4719
+ "page": {
4720
+ "description": "Page number for pagination",
4721
+ "name": "page",
4636
4722
  "required": false,
4637
- "allowNo": false,
4638
- "type": "boolean"
4723
+ "default": 1,
4724
+ "hasDynamicHelp": false,
4725
+ "multiple": false,
4726
+ "type": "option"
4639
4727
  },
4640
- "records": {
4641
- "description": "Include records",
4642
- "name": "records",
4728
+ "per_page": {
4729
+ "description": "Number of results per page",
4730
+ "name": "per_page",
4643
4731
  "required": false,
4644
- "allowNo": false,
4645
- "type": "boolean"
4732
+ "default": 50,
4733
+ "hasDynamicHelp": false,
4734
+ "multiple": false,
4735
+ "type": "option"
4646
4736
  },
4647
4737
  "workspace": {
4648
4738
  "char": "w",
@@ -4656,7 +4746,7 @@
4656
4746
  },
4657
4747
  "hasDynamicHelp": false,
4658
4748
  "hiddenAliases": [],
4659
- "id": "workspace:pull",
4749
+ "id": "static_host:build:list",
4660
4750
  "pluginAlias": "@xano/cli",
4661
4751
  "pluginName": "@xano/cli",
4662
4752
  "pluginType": "core",
@@ -4666,8 +4756,9 @@
4666
4756
  "relativePath": [
4667
4757
  "dist",
4668
4758
  "commands",
4669
- "workspace",
4670
- "pull",
4759
+ "static_host",
4760
+ "build",
4761
+ "list",
4671
4762
  "index.js"
4672
4763
  ]
4673
4764
  },
@@ -4757,20 +4848,22 @@
4757
4848
  "index.js"
4758
4849
  ]
4759
4850
  },
4760
- "tenant:backup:export": {
4851
+ "workspace:pull": {
4761
4852
  "aliases": [],
4762
4853
  "args": {
4763
- "tenant_name": {
4764
- "description": "Tenant name to export backup from",
4765
- "name": "tenant_name",
4854
+ "directory": {
4855
+ "description": "Output directory for pulled documents",
4856
+ "name": "directory",
4766
4857
  "required": true
4767
4858
  }
4768
4859
  },
4769
- "description": "Export (download) a tenant backup to a local file",
4860
+ "description": "Pull a workspace multidoc from the Xano Metadata API and split into individual files",
4770
4861
  "examples": [
4771
- "$ xano tenant backup export t1234-abcd-xyz1 --backup_id 10\nDownloaded backup #10 to ./tenant-t1234-abcd-xyz1-backup-10.tar.gz\n",
4772
- "$ xano tenant backup export t1234-abcd-xyz1 --backup_id 10 --output ./backups/my-backup.tar.gz",
4773
- "$ xano tenant backup export t1234-abcd-xyz1 --backup_id 10 -o json"
4862
+ "$ xano workspace pull ./my-workspace\nPulled 42 documents to ./my-workspace\n",
4863
+ "$ xano workspace pull ./output -w 40\nPulled 15 documents to ./output\n",
4864
+ "$ xano workspace pull ./backup --profile production --env --records\nPulled 58 documents to ./backup\n",
4865
+ "$ xano workspace pull ./my-workspace --draft\nPulled 42 documents to ./my-workspace\n",
4866
+ "$ xano workspace pull ./my-workspace -b dev\nPulled 42 documents to ./my-workspace\n"
4774
4867
  ],
4775
4868
  "flags": {
4776
4869
  "profile": {
@@ -4792,39 +4885,39 @@
4792
4885
  "allowNo": false,
4793
4886
  "type": "boolean"
4794
4887
  },
4795
- "backup_id": {
4796
- "description": "Backup ID to export",
4797
- "name": "backup_id",
4798
- "required": true,
4888
+ "branch": {
4889
+ "char": "b",
4890
+ "description": "Branch name (optional if set in profile, defaults to live)",
4891
+ "name": "branch",
4892
+ "required": false,
4799
4893
  "hasDynamicHelp": false,
4800
4894
  "multiple": false,
4801
4895
  "type": "option"
4802
4896
  },
4803
- "format": {
4804
- "char": "o",
4805
- "description": "Output format",
4806
- "name": "format",
4897
+ "env": {
4898
+ "description": "Include environment variables",
4899
+ "name": "env",
4807
4900
  "required": false,
4808
- "default": "summary",
4809
- "hasDynamicHelp": false,
4810
- "multiple": false,
4811
- "options": [
4812
- "summary",
4813
- "json"
4814
- ],
4815
- "type": "option"
4901
+ "allowNo": false,
4902
+ "type": "boolean"
4816
4903
  },
4817
- "output": {
4818
- "description": "Output file path (defaults to ./tenant-{name}-backup-{backup_id}.tar.gz)",
4819
- "name": "output",
4904
+ "draft": {
4905
+ "description": "Include draft versions",
4906
+ "name": "draft",
4820
4907
  "required": false,
4821
- "hasDynamicHelp": false,
4822
- "multiple": false,
4823
- "type": "option"
4908
+ "allowNo": false,
4909
+ "type": "boolean"
4910
+ },
4911
+ "records": {
4912
+ "description": "Include records",
4913
+ "name": "records",
4914
+ "required": false,
4915
+ "allowNo": false,
4916
+ "type": "boolean"
4824
4917
  },
4825
4918
  "workspace": {
4826
4919
  "char": "w",
4827
- "description": "Workspace ID (uses profile workspace if not provided)",
4920
+ "description": "Workspace ID (optional if set in profile)",
4828
4921
  "name": "workspace",
4829
4922
  "required": false,
4830
4923
  "hasDynamicHelp": false,
@@ -4834,7 +4927,7 @@
4834
4927
  },
4835
4928
  "hasDynamicHelp": false,
4836
4929
  "hiddenAliases": [],
4837
- "id": "tenant:backup:export",
4930
+ "id": "workspace:pull",
4838
4931
  "pluginAlias": "@xano/cli",
4839
4932
  "pluginName": "@xano/cli",
4840
4933
  "pluginType": "core",
@@ -4844,26 +4937,33 @@
4844
4937
  "relativePath": [
4845
4938
  "dist",
4846
4939
  "commands",
4847
- "tenant",
4848
- "backup",
4849
- "export",
4940
+ "workspace",
4941
+ "pull",
4850
4942
  "index.js"
4851
4943
  ]
4852
4944
  },
4853
- "tenant:backup:delete": {
4945
+ "workspace:push": {
4854
4946
  "aliases": [],
4855
4947
  "args": {
4856
- "tenant_name": {
4857
- "description": "Tenant name that owns the backup",
4858
- "name": "tenant_name",
4948
+ "directory": {
4949
+ "description": "Directory containing documents to push (as produced by workspace pull)",
4950
+ "name": "directory",
4859
4951
  "required": true
4860
4952
  }
4861
4953
  },
4862
- "description": "Delete a tenant backup permanently. This action cannot be undone.",
4954
+ "description": "Push local documents to a workspace via the Xano Metadata API multidoc endpoint",
4863
4955
  "examples": [
4864
- "$ xano tenant backup delete t1234-abcd-xyz1 --backup_id 10\nAre you sure you want to delete backup #10? This action cannot be undone. (y/N) y\nDeleted backup #10\n",
4865
- "$ xano tenant backup delete t1234-abcd-xyz1 --backup_id 10 --force",
4866
- "$ xano tenant backup delete t1234-abcd-xyz1 --backup_id 10 -o json"
4956
+ "$ xano workspace push ./my-workspace\nPushed 42 documents from ./my-workspace\n",
4957
+ "$ xano workspace push ./output -w 40\nPushed 15 documents from ./output\n",
4958
+ "$ xano workspace push ./backup --profile production\nPushed 58 documents from ./backup\n",
4959
+ "$ xano workspace push ./my-workspace -b dev\nPushed 42 documents from ./my-workspace\n",
4960
+ "$ xano workspace push ./my-functions --partial\nPush some files without a workspace block (implies --no-delete)\n",
4961
+ "$ xano workspace push ./my-workspace --no-delete\nPatch files without deleting existing workspace objects\n",
4962
+ "$ xano workspace push ./my-workspace --no-records\nPush schema only, skip importing table records\n",
4963
+ "$ xano workspace push ./my-workspace --no-env\nPush without overwriting environment variables\n",
4964
+ "$ xano workspace push ./my-workspace --truncate\nTruncate all table records before importing\n",
4965
+ "$ xano workspace push ./my-workspace --truncate --no-records\nTruncate all table records without importing new ones\n",
4966
+ "$ xano workspace push ./my-workspace --no-records --no-env\nPush schema only, skip records and environment variables\n"
4867
4967
  ],
4868
4968
  "flags": {
4869
4969
  "profile": {
@@ -4885,39 +4985,60 @@
4885
4985
  "allowNo": false,
4886
4986
  "type": "boolean"
4887
4987
  },
4888
- "backup_id": {
4889
- "description": "Backup ID to delete",
4890
- "name": "backup_id",
4891
- "required": true,
4988
+ "branch": {
4989
+ "char": "b",
4990
+ "description": "Branch name (optional if set in profile, defaults to live)",
4991
+ "name": "branch",
4992
+ "required": false,
4892
4993
  "hasDynamicHelp": false,
4893
4994
  "multiple": false,
4894
4995
  "type": "option"
4895
4996
  },
4896
- "force": {
4897
- "char": "f",
4898
- "description": "Skip confirmation prompt",
4899
- "name": "force",
4997
+ "delete": {
4998
+ "description": "Delete workspace objects not included in the push (default: false)",
4999
+ "name": "delete",
5000
+ "required": false,
5001
+ "allowNo": true,
5002
+ "type": "boolean"
5003
+ },
5004
+ "env": {
5005
+ "description": "Include environment variables in import (default: true, use --no-env to exclude)",
5006
+ "name": "env",
5007
+ "required": false,
5008
+ "allowNo": true,
5009
+ "type": "boolean"
5010
+ },
5011
+ "partial": {
5012
+ "description": "Partial push — workspace block is not required, existing objects are kept (implies --no-delete)",
5013
+ "name": "partial",
4900
5014
  "required": false,
4901
5015
  "allowNo": false,
4902
5016
  "type": "boolean"
4903
5017
  },
4904
- "output": {
4905
- "char": "o",
4906
- "description": "Output format",
4907
- "name": "output",
5018
+ "records": {
5019
+ "description": "Include records in import (default: true, use --no-records to exclude)",
5020
+ "name": "records",
4908
5021
  "required": false,
4909
- "default": "summary",
4910
- "hasDynamicHelp": false,
4911
- "multiple": false,
4912
- "options": [
4913
- "summary",
4914
- "json"
4915
- ],
4916
- "type": "option"
5022
+ "allowNo": true,
5023
+ "type": "boolean"
5024
+ },
5025
+ "sync-guids": {
5026
+ "description": "Write server-assigned GUIDs back to local files (use --no-sync-guids to skip)",
5027
+ "name": "sync-guids",
5028
+ "required": false,
5029
+ "allowNo": true,
5030
+ "type": "boolean"
5031
+ },
5032
+ "truncate": {
5033
+ "description": "Truncate all table records before importing",
5034
+ "name": "truncate",
5035
+ "required": false,
5036
+ "allowNo": false,
5037
+ "type": "boolean"
4917
5038
  },
4918
5039
  "workspace": {
4919
5040
  "char": "w",
4920
- "description": "Workspace ID (uses profile workspace if not provided)",
5041
+ "description": "Workspace ID (optional if set in profile)",
4921
5042
  "name": "workspace",
4922
5043
  "required": false,
4923
5044
  "hasDynamicHelp": false,
@@ -4927,7 +5048,7 @@
4927
5048
  },
4928
5049
  "hasDynamicHelp": false,
4929
5050
  "hiddenAliases": [],
4930
- "id": "tenant:backup:delete",
5051
+ "id": "workspace:push",
4931
5052
  "pluginAlias": "@xano/cli",
4932
5053
  "pluginName": "@xano/cli",
4933
5054
  "pluginType": "core",
@@ -4937,25 +5058,25 @@
4937
5058
  "relativePath": [
4938
5059
  "dist",
4939
5060
  "commands",
4940
- "tenant",
4941
- "backup",
4942
- "delete",
5061
+ "workspace",
5062
+ "push",
4943
5063
  "index.js"
4944
5064
  ]
4945
5065
  },
4946
- "tenant:backup:import": {
5066
+ "tenant:backup:delete": {
4947
5067
  "aliases": [],
4948
5068
  "args": {
4949
5069
  "tenant_name": {
4950
- "description": "Tenant name to import backup into",
5070
+ "description": "Tenant name that owns the backup",
4951
5071
  "name": "tenant_name",
4952
5072
  "required": true
4953
5073
  }
4954
5074
  },
4955
- "description": "Import a backup file into a tenant",
5075
+ "description": "Delete a tenant backup permanently. This action cannot be undone.",
4956
5076
  "examples": [
4957
- "$ xano tenant backup import t1234-abcd-xyz1 --file ./my-backup.tar.gz\nImported backup as #15 for tenant t1234-abcd-xyz1\n",
4958
- "$ xano tenant backup import t1234-abcd-xyz1 --file ./my-backup.tar.gz --description \"Restored from production\" -o json"
5077
+ "$ xano tenant backup delete t1234-abcd-xyz1 --backup_id 10\nAre you sure you want to delete backup #10? This action cannot be undone. (y/N) y\nDeleted backup #10\n",
5078
+ "$ xano tenant backup delete t1234-abcd-xyz1 --backup_id 10 --force",
5079
+ "$ xano tenant backup delete t1234-abcd-xyz1 --backup_id 10 -o json"
4959
5080
  ],
4960
5081
  "flags": {
4961
5082
  "profile": {
@@ -4977,24 +5098,21 @@
4977
5098
  "allowNo": false,
4978
5099
  "type": "boolean"
4979
5100
  },
4980
- "description": {
4981
- "char": "d",
4982
- "description": "Backup description",
4983
- "name": "description",
4984
- "required": false,
4985
- "default": "",
5101
+ "backup_id": {
5102
+ "description": "Backup ID to delete",
5103
+ "name": "backup_id",
5104
+ "required": true,
4986
5105
  "hasDynamicHelp": false,
4987
5106
  "multiple": false,
4988
5107
  "type": "option"
4989
5108
  },
4990
- "file": {
5109
+ "force": {
4991
5110
  "char": "f",
4992
- "description": "Path to the backup file (.tar.gz)",
4993
- "name": "file",
4994
- "required": true,
4995
- "hasDynamicHelp": false,
4996
- "multiple": false,
4997
- "type": "option"
5111
+ "description": "Skip confirmation prompt",
5112
+ "name": "force",
5113
+ "required": false,
5114
+ "allowNo": false,
5115
+ "type": "boolean"
4998
5116
  },
4999
5117
  "output": {
5000
5118
  "char": "o",
@@ -5022,7 +5140,7 @@
5022
5140
  },
5023
5141
  "hasDynamicHelp": false,
5024
5142
  "hiddenAliases": [],
5025
- "id": "tenant:backup:import",
5143
+ "id": "tenant:backup:delete",
5026
5144
  "pluginAlias": "@xano/cli",
5027
5145
  "pluginName": "@xano/cli",
5028
5146
  "pluginType": "core",
@@ -5034,23 +5152,23 @@
5034
5152
  "commands",
5035
5153
  "tenant",
5036
5154
  "backup",
5037
- "import",
5155
+ "delete",
5038
5156
  "index.js"
5039
5157
  ]
5040
5158
  },
5041
- "tenant:backup:list": {
5159
+ "tenant:backup:import": {
5042
5160
  "aliases": [],
5043
5161
  "args": {
5044
5162
  "tenant_name": {
5045
- "description": "Tenant name to list backups for",
5163
+ "description": "Tenant name to import backup into",
5046
5164
  "name": "tenant_name",
5047
5165
  "required": true
5048
5166
  }
5049
5167
  },
5050
- "description": "List backups for a tenant",
5168
+ "description": "Import a backup file into a tenant",
5051
5169
  "examples": [
5052
- "$ xano tenant backup list t1234-abcd-xyz1\nBackups for tenant t1234-abcd-xyz1:\n - #1 - Pre-deploy backup (2024-01-15)\n - #2 - Daily backup (2024-01-16)\n",
5053
- "$ xano tenant backup list t1234-abcd-xyz1 -o json"
5170
+ "$ xano tenant backup import t1234-abcd-xyz1 --file ./my-backup.tar.gz\nImported backup as #15 for tenant t1234-abcd-xyz1\n",
5171
+ "$ xano tenant backup import t1234-abcd-xyz1 --file ./my-backup.tar.gz --description \"Restored from production\" -o json"
5054
5172
  ],
5055
5173
  "flags": {
5056
5174
  "profile": {
@@ -5072,27 +5190,37 @@
5072
5190
  "allowNo": false,
5073
5191
  "type": "boolean"
5074
5192
  },
5075
- "output": {
5076
- "char": "o",
5077
- "description": "Output format",
5078
- "name": "output",
5193
+ "description": {
5194
+ "char": "d",
5195
+ "description": "Backup description",
5196
+ "name": "description",
5079
5197
  "required": false,
5080
- "default": "summary",
5198
+ "default": "",
5081
5199
  "hasDynamicHelp": false,
5082
5200
  "multiple": false,
5083
- "options": [
5084
- "summary",
5085
- "json"
5086
- ],
5087
5201
  "type": "option"
5088
5202
  },
5089
- "page": {
5090
- "description": "Page number for pagination",
5091
- "name": "page",
5203
+ "file": {
5204
+ "char": "f",
5205
+ "description": "Path to the backup file (.tar.gz)",
5206
+ "name": "file",
5207
+ "required": true,
5208
+ "hasDynamicHelp": false,
5209
+ "multiple": false,
5210
+ "type": "option"
5211
+ },
5212
+ "output": {
5213
+ "char": "o",
5214
+ "description": "Output format",
5215
+ "name": "output",
5092
5216
  "required": false,
5093
- "default": 1,
5217
+ "default": "summary",
5094
5218
  "hasDynamicHelp": false,
5095
5219
  "multiple": false,
5220
+ "options": [
5221
+ "summary",
5222
+ "json"
5223
+ ],
5096
5224
  "type": "option"
5097
5225
  },
5098
5226
  "workspace": {
@@ -5107,7 +5235,7 @@
5107
5235
  },
5108
5236
  "hasDynamicHelp": false,
5109
5237
  "hiddenAliases": [],
5110
- "id": "tenant:backup:list",
5238
+ "id": "tenant:backup:import",
5111
5239
  "pluginAlias": "@xano/cli",
5112
5240
  "pluginName": "@xano/cli",
5113
5241
  "pluginType": "core",
@@ -5119,23 +5247,23 @@
5119
5247
  "commands",
5120
5248
  "tenant",
5121
5249
  "backup",
5122
- "list",
5250
+ "import",
5123
5251
  "index.js"
5124
5252
  ]
5125
5253
  },
5126
- "tenant:backup:restore": {
5254
+ "tenant:backup:list": {
5127
5255
  "aliases": [],
5128
5256
  "args": {
5129
5257
  "tenant_name": {
5130
- "description": "Tenant name to restore",
5258
+ "description": "Tenant name to list backups for",
5131
5259
  "name": "tenant_name",
5132
5260
  "required": true
5133
5261
  }
5134
5262
  },
5135
- "description": "Restore a tenant from a backup. This replaces the current tenant data.",
5263
+ "description": "List backups for a tenant",
5136
5264
  "examples": [
5137
- "$ xano tenant backup restore t1234-abcd-xyz1 --backup_id 10\nAre you sure you want to restore tenant t1234-abcd-xyz1 from backup 10? This will replace current data. (y/N) y\nRestored tenant t1234-abcd-xyz1 from backup #10\n",
5138
- "$ xano tenant backup restore t1234-abcd-xyz1 --backup_id 10 --force -o json"
5265
+ "$ xano tenant backup list t1234-abcd-xyz1\nBackups for tenant t1234-abcd-xyz1:\n - #1 - Pre-deploy backup (2024-01-15)\n - #2 - Daily backup (2024-01-16)\n",
5266
+ "$ xano tenant backup list t1234-abcd-xyz1 -o json"
5139
5267
  ],
5140
5268
  "flags": {
5141
5269
  "profile": {
@@ -5157,22 +5285,6 @@
5157
5285
  "allowNo": false,
5158
5286
  "type": "boolean"
5159
5287
  },
5160
- "backup_id": {
5161
- "description": "Backup ID to restore from",
5162
- "name": "backup_id",
5163
- "required": true,
5164
- "hasDynamicHelp": false,
5165
- "multiple": false,
5166
- "type": "option"
5167
- },
5168
- "force": {
5169
- "char": "f",
5170
- "description": "Skip confirmation prompt",
5171
- "name": "force",
5172
- "required": false,
5173
- "allowNo": false,
5174
- "type": "boolean"
5175
- },
5176
5288
  "output": {
5177
5289
  "char": "o",
5178
5290
  "description": "Output format",
@@ -5187,6 +5299,15 @@
5187
5299
  ],
5188
5300
  "type": "option"
5189
5301
  },
5302
+ "page": {
5303
+ "description": "Page number for pagination",
5304
+ "name": "page",
5305
+ "required": false,
5306
+ "default": 1,
5307
+ "hasDynamicHelp": false,
5308
+ "multiple": false,
5309
+ "type": "option"
5310
+ },
5190
5311
  "workspace": {
5191
5312
  "char": "w",
5192
5313
  "description": "Workspace ID (uses profile workspace if not provided)",
@@ -5199,7 +5320,7 @@
5199
5320
  },
5200
5321
  "hasDynamicHelp": false,
5201
5322
  "hiddenAliases": [],
5202
- "id": "tenant:backup:restore",
5323
+ "id": "tenant:backup:list",
5203
5324
  "pluginAlias": "@xano/cli",
5204
5325
  "pluginName": "@xano/cli",
5205
5326
  "pluginType": "core",
@@ -5211,24 +5332,24 @@
5211
5332
  "commands",
5212
5333
  "tenant",
5213
5334
  "backup",
5214
- "restore",
5335
+ "list",
5215
5336
  "index.js"
5216
5337
  ]
5217
5338
  },
5218
- "static_host:build:create": {
5339
+ "tenant:backup:export": {
5219
5340
  "aliases": [],
5220
5341
  "args": {
5221
- "static_host": {
5222
- "description": "Static Host name",
5223
- "name": "static_host",
5342
+ "tenant_name": {
5343
+ "description": "Tenant name to export backup from",
5344
+ "name": "tenant_name",
5224
5345
  "required": true
5225
5346
  }
5226
5347
  },
5227
- "description": "Create a new build for a static host",
5348
+ "description": "Export (download) a tenant backup to a local file",
5228
5349
  "examples": [
5229
- "$ xano static_host:build:create default -f ./build.zip -n \"v1.0.0\"\nBuild created successfully!\nID: 123\nName: v1.0.0\nStatus: pending\n",
5230
- "$ xano static_host:build:create default -w 40 -f ./dist.zip -n \"production\" -d \"Production build\"\nBuild created successfully!\nID: 124\nName: production\nDescription: Production build\n",
5231
- "$ xano static_host:build:create myhost -f ./app.zip -n \"release-1.2\" -o json\n{\n \"id\": 125,\n \"name\": \"release-1.2\",\n \"status\": \"pending\"\n}\n"
5350
+ "$ xano tenant backup export t1234-abcd-xyz1 --backup_id 10\nDownloaded backup #10 to ./tenant-t1234-abcd-xyz1-backup-10.tar.gz\n",
5351
+ "$ xano tenant backup export t1234-abcd-xyz1 --backup_id 10 --output ./backups/my-backup.tar.gz",
5352
+ "$ xano tenant backup export t1234-abcd-xyz1 --backup_id 10 -o json"
5232
5353
  ],
5233
5354
  "flags": {
5234
5355
  "profile": {
@@ -5250,37 +5371,18 @@
5250
5371
  "allowNo": false,
5251
5372
  "type": "boolean"
5252
5373
  },
5253
- "description": {
5254
- "char": "d",
5255
- "description": "Build description",
5256
- "name": "description",
5257
- "required": false,
5258
- "hasDynamicHelp": false,
5259
- "multiple": false,
5260
- "type": "option"
5261
- },
5262
- "file": {
5263
- "char": "f",
5264
- "description": "Path to zip file to upload",
5265
- "name": "file",
5266
- "required": true,
5267
- "hasDynamicHelp": false,
5268
- "multiple": false,
5269
- "type": "option"
5270
- },
5271
- "name": {
5272
- "char": "n",
5273
- "description": "Build name",
5274
- "name": "name",
5374
+ "backup_id": {
5375
+ "description": "Backup ID to export",
5376
+ "name": "backup_id",
5275
5377
  "required": true,
5276
5378
  "hasDynamicHelp": false,
5277
5379
  "multiple": false,
5278
5380
  "type": "option"
5279
5381
  },
5280
- "output": {
5382
+ "format": {
5281
5383
  "char": "o",
5282
5384
  "description": "Output format",
5283
- "name": "output",
5385
+ "name": "format",
5284
5386
  "required": false,
5285
5387
  "default": "summary",
5286
5388
  "hasDynamicHelp": false,
@@ -5291,9 +5393,17 @@
5291
5393
  ],
5292
5394
  "type": "option"
5293
5395
  },
5396
+ "output": {
5397
+ "description": "Output file path (defaults to ./tenant-{name}-backup-{backup_id}.tar.gz)",
5398
+ "name": "output",
5399
+ "required": false,
5400
+ "hasDynamicHelp": false,
5401
+ "multiple": false,
5402
+ "type": "option"
5403
+ },
5294
5404
  "workspace": {
5295
5405
  "char": "w",
5296
- "description": "Workspace ID (optional if set in profile)",
5406
+ "description": "Workspace ID (uses profile workspace if not provided)",
5297
5407
  "name": "workspace",
5298
5408
  "required": false,
5299
5409
  "hasDynamicHelp": false,
@@ -5303,7 +5413,7 @@
5303
5413
  },
5304
5414
  "hasDynamicHelp": false,
5305
5415
  "hiddenAliases": [],
5306
- "id": "static_host:build:create",
5416
+ "id": "tenant:backup:export",
5307
5417
  "pluginAlias": "@xano/cli",
5308
5418
  "pluginName": "@xano/cli",
5309
5419
  "pluginType": "core",
@@ -5313,27 +5423,25 @@
5313
5423
  "relativePath": [
5314
5424
  "dist",
5315
5425
  "commands",
5316
- "static_host",
5317
- "build",
5318
- "create",
5426
+ "tenant",
5427
+ "backup",
5428
+ "export",
5319
5429
  "index.js"
5320
5430
  ]
5321
5431
  },
5322
- "static_host:build:list": {
5432
+ "tenant:backup:restore": {
5323
5433
  "aliases": [],
5324
5434
  "args": {
5325
- "static_host": {
5326
- "description": "Static Host name",
5327
- "name": "static_host",
5435
+ "tenant_name": {
5436
+ "description": "Tenant name to restore",
5437
+ "name": "tenant_name",
5328
5438
  "required": true
5329
5439
  }
5330
5440
  },
5331
- "description": "List all builds for a static host",
5441
+ "description": "Restore a tenant from a backup. This replaces the current tenant data.",
5332
5442
  "examples": [
5333
- "$ xano static_host:build:list default -w 40\nAvailable builds:\n - v1.0.0 (ID: 1) - Status: completed\n - v1.0.1 (ID: 2) - Status: pending\n",
5334
- "$ xano static_host:build:list myhost --profile production\nAvailable builds:\n - production (ID: 1) - Status: completed\n - staging (ID: 2) - Status: completed\n",
5335
- "$ xano static_host:build:list default -w 40 --output json\n[\n {\n \"id\": 1,\n \"name\": \"v1.0.0\",\n \"status\": \"completed\"\n }\n]\n",
5336
- "$ xano static_host:build:list default -p staging -o json --page 2\n[\n {\n \"id\": 3,\n \"name\": \"v1.0.2\"\n }\n]\n"
5443
+ "$ xano tenant backup restore t1234-abcd-xyz1 --backup_id 10\nAre you sure you want to restore tenant t1234-abcd-xyz1 from backup 10? This will replace current data. (y/N) y\nRestored tenant t1234-abcd-xyz1 from backup #10\n",
5444
+ "$ xano tenant backup restore t1234-abcd-xyz1 --backup_id 10 --force -o json"
5337
5445
  ],
5338
5446
  "flags": {
5339
5447
  "profile": {
@@ -5355,6 +5463,22 @@
5355
5463
  "allowNo": false,
5356
5464
  "type": "boolean"
5357
5465
  },
5466
+ "backup_id": {
5467
+ "description": "Backup ID to restore from",
5468
+ "name": "backup_id",
5469
+ "required": true,
5470
+ "hasDynamicHelp": false,
5471
+ "multiple": false,
5472
+ "type": "option"
5473
+ },
5474
+ "force": {
5475
+ "char": "f",
5476
+ "description": "Skip confirmation prompt",
5477
+ "name": "force",
5478
+ "required": false,
5479
+ "allowNo": false,
5480
+ "type": "boolean"
5481
+ },
5358
5482
  "output": {
5359
5483
  "char": "o",
5360
5484
  "description": "Output format",
@@ -5369,27 +5493,9 @@
5369
5493
  ],
5370
5494
  "type": "option"
5371
5495
  },
5372
- "page": {
5373
- "description": "Page number for pagination",
5374
- "name": "page",
5375
- "required": false,
5376
- "default": 1,
5377
- "hasDynamicHelp": false,
5378
- "multiple": false,
5379
- "type": "option"
5380
- },
5381
- "per_page": {
5382
- "description": "Number of results per page",
5383
- "name": "per_page",
5384
- "required": false,
5385
- "default": 50,
5386
- "hasDynamicHelp": false,
5387
- "multiple": false,
5388
- "type": "option"
5389
- },
5390
5496
  "workspace": {
5391
5497
  "char": "w",
5392
- "description": "Workspace ID (optional if set in profile)",
5498
+ "description": "Workspace ID (uses profile workspace if not provided)",
5393
5499
  "name": "workspace",
5394
5500
  "required": false,
5395
5501
  "hasDynamicHelp": false,
@@ -5399,7 +5505,7 @@
5399
5505
  },
5400
5506
  "hasDynamicHelp": false,
5401
5507
  "hiddenAliases": [],
5402
- "id": "static_host:build:list",
5508
+ "id": "tenant:backup:restore",
5403
5509
  "pluginAlias": "@xano/cli",
5404
5510
  "pluginName": "@xano/cli",
5405
5511
  "pluginType": "core",
@@ -5409,9 +5515,9 @@
5409
5515
  "relativePath": [
5410
5516
  "dist",
5411
5517
  "commands",
5412
- "static_host",
5413
- "build",
5414
- "list",
5518
+ "tenant",
5519
+ "backup",
5520
+ "restore",
5415
5521
  "index.js"
5416
5522
  ]
5417
5523
  },
@@ -6587,89 +6693,6 @@
6587
6693
  "index.js"
6588
6694
  ]
6589
6695
  },
6590
- "static_host:build:get": {
6591
- "aliases": [],
6592
- "args": {
6593
- "build_id": {
6594
- "description": "Build ID",
6595
- "name": "build_id",
6596
- "required": true
6597
- },
6598
- "static_host": {
6599
- "description": "Static Host name",
6600
- "name": "static_host",
6601
- "required": true
6602
- }
6603
- },
6604
- "description": "Get details of a specific build for a static host",
6605
- "examples": [
6606
- "$ xano static_host:build:get default 52\nBuild Details:\nID: 52\nName: v1.0.0\nStatus: completed\n",
6607
- "$ xano static_host:build:get default 52 -w 40\nBuild Details:\nID: 52\nName: v1.0.0\nStatus: completed\n",
6608
- "$ xano static_host:build:get myhost 123 --profile production\nBuild Details:\nID: 123\nName: production-build\n",
6609
- "$ xano static_host:build:get default 52 -o json\n{\n \"id\": 52,\n \"name\": \"v1.0.0\",\n \"status\": \"completed\"\n}\n"
6610
- ],
6611
- "flags": {
6612
- "profile": {
6613
- "char": "p",
6614
- "description": "Profile to use (uses default profile if not specified)",
6615
- "env": "XANO_PROFILE",
6616
- "name": "profile",
6617
- "required": false,
6618
- "hasDynamicHelp": false,
6619
- "multiple": false,
6620
- "type": "option"
6621
- },
6622
- "verbose": {
6623
- "char": "v",
6624
- "description": "Show detailed request/response information",
6625
- "env": "XANO_VERBOSE",
6626
- "name": "verbose",
6627
- "required": false,
6628
- "allowNo": false,
6629
- "type": "boolean"
6630
- },
6631
- "output": {
6632
- "char": "o",
6633
- "description": "Output format",
6634
- "name": "output",
6635
- "required": false,
6636
- "default": "summary",
6637
- "hasDynamicHelp": false,
6638
- "multiple": false,
6639
- "options": [
6640
- "summary",
6641
- "json"
6642
- ],
6643
- "type": "option"
6644
- },
6645
- "workspace": {
6646
- "char": "w",
6647
- "description": "Workspace ID (optional if set in profile)",
6648
- "name": "workspace",
6649
- "required": false,
6650
- "hasDynamicHelp": false,
6651
- "multiple": false,
6652
- "type": "option"
6653
- }
6654
- },
6655
- "hasDynamicHelp": false,
6656
- "hiddenAliases": [],
6657
- "id": "static_host:build:get",
6658
- "pluginAlias": "@xano/cli",
6659
- "pluginName": "@xano/cli",
6660
- "pluginType": "core",
6661
- "strict": true,
6662
- "enableJsonFlag": false,
6663
- "isESM": true,
6664
- "relativePath": [
6665
- "dist",
6666
- "commands",
6667
- "static_host",
6668
- "build",
6669
- "get",
6670
- "index.js"
6671
- ]
6672
- },
6673
6696
  "tenant:cluster:license:get": {
6674
6697
  "aliases": [],
6675
6698
  "args": {
@@ -6861,5 +6884,5 @@
6861
6884
  ]
6862
6885
  }
6863
6886
  },
6864
- "version": "0.0.40"
6887
+ "version": "0.0.42"
6865
6888
  }