@seliseblocks/cli-os 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI_USAGE_GUIDE.md +328 -58
- package/README.md +84 -47
- package/dist/commands/auth/client-credentials/delete.d.ts +1 -0
- package/dist/commands/auth/client-credentials/delete.js +23 -0
- package/dist/commands/auth/client-credentials/list.d.ts +1 -0
- package/dist/commands/auth/client-credentials/list.js +14 -0
- package/dist/commands/auth/client-credentials/save.d.ts +1 -0
- package/dist/commands/auth/client-credentials/save.js +41 -0
- package/dist/commands/auth/config/get.d.ts +1 -0
- package/dist/commands/auth/config/get.js +14 -0
- package/dist/commands/auth/config/save.d.ts +1 -0
- package/dist/commands/auth/config/save.js +37 -0
- package/dist/commands/auth/idp/create.d.ts +1 -0
- package/dist/commands/auth/idp/create.js +46 -0
- package/dist/commands/auth/idp/delete.d.ts +1 -0
- package/dist/commands/auth/idp/delete.js +23 -0
- package/dist/commands/auth/idp/get.d.ts +1 -0
- package/dist/commands/auth/idp/get.js +16 -0
- package/dist/commands/auth/idp/list.d.ts +1 -0
- package/dist/commands/auth/idp/list.js +14 -0
- package/dist/commands/auth/idp/status.d.ts +1 -0
- package/dist/commands/auth/idp/status.js +27 -0
- package/dist/commands/auth/idp/update.d.ts +7 -0
- package/dist/commands/auth/idp/update.js +45 -0
- package/dist/commands/auth/oidc-clients/delete.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/delete.js +23 -0
- package/dist/commands/auth/oidc-clients/get.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/get.js +16 -0
- package/dist/commands/auth/oidc-clients/list.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/list.js +14 -0
- package/dist/commands/auth/oidc-clients/rotate-secret.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/rotate-secret.js +23 -0
- package/dist/commands/auth/oidc-clients/save.d.ts +2 -0
- package/dist/commands/auth/oidc-clients/save.js +57 -0
- package/dist/commands/auth/refresh.js +1 -1
- package/dist/commands/data/config/create.d.ts +1 -0
- package/dist/commands/data/config/create.js +38 -0
- package/dist/commands/data/config/get.d.ts +1 -0
- package/dist/commands/data/config/get.js +14 -0
- package/dist/commands/data/config/update.d.ts +1 -0
- package/dist/commands/data/config/update.js +41 -0
- package/dist/commands/data/files/create-folder.d.ts +1 -0
- package/dist/commands/data/files/create-folder.js +34 -0
- package/dist/commands/data/files/delete-folder.d.ts +1 -0
- package/dist/commands/data/files/delete-folder.js +25 -0
- package/dist/commands/data/files/delete.d.ts +1 -0
- package/dist/commands/data/files/delete.js +28 -0
- package/dist/commands/data/files/dms-list.d.ts +1 -0
- package/dist/commands/data/files/dms-list.js +27 -0
- package/dist/commands/data/files/dms-upload.d.ts +6 -0
- package/dist/commands/data/files/dms-upload.js +41 -0
- package/dist/commands/data/files/get-many.d.ts +1 -0
- package/dist/commands/data/files/get-many.js +24 -0
- package/dist/commands/data/files/get.d.ts +1 -0
- package/dist/commands/data/files/get.js +21 -0
- package/dist/commands/data/files/info.d.ts +1 -0
- package/dist/commands/data/files/info.js +30 -0
- package/dist/commands/data/files/presigned-upload-url.d.ts +6 -0
- package/dist/commands/data/files/presigned-upload-url.js +34 -0
- package/dist/commands/data/files/update-additional-info.d.ts +1 -0
- package/dist/commands/data/files/update-additional-info.js +26 -0
- package/dist/commands/data/files/upload-to-local-storage.d.ts +5 -0
- package/dist/commands/data/files/upload-to-local-storage.js +55 -0
- package/dist/commands/data/files/upload-to-url.d.ts +8 -0
- package/dist/commands/data/files/upload-to-url.js +36 -0
- package/dist/commands/data/files/upload.d.ts +7 -0
- package/dist/commands/data/files/upload.js +145 -0
- package/dist/commands/data/rules/policy/delete.d.ts +1 -0
- package/dist/commands/data/rules/policy/delete.js +24 -0
- package/dist/commands/data/rules/policy/get.d.ts +1 -0
- package/dist/commands/data/rules/policy/get.js +17 -0
- package/dist/commands/data/schema/aggregation.d.ts +1 -0
- package/dist/commands/data/schema/aggregation.js +26 -0
- package/dist/commands/data/schema/change-logs.d.ts +1 -0
- package/dist/commands/data/schema/change-logs.js +14 -0
- package/dist/commands/data/schema/delete.d.ts +1 -0
- package/dist/commands/data/schema/delete.js +24 -0
- package/dist/commands/data/schema/fields.d.ts +5 -0
- package/dist/commands/data/schema/fields.js +39 -0
- package/dist/commands/data/schema/get-by-name.d.ts +1 -0
- package/dist/commands/data/schema/get-by-name.js +17 -0
- package/dist/commands/data/schema/get.d.ts +1 -0
- package/dist/commands/data/schema/get.js +17 -0
- package/dist/commands/data/schema/info/list.d.ts +1 -0
- package/dist/commands/data/schema/info/list.js +15 -0
- package/dist/commands/data/schema/info/save.d.ts +1 -0
- package/dist/commands/data/schema/info/save.js +34 -0
- package/dist/commands/data/schema/info/update.d.ts +1 -0
- package/dist/commands/data/schema/info/update.js +35 -0
- package/dist/commands/data/sync.d.ts +7 -0
- package/dist/commands/data/sync.js +46 -0
- package/dist/commands/data/validation/by-schema-field.d.ts +1 -0
- package/dist/commands/data/validation/by-schema-field.js +18 -0
- package/dist/commands/data/validation/by-schema.d.ts +1 -0
- package/dist/commands/data/validation/by-schema.js +17 -0
- package/dist/commands/data/validation/delete.d.ts +1 -0
- package/dist/commands/data/validation/delete.js +24 -0
- package/dist/commands/data/validation/get.d.ts +1 -0
- package/dist/commands/data/validation/get.js +17 -0
- package/dist/commands/data/validation/list.d.ts +1 -0
- package/dist/commands/data/validation/list.js +25 -0
- package/dist/commands/data/validation/save.d.ts +6 -0
- package/dist/commands/data/validation/save.js +44 -0
- package/dist/commands/deselect.js +12 -22
- package/dist/commands/iam/email/available.d.ts +1 -0
- package/dist/commands/iam/email/available.js +17 -0
- package/dist/commands/iam/me.js +4 -1
- package/dist/commands/iam/organizations/config-get.d.ts +1 -0
- package/dist/commands/iam/organizations/config-get.js +14 -0
- package/dist/commands/iam/organizations/config-save.d.ts +1 -0
- package/dist/commands/iam/organizations/config-save.js +34 -0
- package/dist/commands/iam/organizations/create.d.ts +1 -0
- package/dist/commands/iam/organizations/create.js +37 -0
- package/dist/commands/iam/organizations/get.d.ts +1 -0
- package/dist/commands/iam/organizations/get.js +16 -0
- package/dist/commands/iam/organizations/list.d.ts +1 -0
- package/dist/commands/iam/organizations/list.js +26 -0
- package/dist/commands/iam/organizations/my.d.ts +1 -0
- package/dist/commands/iam/organizations/my.js +14 -0
- package/dist/commands/iam/organizations/update.d.ts +1 -0
- package/dist/commands/iam/organizations/update.js +39 -0
- package/dist/commands/iam/permissions/by-severity.d.ts +1 -0
- package/dist/commands/iam/permissions/by-severity.js +14 -0
- package/dist/commands/iam/permissions/create.d.ts +1 -0
- package/dist/commands/iam/permissions/create.js +39 -0
- package/dist/commands/iam/permissions/get.d.ts +1 -0
- package/dist/commands/iam/permissions/get.js +16 -0
- package/dist/commands/iam/permissions/list.d.ts +1 -0
- package/dist/commands/iam/permissions/list.js +41 -0
- package/dist/commands/iam/permissions/update.d.ts +1 -0
- package/dist/commands/iam/permissions/update.js +40 -0
- package/dist/commands/iam/resources/features.d.ts +1 -0
- package/dist/commands/iam/resources/features.js +19 -0
- package/dist/commands/iam/resources/groups.d.ts +1 -0
- package/dist/commands/iam/resources/groups.js +14 -0
- package/dist/commands/iam/roles/assign-permissions.d.ts +1 -0
- package/dist/commands/iam/roles/assign-permissions.js +33 -0
- package/dist/commands/iam/roles/assignable.d.ts +1 -0
- package/dist/commands/iam/roles/assignable.js +14 -0
- package/dist/commands/iam/roles/create.d.ts +1 -0
- package/dist/commands/iam/roles/create.js +35 -0
- package/dist/commands/iam/roles/get.d.ts +1 -0
- package/dist/commands/iam/roles/get.js +16 -0
- package/dist/commands/iam/roles/list.d.ts +1 -0
- package/dist/commands/iam/roles/list.js +34 -0
- package/dist/commands/iam/roles/update.d.ts +1 -0
- package/dist/commands/iam/roles/update.js +35 -0
- package/dist/commands/iam/signup-settings/get.d.ts +1 -0
- package/dist/commands/iam/signup-settings/get.js +14 -0
- package/dist/commands/iam/signup-settings/save.d.ts +1 -0
- package/dist/commands/iam/signup-settings/save.js +32 -0
- package/dist/commands/iam/users/access-grant.d.ts +1 -0
- package/dist/commands/iam/users/access-grant.js +32 -0
- package/dist/commands/iam/users/access-revoke.d.ts +1 -0
- package/dist/commands/iam/users/access-revoke.js +24 -0
- package/dist/commands/iam/users/activate.d.ts +1 -0
- package/dist/commands/iam/users/activate.js +24 -0
- package/dist/commands/iam/users/create.d.ts +1 -0
- package/dist/commands/iam/users/create.js +39 -0
- package/dist/commands/iam/users/deactivate.d.ts +1 -0
- package/dist/commands/iam/users/deactivate.js +24 -0
- package/dist/commands/iam/users/exists.d.ts +1 -0
- package/dist/commands/iam/users/exists.js +17 -0
- package/dist/commands/iam/users/get.d.ts +1 -0
- package/dist/commands/iam/users/get.js +17 -0
- package/dist/commands/iam/users/list.d.ts +1 -0
- package/dist/commands/iam/users/list.js +34 -0
- package/dist/commands/iam/users/update.d.ts +1 -0
- package/dist/commands/iam/users/update.js +35 -0
- package/dist/commands/init.js +0 -12
- package/dist/commands/localization/assistant/translation-suggestion.d.ts +1 -0
- package/dist/commands/localization/assistant/translation-suggestion.js +35 -0
- package/dist/commands/localization/config/get-webhook.d.ts +1 -0
- package/dist/commands/localization/config/get-webhook.js +14 -0
- package/dist/commands/localization/config/save-webhook.d.ts +1 -0
- package/dist/commands/localization/config/save-webhook.js +47 -0
- package/dist/commands/localization/glossary/delete.d.ts +1 -0
- package/dist/commands/localization/glossary/delete.js +24 -0
- package/dist/commands/localization/glossary/get.d.ts +1 -0
- package/dist/commands/localization/glossary/get.js +17 -0
- package/dist/commands/localization/glossary/list.d.ts +1 -0
- package/dist/commands/localization/glossary/list.js +22 -0
- package/dist/commands/localization/glossary/save.d.ts +1 -0
- package/dist/commands/localization/glossary/save.js +38 -0
- package/dist/commands/localization/glossary/suggested.d.ts +1 -0
- package/dist/commands/localization/glossary/suggested.js +20 -0
- package/dist/commands/localization/key/delete-keys.d.ts +1 -0
- package/dist/commands/localization/key/delete-keys.js +28 -0
- package/dist/commands/localization/key/delete.d.ts +1 -0
- package/dist/commands/localization/key/delete.js +24 -0
- package/dist/commands/localization/key/generate-uilm-file.d.ts +1 -0
- package/dist/commands/localization/key/generate-uilm-file.js +29 -0
- package/dist/commands/localization/key/get-by-names.d.ts +1 -0
- package/dist/commands/localization/key/get-by-names.js +24 -0
- package/dist/commands/localization/key/get-language-file-generation-history.d.ts +1 -0
- package/dist/commands/localization/key/get-language-file-generation-history.js +19 -0
- package/dist/commands/localization/key/get-localization-timeline.d.ts +1 -0
- package/dist/commands/localization/key/get-localization-timeline.js +28 -0
- package/dist/commands/localization/key/get-timeline-by-operation-id.d.ts +1 -0
- package/dist/commands/localization/key/get-timeline-by-operation-id.js +21 -0
- package/dist/commands/localization/key/get-timeline.d.ts +1 -0
- package/dist/commands/localization/key/get-timeline.js +25 -0
- package/dist/commands/localization/key/get-uilm-exported-files.d.ts +1 -0
- package/dist/commands/localization/key/get-uilm-exported-files.js +22 -0
- package/dist/commands/localization/key/get-uilm-file.d.ts +1 -0
- package/dist/commands/localization/key/get-uilm-file.js +18 -0
- package/dist/commands/localization/key/get.d.ts +1 -0
- package/dist/commands/localization/key/get.js +17 -0
- package/dist/commands/localization/key/list.d.ts +1 -0
- package/dist/commands/localization/key/list.js +39 -0
- package/dist/commands/localization/key/rollback.d.ts +1 -0
- package/dist/commands/localization/key/rollback.js +24 -0
- package/dist/commands/localization/key/save.d.ts +1 -0
- package/dist/commands/localization/key/save.js +44 -0
- package/dist/commands/localization/key/translate-all.d.ts +1 -0
- package/dist/commands/localization/key/translate-all.js +30 -0
- package/dist/commands/localization/key/translate-and-export.d.ts +7 -0
- package/dist/commands/localization/key/translate-and-export.js +132 -0
- package/dist/commands/localization/key/translate-key.d.ts +1 -0
- package/dist/commands/localization/key/translate-key.js +27 -0
- package/dist/commands/localization/key/translate-keys.d.ts +1 -0
- package/dist/commands/localization/key/translate-keys.js +31 -0
- package/dist/commands/localization/key/uilm-export.d.ts +1 -0
- package/dist/commands/localization/key/uilm-export.js +33 -0
- package/dist/commands/localization/key/uilm-import.d.ts +1 -0
- package/dist/commands/localization/key/uilm-import.js +26 -0
- package/dist/commands/localization/language/delete.d.ts +1 -0
- package/dist/commands/localization/language/delete.js +24 -0
- package/dist/commands/localization/language/list-for-tenant.d.ts +1 -0
- package/dist/commands/localization/language/list-for-tenant.js +14 -0
- package/dist/commands/localization/language/list.d.ts +1 -0
- package/dist/commands/localization/language/list.js +14 -0
- package/dist/commands/localization/language/save.d.ts +1 -0
- package/dist/commands/localization/language/save.js +36 -0
- package/dist/commands/localization/language/set-default.d.ts +1 -0
- package/dist/commands/localization/language/set-default.js +24 -0
- package/dist/commands/localization/module/list-for-tenant.d.ts +1 -0
- package/dist/commands/localization/module/list-for-tenant.js +14 -0
- package/dist/commands/localization/module/list.d.ts +1 -0
- package/dist/commands/localization/module/list.js +14 -0
- package/dist/commands/localization/module/save.d.ts +1 -0
- package/dist/commands/localization/module/save.js +32 -0
- package/dist/commands/localization/module/tag-glossary.d.ts +1 -0
- package/dist/commands/localization/module/tag-glossary.js +28 -0
- package/dist/commands/login.js +32 -1
- package/dist/commands/mail/config/delete.d.ts +1 -0
- package/dist/commands/mail/config/delete.js +24 -0
- package/dist/commands/mail/config/duplicate.d.ts +1 -0
- package/dist/commands/mail/config/duplicate.js +24 -0
- package/dist/commands/mail/config/get.d.ts +1 -0
- package/dist/commands/mail/config/get.js +17 -0
- package/dist/commands/mail/config/list.d.ts +1 -0
- package/dist/commands/mail/config/list.js +14 -0
- package/dist/commands/mail/config/save.d.ts +1 -0
- package/dist/commands/mail/config/save.js +44 -0
- package/dist/commands/mail/mailbox/get.d.ts +1 -0
- package/dist/commands/mail/mailbox/get.js +17 -0
- package/dist/commands/mail/mailbox/list.d.ts +1 -0
- package/dist/commands/mail/mailbox/list.js +24 -0
- package/dist/commands/mail/send.d.ts +1 -0
- package/dist/commands/mail/send.js +40 -0
- package/dist/commands/mail/sendtoany.d.ts +1 -0
- package/dist/commands/mail/sendtoany.js +41 -0
- package/dist/commands/mail/template/clone.d.ts +1 -0
- package/dist/commands/mail/template/clone.js +33 -0
- package/dist/commands/mail/template/delete.d.ts +1 -0
- package/dist/commands/mail/template/delete.js +24 -0
- package/dist/commands/mail/template/get.d.ts +1 -0
- package/dist/commands/mail/template/get.js +17 -0
- package/dist/commands/mail/template/list.d.ts +1 -0
- package/dist/commands/mail/template/list.js +24 -0
- package/dist/commands/mail/template/save.d.ts +1 -0
- package/dist/commands/mail/template/save.js +37 -0
- package/dist/commands/mfa/backup-codes/generate.d.ts +1 -0
- package/dist/commands/mfa/backup-codes/generate.js +22 -0
- package/dist/commands/mfa/backup-codes/list.d.ts +1 -0
- package/dist/commands/mfa/backup-codes/list.js +14 -0
- package/dist/commands/mfa/backup-codes/use.d.ts +1 -0
- package/dist/commands/mfa/backup-codes/use.js +18 -0
- package/dist/commands/mfa/config-get.d.ts +1 -0
- package/dist/commands/mfa/config-get.js +14 -0
- package/dist/commands/mfa/config-save.d.ts +1 -0
- package/dist/commands/mfa/config-save.js +36 -0
- package/dist/commands/mfa/disable.d.ts +1 -0
- package/dist/commands/mfa/disable.js +22 -0
- package/dist/commands/mfa/generate.d.ts +1 -0
- package/dist/commands/mfa/generate.js +22 -0
- package/dist/commands/mfa/method-set.d.ts +1 -0
- package/dist/commands/mfa/method-set.js +20 -0
- package/dist/commands/mfa/resend.d.ts +1 -0
- package/dist/commands/mfa/resend.js +20 -0
- package/dist/commands/mfa/totp-enable.d.ts +10 -0
- package/dist/commands/mfa/totp-enable.js +52 -0
- package/dist/commands/mfa/totp-setup.d.ts +1 -0
- package/dist/commands/mfa/totp-setup.js +15 -0
- package/dist/commands/mfa/totp-verify-setup.d.ts +1 -0
- package/dist/commands/mfa/totp-verify-setup.js +17 -0
- package/dist/commands/mfa/verify.d.ts +1 -0
- package/dist/commands/mfa/verify.js +26 -0
- package/dist/commands/new/web.js +115 -15
- package/dist/commands/notification/delete.d.ts +1 -0
- package/dist/commands/notification/delete.js +24 -0
- package/dist/commands/notification/get.d.ts +1 -0
- package/dist/commands/notification/get.js +17 -0
- package/dist/commands/notification/list.d.ts +1 -0
- package/dist/commands/notification/list.js +22 -0
- package/dist/commands/notification/save.d.ts +1 -0
- package/dist/commands/notification/save.js +34 -0
- package/dist/commands/notifier/list.d.ts +1 -0
- package/dist/commands/notifier/list.js +23 -0
- package/dist/commands/notifier/mark-all-read.d.ts +1 -0
- package/dist/commands/notifier/mark-all-read.js +23 -0
- package/dist/commands/notifier/mark-read.d.ts +1 -0
- package/dist/commands/notifier/mark-read.js +24 -0
- package/dist/commands/notifier/notify.d.ts +1 -0
- package/dist/commands/notifier/notify.js +39 -0
- package/dist/commands/notifier/unread.d.ts +1 -0
- package/dist/commands/notifier/unread.js +25 -0
- package/dist/commands/projects/get.js +16 -14
- package/dist/commands/projects/list.js +2 -7
- package/dist/commands/release/builds/list.js +21 -3
- package/dist/commands/release/deploy.js +121 -30
- package/dist/commands/sdk/client.d.ts +1 -0
- package/dist/commands/sdk/client.js +99 -0
- package/dist/commands/secrets/get.d.ts +1 -0
- package/dist/commands/secrets/get.js +21 -0
- package/dist/commands/secrets/save.d.ts +1 -0
- package/dist/commands/secrets/save.js +51 -0
- package/dist/commands/skill/add.d.ts +1 -0
- package/dist/commands/skill/add.js +19 -0
- package/dist/commands/skill/list.d.ts +1 -0
- package/dist/commands/skill/list.js +15 -0
- package/dist/commands/skill/show.d.ts +1 -0
- package/dist/commands/skill/show.js +15 -0
- package/dist/commands/storage/config/delete.d.ts +1 -0
- package/dist/commands/storage/config/delete.js +24 -0
- package/dist/commands/storage/config/get.d.ts +1 -0
- package/dist/commands/storage/config/get.js +17 -0
- package/dist/commands/storage/config/list.d.ts +1 -0
- package/dist/commands/storage/config/list.js +14 -0
- package/dist/commands/storage/config/save.d.ts +1 -0
- package/dist/commands/storage/config/save.js +49 -0
- package/dist/commands/use.js +18 -3
- package/dist/index.js +965 -160
- package/dist/lib/api.d.ts +2 -1
- package/dist/lib/api.js +64 -20
- package/dist/lib/args.d.ts +3 -0
- package/dist/lib/args.js +15 -0
- package/dist/lib/auth.d.ts +6 -2
- package/dist/lib/auth.js +74 -35
- package/dist/lib/config.js +7 -7
- package/dist/lib/json-flag.d.ts +17 -0
- package/dist/lib/json-flag.js +55 -0
- package/dist/lib/project-info.d.ts +33 -0
- package/dist/lib/project-info.js +43 -0
- package/dist/lib/prompt.d.ts +2 -0
- package/dist/lib/prompt.js +28 -0
- package/dist/lib/scaffold-web/dashboard.js +1 -1
- package/dist/lib/scaffold-web/root-files.js +2 -2
- package/dist/lib/secret-store.js +7 -7
- package/dist/lib/skills.d.ts +17 -0
- package/dist/lib/skills.js +69 -0
- package/dist/lib/token.d.ts +2 -0
- package/dist/lib/token.js +12 -0
- package/dist/lib/workspace.d.ts +0 -4
- package/dist/lib/workspace.js +1 -2
- package/dist/skills/blocks-data-gateway-configuration/SKILL.md +204 -0
- package/dist/skills/blocks-data-gateway-crud/SKILL.md +223 -0
- package/dist/skills/blocks-data-storage/SKILL.md +161 -0
- package/dist/skills/blocks-frontend-local-https/SKILL.md +100 -0
- package/dist/skills/blocks-iam-access-control/SKILL.md +49 -0
- package/dist/skills/blocks-iam-access-control/flows/feature-gating.md +38 -0
- package/dist/skills/blocks-iam-access-control/flows/manage-roles-permissions.md +109 -0
- package/dist/skills/blocks-iam-account/SKILL.md +169 -0
- package/dist/skills/blocks-iam-mfa/SKILL.md +124 -0
- package/dist/skills/blocks-iam-organizations/SKILL.md +43 -0
- package/dist/skills/blocks-iam-organizations/flows/admin-mutations.md +89 -0
- package/dist/skills/blocks-iam-organizations/flows/read-and-switch.md +57 -0
- package/dist/skills/blocks-iam-sso-oidc-configuration/SKILL.md +89 -0
- package/dist/skills/blocks-iam-sso-oidc-implementation/SKILL.md +80 -0
- package/dist/skills/blocks-iam-users/SKILL.md +131 -0
- package/dist/skills/blocks-localization-configuration/SKILL.md +149 -0
- package/dist/skills/blocks-localization-implementation/SKILL.md +63 -0
- package/dist/skills/blocks-mail/SKILL.md +95 -0
- package/dist/skills/blocks-notification/SKILL.md +69 -0
- package/dist/skills/blocks-notifier/SKILL.md +107 -0
- package/dist/skills/blocks-onboarding/SKILL.md +78 -0
- package/dist/skills/blocks-release-deployment/SKILL.md +81 -0
- package/dist/skills/blocks-secrets/SKILL.md +81 -0
- package/dist/skills/blocks-storage-configuration/SKILL.md +93 -0
- package/dist/skills/lint.mjs +168 -0
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -4,30 +4,411 @@ import { authStatus } from "./commands/auth/status.js";
|
|
|
4
4
|
import { deselectProject } from "./commands/deselect.js";
|
|
5
5
|
import { doctor } from "./commands/doctor.js";
|
|
6
6
|
import { dataReload } from "./commands/data/reload.js";
|
|
7
|
+
import { dataSync } from "./commands/data/sync.js";
|
|
7
8
|
import { dataValidate } from "./commands/data/validate.js";
|
|
9
|
+
import { dataConfigCreate } from "./commands/data/config/create.js";
|
|
10
|
+
import { dataConfigGet } from "./commands/data/config/get.js";
|
|
11
|
+
import { dataConfigUpdate } from "./commands/data/config/update.js";
|
|
8
12
|
import { dataRulesDeploy } from "./commands/data/rules/deploy.js";
|
|
9
13
|
import { dataRulesPull } from "./commands/data/rules/pull.js";
|
|
14
|
+
import { dataRulesPolicyDelete } from "./commands/data/rules/policy/delete.js";
|
|
15
|
+
import { dataRulesPolicyGet } from "./commands/data/rules/policy/get.js";
|
|
10
16
|
import { dataSchemaList } from "./commands/data/schema/list.js";
|
|
11
17
|
import { dataSchemaPull } from "./commands/data/schema/pull.js";
|
|
12
18
|
import { dataSchemaPush } from "./commands/data/schema/push.js";
|
|
19
|
+
import { dataSchemaAggregation } from "./commands/data/schema/aggregation.js";
|
|
20
|
+
import { dataSchemaChangeLogs } from "./commands/data/schema/change-logs.js";
|
|
21
|
+
import { dataSchemaDelete } from "./commands/data/schema/delete.js";
|
|
22
|
+
import { dataSchemaFields } from "./commands/data/schema/fields.js";
|
|
23
|
+
import { dataSchemaGet } from "./commands/data/schema/get.js";
|
|
24
|
+
import { dataSchemaGetByName } from "./commands/data/schema/get-by-name.js";
|
|
25
|
+
import { dataSchemaInfoList } from "./commands/data/schema/info/list.js";
|
|
26
|
+
import { dataSchemaInfoSave } from "./commands/data/schema/info/save.js";
|
|
27
|
+
import { dataSchemaInfoUpdate } from "./commands/data/schema/info/update.js";
|
|
28
|
+
import { dataValidationBySchema } from "./commands/data/validation/by-schema.js";
|
|
29
|
+
import { dataValidationBySchemaField } from "./commands/data/validation/by-schema-field.js";
|
|
30
|
+
import { dataValidationDelete } from "./commands/data/validation/delete.js";
|
|
31
|
+
import { dataValidationGet } from "./commands/data/validation/get.js";
|
|
32
|
+
import { dataValidationList } from "./commands/data/validation/list.js";
|
|
33
|
+
import { dataValidationSave } from "./commands/data/validation/save.js";
|
|
34
|
+
import { dataFilesCreateFolder } from "./commands/data/files/create-folder.js";
|
|
35
|
+
import { dataFilesDelete } from "./commands/data/files/delete.js";
|
|
36
|
+
import { dataFilesDeleteFolder } from "./commands/data/files/delete-folder.js";
|
|
37
|
+
import { dataFilesDmsList } from "./commands/data/files/dms-list.js";
|
|
38
|
+
import { dataFilesDmsUpload } from "./commands/data/files/dms-upload.js";
|
|
39
|
+
import { dataFilesGet } from "./commands/data/files/get.js";
|
|
40
|
+
import { dataFilesGetMany } from "./commands/data/files/get-many.js";
|
|
41
|
+
import { dataFilesInfo } from "./commands/data/files/info.js";
|
|
42
|
+
import { dataFilesPresignedUploadUrl } from "./commands/data/files/presigned-upload-url.js";
|
|
43
|
+
import { dataFilesUpdateAdditionalInfo } from "./commands/data/files/update-additional-info.js";
|
|
44
|
+
import { dataFilesUpload } from "./commands/data/files/upload.js";
|
|
45
|
+
import { dataFilesUploadToLocalStorage } from "./commands/data/files/upload-to-local-storage.js";
|
|
46
|
+
import { dataFilesUploadToUrl } from "./commands/data/files/upload-to-url.js";
|
|
13
47
|
import { iamMe } from "./commands/iam/me.js";
|
|
14
48
|
import { init } from "./commands/init.js";
|
|
49
|
+
import { localizationAssistantTranslationSuggestion } from "./commands/localization/assistant/translation-suggestion.js";
|
|
50
|
+
import { localizationConfigGetWebhook } from "./commands/localization/config/get-webhook.js";
|
|
51
|
+
import { localizationConfigSaveWebhook } from "./commands/localization/config/save-webhook.js";
|
|
52
|
+
import { localizationGlossaryDelete } from "./commands/localization/glossary/delete.js";
|
|
53
|
+
import { localizationGlossaryGet } from "./commands/localization/glossary/get.js";
|
|
54
|
+
import { localizationGlossaryList } from "./commands/localization/glossary/list.js";
|
|
55
|
+
import { localizationGlossarySave } from "./commands/localization/glossary/save.js";
|
|
56
|
+
import { localizationGlossarySuggested } from "./commands/localization/glossary/suggested.js";
|
|
57
|
+
import { localizationKeyDelete } from "./commands/localization/key/delete.js";
|
|
58
|
+
import { localizationKeyDeleteKeys } from "./commands/localization/key/delete-keys.js";
|
|
59
|
+
import { localizationKeyGenerateUilmFile } from "./commands/localization/key/generate-uilm-file.js";
|
|
60
|
+
import { localizationKeyGet } from "./commands/localization/key/get.js";
|
|
61
|
+
import { localizationKeyGetByNames } from "./commands/localization/key/get-by-names.js";
|
|
62
|
+
import { localizationKeyGetLanguageFileGenerationHistory } from "./commands/localization/key/get-language-file-generation-history.js";
|
|
63
|
+
import { localizationKeyGetLocalizationTimeline } from "./commands/localization/key/get-localization-timeline.js";
|
|
64
|
+
import { localizationKeyGetTimeline } from "./commands/localization/key/get-timeline.js";
|
|
65
|
+
import { localizationKeyGetTimelineByOperationId } from "./commands/localization/key/get-timeline-by-operation-id.js";
|
|
66
|
+
import { localizationKeyGetUilmExportedFiles } from "./commands/localization/key/get-uilm-exported-files.js";
|
|
67
|
+
import { localizationKeyGetUilmFile } from "./commands/localization/key/get-uilm-file.js";
|
|
68
|
+
import { localizationKeyList } from "./commands/localization/key/list.js";
|
|
69
|
+
import { localizationKeyRollback } from "./commands/localization/key/rollback.js";
|
|
70
|
+
import { localizationKeySave } from "./commands/localization/key/save.js";
|
|
71
|
+
import { localizationKeyTranslateAll } from "./commands/localization/key/translate-all.js";
|
|
72
|
+
import { localizationKeyTranslateAndExport } from "./commands/localization/key/translate-and-export.js";
|
|
73
|
+
import { localizationKeyTranslateKey } from "./commands/localization/key/translate-key.js";
|
|
74
|
+
import { localizationKeyTranslateKeys } from "./commands/localization/key/translate-keys.js";
|
|
75
|
+
import { localizationKeyUilmExport } from "./commands/localization/key/uilm-export.js";
|
|
76
|
+
import { localizationKeyUilmImport } from "./commands/localization/key/uilm-import.js";
|
|
77
|
+
import { localizationLanguageDelete } from "./commands/localization/language/delete.js";
|
|
78
|
+
import { localizationLanguageList } from "./commands/localization/language/list.js";
|
|
79
|
+
import { localizationLanguageListForTenant } from "./commands/localization/language/list-for-tenant.js";
|
|
80
|
+
import { localizationLanguageSave } from "./commands/localization/language/save.js";
|
|
81
|
+
import { localizationLanguageSetDefault } from "./commands/localization/language/set-default.js";
|
|
82
|
+
import { localizationModuleList } from "./commands/localization/module/list.js";
|
|
83
|
+
import { localizationModuleListForTenant } from "./commands/localization/module/list-for-tenant.js";
|
|
84
|
+
import { localizationModuleSave } from "./commands/localization/module/save.js";
|
|
85
|
+
import { localizationModuleTagGlossary } from "./commands/localization/module/tag-glossary.js";
|
|
15
86
|
import { localizationPull } from "./commands/localization/pull.js";
|
|
16
87
|
import { localizationPush } from "./commands/localization/push.js";
|
|
17
88
|
import { localizationValidate } from "./commands/localization/validate.js";
|
|
18
89
|
import { login } from "./commands/login.js";
|
|
19
90
|
import { logout } from "./commands/logout.js";
|
|
20
91
|
import { newWeb } from "./commands/new/web.js";
|
|
21
|
-
import { createProject } from "./commands/projects/create.js";
|
|
92
|
+
// import { createProject } from "./commands/projects/create.js"; // disabled for now
|
|
22
93
|
import { getProject } from "./commands/projects/get.js";
|
|
23
94
|
import { listProjects } from "./commands/projects/list.js";
|
|
24
95
|
import { releaseBuildsGet } from "./commands/release/builds/get.js";
|
|
25
96
|
import { releaseBuildsList } from "./commands/release/builds/list.js";
|
|
26
97
|
import { releaseDeploy } from "./commands/release/deploy.js";
|
|
27
98
|
import { releaseStatus } from "./commands/release/status.js";
|
|
99
|
+
import { sdkClient } from "./commands/sdk/client.js";
|
|
100
|
+
import { skillAdd } from "./commands/skill/add.js";
|
|
101
|
+
import { skillList } from "./commands/skill/list.js";
|
|
102
|
+
import { skillShow } from "./commands/skill/show.js";
|
|
28
103
|
import { useProject } from "./commands/use.js";
|
|
104
|
+
import { authClientCredentialsDelete } from "./commands/auth/client-credentials/delete.js";
|
|
105
|
+
import { authClientCredentialsList } from "./commands/auth/client-credentials/list.js";
|
|
106
|
+
import { authClientCredentialsSave } from "./commands/auth/client-credentials/save.js";
|
|
107
|
+
import { authConfigGet } from "./commands/auth/config/get.js";
|
|
108
|
+
import { authConfigSave } from "./commands/auth/config/save.js";
|
|
109
|
+
import { authIdpCreate } from "./commands/auth/idp/create.js";
|
|
110
|
+
import { authIdpDelete } from "./commands/auth/idp/delete.js";
|
|
111
|
+
import { authIdpGet } from "./commands/auth/idp/get.js";
|
|
112
|
+
import { authIdpList } from "./commands/auth/idp/list.js";
|
|
113
|
+
import { authIdpStatus } from "./commands/auth/idp/status.js";
|
|
114
|
+
import { authIdpUpdate } from "./commands/auth/idp/update.js";
|
|
115
|
+
import { authOidcClientsDelete } from "./commands/auth/oidc-clients/delete.js";
|
|
116
|
+
import { authOidcClientsGet } from "./commands/auth/oidc-clients/get.js";
|
|
117
|
+
import { authOidcClientsList } from "./commands/auth/oidc-clients/list.js";
|
|
118
|
+
import { authOidcClientsRotateSecret } from "./commands/auth/oidc-clients/rotate-secret.js";
|
|
119
|
+
import { authOidcClientsSave } from "./commands/auth/oidc-clients/save.js";
|
|
120
|
+
import { iamEmailAvailable } from "./commands/iam/email/available.js";
|
|
121
|
+
import { iamOrganizationsConfigGet } from "./commands/iam/organizations/config-get.js";
|
|
122
|
+
import { iamOrganizationsConfigSave } from "./commands/iam/organizations/config-save.js";
|
|
123
|
+
import { iamOrganizationsCreate } from "./commands/iam/organizations/create.js";
|
|
124
|
+
import { iamOrganizationsGet } from "./commands/iam/organizations/get.js";
|
|
125
|
+
import { iamOrganizationsList } from "./commands/iam/organizations/list.js";
|
|
126
|
+
import { iamOrganizationsMy } from "./commands/iam/organizations/my.js";
|
|
127
|
+
import { iamOrganizationsUpdate } from "./commands/iam/organizations/update.js";
|
|
128
|
+
import { iamPermissionsBySeverity } from "./commands/iam/permissions/by-severity.js";
|
|
129
|
+
import { iamPermissionsCreate } from "./commands/iam/permissions/create.js";
|
|
130
|
+
import { iamPermissionsGet } from "./commands/iam/permissions/get.js";
|
|
131
|
+
import { iamPermissionsList } from "./commands/iam/permissions/list.js";
|
|
132
|
+
import { iamPermissionsUpdate } from "./commands/iam/permissions/update.js";
|
|
133
|
+
import { iamResourcesFeatures } from "./commands/iam/resources/features.js";
|
|
134
|
+
import { iamResourcesGroups } from "./commands/iam/resources/groups.js";
|
|
135
|
+
import { iamRolesAssignPermissions } from "./commands/iam/roles/assign-permissions.js";
|
|
136
|
+
import { iamRolesAssignable } from "./commands/iam/roles/assignable.js";
|
|
137
|
+
import { iamRolesCreate } from "./commands/iam/roles/create.js";
|
|
138
|
+
import { iamRolesGet } from "./commands/iam/roles/get.js";
|
|
139
|
+
import { iamRolesList } from "./commands/iam/roles/list.js";
|
|
140
|
+
import { iamRolesUpdate } from "./commands/iam/roles/update.js";
|
|
141
|
+
import { iamSignupSettingsGet } from "./commands/iam/signup-settings/get.js";
|
|
142
|
+
import { iamSignupSettingsSave } from "./commands/iam/signup-settings/save.js";
|
|
143
|
+
import { iamUsersAccessGrant } from "./commands/iam/users/access-grant.js";
|
|
144
|
+
import { iamUsersAccessRevoke } from "./commands/iam/users/access-revoke.js";
|
|
145
|
+
import { iamUsersActivate } from "./commands/iam/users/activate.js";
|
|
146
|
+
import { iamUsersCreate } from "./commands/iam/users/create.js";
|
|
147
|
+
import { iamUsersDeactivate } from "./commands/iam/users/deactivate.js";
|
|
148
|
+
import { iamUsersExists } from "./commands/iam/users/exists.js";
|
|
149
|
+
import { iamUsersGet } from "./commands/iam/users/get.js";
|
|
150
|
+
import { iamUsersList } from "./commands/iam/users/list.js";
|
|
151
|
+
import { iamUsersUpdate } from "./commands/iam/users/update.js";
|
|
152
|
+
import { mailConfigDelete } from "./commands/mail/config/delete.js";
|
|
153
|
+
import { mailConfigDuplicate } from "./commands/mail/config/duplicate.js";
|
|
154
|
+
import { mailConfigGet } from "./commands/mail/config/get.js";
|
|
155
|
+
import { mailConfigList } from "./commands/mail/config/list.js";
|
|
156
|
+
import { mailConfigSave } from "./commands/mail/config/save.js";
|
|
157
|
+
import { mailMailboxGet } from "./commands/mail/mailbox/get.js";
|
|
158
|
+
import { mailMailboxList } from "./commands/mail/mailbox/list.js";
|
|
159
|
+
import { mailSend } from "./commands/mail/send.js";
|
|
160
|
+
import { mailSendToAny } from "./commands/mail/sendtoany.js";
|
|
161
|
+
import { mailTemplateClone } from "./commands/mail/template/clone.js";
|
|
162
|
+
import { mailTemplateDelete } from "./commands/mail/template/delete.js";
|
|
163
|
+
import { mailTemplateGet } from "./commands/mail/template/get.js";
|
|
164
|
+
import { mailTemplateList } from "./commands/mail/template/list.js";
|
|
165
|
+
import { mailTemplateSave } from "./commands/mail/template/save.js";
|
|
166
|
+
import { mfaBackupCodesGenerate } from "./commands/mfa/backup-codes/generate.js";
|
|
167
|
+
import { mfaBackupCodesList } from "./commands/mfa/backup-codes/list.js";
|
|
168
|
+
import { mfaBackupCodesUse } from "./commands/mfa/backup-codes/use.js";
|
|
169
|
+
import { mfaConfigGet } from "./commands/mfa/config-get.js";
|
|
170
|
+
import { mfaConfigSave } from "./commands/mfa/config-save.js";
|
|
171
|
+
import { mfaDisable } from "./commands/mfa/disable.js";
|
|
172
|
+
import { mfaGenerate } from "./commands/mfa/generate.js";
|
|
173
|
+
import { mfaMethodSet } from "./commands/mfa/method-set.js";
|
|
174
|
+
import { mfaResend } from "./commands/mfa/resend.js";
|
|
175
|
+
import { mfaTotpEnable } from "./commands/mfa/totp-enable.js";
|
|
176
|
+
import { mfaTotpSetup } from "./commands/mfa/totp-setup.js";
|
|
177
|
+
import { mfaTotpVerifySetup } from "./commands/mfa/totp-verify-setup.js";
|
|
178
|
+
import { mfaVerify } from "./commands/mfa/verify.js";
|
|
179
|
+
import { notificationDelete } from "./commands/notification/delete.js";
|
|
180
|
+
import { notificationGet } from "./commands/notification/get.js";
|
|
181
|
+
import { notificationList } from "./commands/notification/list.js";
|
|
182
|
+
import { notificationSave } from "./commands/notification/save.js";
|
|
183
|
+
import { notifierList } from "./commands/notifier/list.js";
|
|
184
|
+
import { notifierMarkAllRead } from "./commands/notifier/mark-all-read.js";
|
|
185
|
+
import { notifierMarkRead } from "./commands/notifier/mark-read.js";
|
|
186
|
+
import { notifierNotify } from "./commands/notifier/notify.js";
|
|
187
|
+
import { notifierUnread } from "./commands/notifier/unread.js";
|
|
188
|
+
import { secretsGet } from "./commands/secrets/get.js";
|
|
189
|
+
import { secretsSave } from "./commands/secrets/save.js";
|
|
190
|
+
import { storageConfigDelete } from "./commands/storage/config/delete.js";
|
|
191
|
+
import { storageConfigGet } from "./commands/storage/config/get.js";
|
|
192
|
+
import { storageConfigList } from "./commands/storage/config/list.js";
|
|
193
|
+
import { storageConfigSave } from "./commands/storage/config/save.js";
|
|
29
194
|
import { CliActionableError } from "./lib/errors.js";
|
|
30
|
-
|
|
195
|
+
// Every command below is reachable with either colon or space separators,
|
|
196
|
+
// e.g. "auth:status" and "auth status" both resolve to authStatus. Keys are
|
|
197
|
+
// the canonical colon-joined form; the deepest is 4 segments
|
|
198
|
+
// (e.g. iam:users:access:grant).
|
|
199
|
+
const commands = {
|
|
200
|
+
"auth:status": authStatus,
|
|
201
|
+
"auth:refresh": authRefresh,
|
|
202
|
+
"doctor": doctor,
|
|
203
|
+
"init": () => init(),
|
|
204
|
+
"login": login,
|
|
205
|
+
"logout": logout,
|
|
206
|
+
"projects:list": listProjects,
|
|
207
|
+
"use": useProject,
|
|
208
|
+
"deselect": deselectProject,
|
|
209
|
+
"data:schema:list": dataSchemaList,
|
|
210
|
+
"data:schema:pull": dataSchemaPull,
|
|
211
|
+
"data:schema:push": dataSchemaPush,
|
|
212
|
+
"data:rules:pull": dataRulesPull,
|
|
213
|
+
"data:rules:deploy": dataRulesDeploy,
|
|
214
|
+
"data:reload": dataReload,
|
|
215
|
+
"data:sync": dataSync,
|
|
216
|
+
"data:validate": dataValidate,
|
|
217
|
+
"data:config:get": dataConfigGet,
|
|
218
|
+
"data:config:create": dataConfigCreate,
|
|
219
|
+
"data:config:update": dataConfigUpdate,
|
|
220
|
+
"data:schema:get": dataSchemaGet,
|
|
221
|
+
"data:schema:get-by-name": dataSchemaGetByName,
|
|
222
|
+
"data:schema:aggregation": dataSchemaAggregation,
|
|
223
|
+
"data:schema:change-logs": dataSchemaChangeLogs,
|
|
224
|
+
"data:schema:delete": dataSchemaDelete,
|
|
225
|
+
"data:schema:fields": dataSchemaFields,
|
|
226
|
+
"data:schema:info:list": dataSchemaInfoList,
|
|
227
|
+
"data:schema:info:save": dataSchemaInfoSave,
|
|
228
|
+
"data:schema:info:update": dataSchemaInfoUpdate,
|
|
229
|
+
"data:rules:policy:get": dataRulesPolicyGet,
|
|
230
|
+
"data:rules:policy:delete": dataRulesPolicyDelete,
|
|
231
|
+
"data:validation:list": dataValidationList,
|
|
232
|
+
"data:validation:get": dataValidationGet,
|
|
233
|
+
"data:validation:by-schema": dataValidationBySchema,
|
|
234
|
+
"data:validation:by-schema-field": dataValidationBySchemaField,
|
|
235
|
+
"data:validation:save": dataValidationSave,
|
|
236
|
+
"data:validation:delete": dataValidationDelete,
|
|
237
|
+
"data:files:get": dataFilesGet,
|
|
238
|
+
"data:files:get-many": dataFilesGetMany,
|
|
239
|
+
"data:files:info": dataFilesInfo,
|
|
240
|
+
"data:files:upload": dataFilesUpload,
|
|
241
|
+
"data:files:presigned-upload-url": dataFilesPresignedUploadUrl,
|
|
242
|
+
"data:files:upload-to-url": dataFilesUploadToUrl,
|
|
243
|
+
"data:files:upload-to-local-storage": dataFilesUploadToLocalStorage,
|
|
244
|
+
"data:files:update-additional-info": dataFilesUpdateAdditionalInfo,
|
|
245
|
+
"data:files:delete": dataFilesDelete,
|
|
246
|
+
"data:files:dms-list": dataFilesDmsList,
|
|
247
|
+
"data:files:dms-upload": dataFilesDmsUpload,
|
|
248
|
+
"data:files:create-folder": dataFilesCreateFolder,
|
|
249
|
+
"data:files:delete-folder": dataFilesDeleteFolder,
|
|
250
|
+
"localization:validate": localizationValidate,
|
|
251
|
+
"localization:push": localizationPush,
|
|
252
|
+
"localization:pull": localizationPull,
|
|
253
|
+
"localization:assistant:translation-suggestion": localizationAssistantTranslationSuggestion,
|
|
254
|
+
"localization:config:get-webhook": localizationConfigGetWebhook,
|
|
255
|
+
"localization:config:save-webhook": localizationConfigSaveWebhook,
|
|
256
|
+
"localization:glossary:save": localizationGlossarySave,
|
|
257
|
+
"localization:glossary:list": localizationGlossaryList,
|
|
258
|
+
"localization:glossary:get": localizationGlossaryGet,
|
|
259
|
+
"localization:glossary:suggested": localizationGlossarySuggested,
|
|
260
|
+
"localization:glossary:delete": localizationGlossaryDelete,
|
|
261
|
+
"localization:key:save": localizationKeySave,
|
|
262
|
+
"localization:key:list": localizationKeyList,
|
|
263
|
+
"localization:key:get-by-names": localizationKeyGetByNames,
|
|
264
|
+
"localization:key:get-timeline": localizationKeyGetTimeline,
|
|
265
|
+
"localization:key:get-localization-timeline": localizationKeyGetLocalizationTimeline,
|
|
266
|
+
"localization:key:get-timeline-by-operation-id": localizationKeyGetTimelineByOperationId,
|
|
267
|
+
"localization:key:get": localizationKeyGet,
|
|
268
|
+
"localization:key:delete": localizationKeyDelete,
|
|
269
|
+
"localization:key:delete-keys": localizationKeyDeleteKeys,
|
|
270
|
+
"localization:key:get-uilm-file": localizationKeyGetUilmFile,
|
|
271
|
+
"localization:key:generate-uilm-file": localizationKeyGenerateUilmFile,
|
|
272
|
+
"localization:key:translate-all": localizationKeyTranslateAll,
|
|
273
|
+
"localization:key:translate-and-export": localizationKeyTranslateAndExport,
|
|
274
|
+
"localization:key:translate-key": localizationKeyTranslateKey,
|
|
275
|
+
"localization:key:translate-keys": localizationKeyTranslateKeys,
|
|
276
|
+
"localization:key:uilm-import": localizationKeyUilmImport,
|
|
277
|
+
"localization:key:uilm-export": localizationKeyUilmExport,
|
|
278
|
+
"localization:key:get-uilm-exported-files": localizationKeyGetUilmExportedFiles,
|
|
279
|
+
"localization:key:get-language-file-generation-history": localizationKeyGetLanguageFileGenerationHistory,
|
|
280
|
+
"localization:key:rollback": localizationKeyRollback,
|
|
281
|
+
"localization:language:save": localizationLanguageSave,
|
|
282
|
+
"localization:language:list": localizationLanguageList,
|
|
283
|
+
"localization:language:list-for-tenant": localizationLanguageListForTenant,
|
|
284
|
+
"localization:language:delete": localizationLanguageDelete,
|
|
285
|
+
"localization:language:set-default": localizationLanguageSetDefault,
|
|
286
|
+
"localization:module:save": localizationModuleSave,
|
|
287
|
+
"localization:module:list": localizationModuleList,
|
|
288
|
+
"localization:module:list-for-tenant": localizationModuleListForTenant,
|
|
289
|
+
"localization:module:tag-glossary": localizationModuleTagGlossary,
|
|
290
|
+
"release:deploy": releaseDeploy,
|
|
291
|
+
"release:status": releaseStatus,
|
|
292
|
+
"release:builds:list": releaseBuildsList,
|
|
293
|
+
"release:builds:get": releaseBuildsGet,
|
|
294
|
+
"iam:users:list": iamUsersList,
|
|
295
|
+
"iam:users:get": iamUsersGet,
|
|
296
|
+
"iam:users:create": iamUsersCreate,
|
|
297
|
+
"iam:users:update": iamUsersUpdate,
|
|
298
|
+
"iam:users:activate": iamUsersActivate,
|
|
299
|
+
"iam:users:deactivate": iamUsersDeactivate,
|
|
300
|
+
"iam:users:access:grant": iamUsersAccessGrant,
|
|
301
|
+
"iam:users:access:revoke": iamUsersAccessRevoke,
|
|
302
|
+
"iam:users:exists": iamUsersExists,
|
|
303
|
+
"iam:email:available": iamEmailAvailable,
|
|
304
|
+
"iam:roles:list": iamRolesList,
|
|
305
|
+
"iam:roles:get": iamRolesGet,
|
|
306
|
+
"iam:roles:create": iamRolesCreate,
|
|
307
|
+
"iam:roles:update": iamRolesUpdate,
|
|
308
|
+
"iam:roles:assign-permissions": iamRolesAssignPermissions,
|
|
309
|
+
"iam:roles:assignable": iamRolesAssignable,
|
|
310
|
+
"iam:permissions:list": iamPermissionsList,
|
|
311
|
+
"iam:permissions:get": iamPermissionsGet,
|
|
312
|
+
"iam:permissions:create": iamPermissionsCreate,
|
|
313
|
+
"iam:permissions:update": iamPermissionsUpdate,
|
|
314
|
+
"iam:permissions:by-severity": iamPermissionsBySeverity,
|
|
315
|
+
"iam:resources:groups": iamResourcesGroups,
|
|
316
|
+
"iam:resources:features": iamResourcesFeatures,
|
|
317
|
+
"iam:organizations:list": iamOrganizationsList,
|
|
318
|
+
"iam:organizations:get": iamOrganizationsGet,
|
|
319
|
+
"iam:organizations:create": iamOrganizationsCreate,
|
|
320
|
+
"iam:organizations:update": iamOrganizationsUpdate,
|
|
321
|
+
"iam:organizations:my": iamOrganizationsMy,
|
|
322
|
+
"iam:organizations:config:get": iamOrganizationsConfigGet,
|
|
323
|
+
"iam:organizations:config:save": iamOrganizationsConfigSave,
|
|
324
|
+
"iam:signup-settings:get": iamSignupSettingsGet,
|
|
325
|
+
"iam:signup-settings:save": iamSignupSettingsSave,
|
|
326
|
+
"mfa:config:get": mfaConfigGet,
|
|
327
|
+
"mfa:config:save": mfaConfigSave,
|
|
328
|
+
"mfa:totp:setup": mfaTotpSetup,
|
|
329
|
+
"mfa:totp:verify-setup": mfaTotpVerifySetup,
|
|
330
|
+
"mfa:totp:enable": mfaTotpEnable,
|
|
331
|
+
"mfa:generate": mfaGenerate,
|
|
332
|
+
"mfa:resend": mfaResend,
|
|
333
|
+
"mfa:verify": mfaVerify,
|
|
334
|
+
"mfa:method:set": mfaMethodSet,
|
|
335
|
+
"mfa:disable": mfaDisable,
|
|
336
|
+
"mfa:backup-codes:list": mfaBackupCodesList,
|
|
337
|
+
"mfa:backup-codes:generate": mfaBackupCodesGenerate,
|
|
338
|
+
"mfa:backup-codes:use": mfaBackupCodesUse,
|
|
339
|
+
"mail:config:list": mailConfigList,
|
|
340
|
+
"mail:config:get": mailConfigGet,
|
|
341
|
+
"mail:config:save": mailConfigSave,
|
|
342
|
+
"mail:config:delete": mailConfigDelete,
|
|
343
|
+
"mail:config:duplicate": mailConfigDuplicate,
|
|
344
|
+
"mail:template:list": mailTemplateList,
|
|
345
|
+
"mail:template:get": mailTemplateGet,
|
|
346
|
+
"mail:template:save": mailTemplateSave,
|
|
347
|
+
"mail:template:delete": mailTemplateDelete,
|
|
348
|
+
"mail:template:clone": mailTemplateClone,
|
|
349
|
+
"mail:mailbox:list": mailMailboxList,
|
|
350
|
+
"mail:mailbox:get": mailMailboxGet,
|
|
351
|
+
"mail:send": mailSend,
|
|
352
|
+
"mail:sendtoany": mailSendToAny,
|
|
353
|
+
"notification:list": notificationList,
|
|
354
|
+
"notification:get": notificationGet,
|
|
355
|
+
"notification:save": notificationSave,
|
|
356
|
+
"notification:delete": notificationDelete,
|
|
357
|
+
"notifier:notify": notifierNotify,
|
|
358
|
+
"notifier:list": notifierList,
|
|
359
|
+
"notifier:unread": notifierUnread,
|
|
360
|
+
"notifier:mark-read": notifierMarkRead,
|
|
361
|
+
"notifier:mark-all-read": notifierMarkAllRead,
|
|
362
|
+
"secrets:get": secretsGet,
|
|
363
|
+
"secrets:save": secretsSave,
|
|
364
|
+
"storage:config:list": storageConfigList,
|
|
365
|
+
"storage:config:get": storageConfigGet,
|
|
366
|
+
"storage:config:save": storageConfigSave,
|
|
367
|
+
"storage:config:delete": storageConfigDelete,
|
|
368
|
+
"auth:idp:list": authIdpList,
|
|
369
|
+
"auth:idp:get": authIdpGet,
|
|
370
|
+
"auth:idp:create": authIdpCreate,
|
|
371
|
+
"auth:idp:update": authIdpUpdate,
|
|
372
|
+
"auth:idp:delete": authIdpDelete,
|
|
373
|
+
"auth:idp:status": authIdpStatus,
|
|
374
|
+
"auth:config:get": authConfigGet,
|
|
375
|
+
"auth:config:save": authConfigSave,
|
|
376
|
+
"auth:client-credentials:list": authClientCredentialsList,
|
|
377
|
+
"auth:client-credentials:save": authClientCredentialsSave,
|
|
378
|
+
"auth:client-credentials:delete": authClientCredentialsDelete,
|
|
379
|
+
"auth:oidc-clients:list": authOidcClientsList,
|
|
380
|
+
"auth:oidc-clients:get": authOidcClientsGet,
|
|
381
|
+
"auth:oidc-clients:save": authOidcClientsSave,
|
|
382
|
+
"auth:oidc-clients:delete": authOidcClientsDelete,
|
|
383
|
+
"auth:oidc-clients:rotate-secret": authOidcClientsRotateSecret,
|
|
384
|
+
"auth:remove": authRemove,
|
|
385
|
+
"iam:me": iamMe,
|
|
386
|
+
"projects:get": getProject,
|
|
387
|
+
"new:web": newWeb,
|
|
388
|
+
"skill:list": skillList,
|
|
389
|
+
"skill:show": skillShow,
|
|
390
|
+
"skill:add": skillAdd,
|
|
391
|
+
"sdk:client": sdkClient,
|
|
392
|
+
};
|
|
393
|
+
const MAX_COMMAND_WORDS = 4;
|
|
394
|
+
function resolveCommand(argv) {
|
|
395
|
+
const words = [];
|
|
396
|
+
let tokensConsumed = 0;
|
|
397
|
+
for (const token of argv) {
|
|
398
|
+
if (token.startsWith("-"))
|
|
399
|
+
break;
|
|
400
|
+
words.push(...token.split(":").filter(Boolean));
|
|
401
|
+
tokensConsumed++;
|
|
402
|
+
const handler = commands[words.join(":")];
|
|
403
|
+
if (handler)
|
|
404
|
+
return { handler, args: argv.slice(tokensConsumed) };
|
|
405
|
+
if (words.length >= MAX_COMMAND_WORDS)
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
410
|
+
const argv = process.argv.slice(2);
|
|
411
|
+
const [command, subcommand] = argv;
|
|
31
412
|
try {
|
|
32
413
|
if (command === "--version" || command === "-v" || command === "version") {
|
|
33
414
|
await printVersion();
|
|
@@ -35,101 +416,12 @@ try {
|
|
|
35
416
|
else if (!command || command === "help" || command === "--help" || command === "-h") {
|
|
36
417
|
printHelp();
|
|
37
418
|
}
|
|
38
|
-
else if (command === "auth:remove" || (command === "auth" && subcommand === "remove")) {
|
|
39
|
-
await authRemove(command === "auth" ? rest : [subcommand, ...rest].filter(Boolean));
|
|
40
|
-
}
|
|
41
|
-
else if (command === "auth:status") {
|
|
42
|
-
await authStatus([subcommand, ...rest].filter(Boolean));
|
|
43
|
-
}
|
|
44
|
-
else if (command === "auth:refresh") {
|
|
45
|
-
await authRefresh([subcommand, ...rest].filter(Boolean));
|
|
46
|
-
}
|
|
47
|
-
else if (command === "auth" && subcommand === "status") {
|
|
48
|
-
await authStatus(rest);
|
|
49
|
-
}
|
|
50
|
-
else if (command === "auth" && subcommand === "refresh") {
|
|
51
|
-
await authRefresh(rest);
|
|
52
|
-
}
|
|
53
|
-
else if (command === "doctor") {
|
|
54
|
-
await doctor([subcommand, ...rest].filter(Boolean));
|
|
55
|
-
}
|
|
56
|
-
else if (command === "init") {
|
|
57
|
-
await init();
|
|
58
|
-
}
|
|
59
|
-
else if (command === "login") {
|
|
60
|
-
await login([subcommand, ...rest].filter(Boolean));
|
|
61
|
-
}
|
|
62
|
-
else if (command === "logout") {
|
|
63
|
-
await logout([subcommand, ...rest].filter(Boolean));
|
|
64
|
-
}
|
|
65
|
-
else if (command === "iam:me" || (command === "iam" && subcommand === "me")) {
|
|
66
|
-
await iamMe(command === "iam" ? rest : [subcommand, ...rest].filter(Boolean));
|
|
67
|
-
}
|
|
68
|
-
else if (command === "projects:list") {
|
|
69
|
-
await listProjects([subcommand, ...rest].filter(Boolean));
|
|
70
|
-
}
|
|
71
|
-
else if (command === "projects" && subcommand === "list") {
|
|
72
|
-
await listProjects(rest);
|
|
73
|
-
}
|
|
74
|
-
else if (command === "projects:create" || (command === "projects" && subcommand === "create")) {
|
|
75
|
-
await createProject(command === "projects" ? rest : [subcommand, ...rest].filter(Boolean));
|
|
76
|
-
}
|
|
77
|
-
else if (command === "projects:get" || (command === "projects" && subcommand === "get")) {
|
|
78
|
-
await getProject(command === "projects" ? rest : [subcommand, ...rest].filter(Boolean));
|
|
79
|
-
}
|
|
80
|
-
else if (command === "use") {
|
|
81
|
-
await useProject([subcommand, ...rest].filter(Boolean));
|
|
82
|
-
}
|
|
83
|
-
else if (command === "deselect") {
|
|
84
|
-
await deselectProject([subcommand, ...rest].filter(Boolean));
|
|
85
|
-
}
|
|
86
|
-
else if (command === "new" && subcommand === "web") {
|
|
87
|
-
await newWeb(rest);
|
|
88
|
-
}
|
|
89
|
-
else if (command === "data:schema:list") {
|
|
90
|
-
await dataSchemaList([subcommand, ...rest].filter(Boolean));
|
|
91
|
-
}
|
|
92
|
-
else if (command === "data:schema:pull") {
|
|
93
|
-
await dataSchemaPull([subcommand, ...rest].filter(Boolean));
|
|
94
|
-
}
|
|
95
|
-
else if (command === "data:schema:push") {
|
|
96
|
-
await dataSchemaPush([subcommand, ...rest].filter(Boolean));
|
|
97
|
-
}
|
|
98
|
-
else if (command === "data:rules:pull") {
|
|
99
|
-
await dataRulesPull([subcommand, ...rest].filter(Boolean));
|
|
100
|
-
}
|
|
101
|
-
else if (command === "data:rules:deploy") {
|
|
102
|
-
await dataRulesDeploy([subcommand, ...rest].filter(Boolean));
|
|
103
|
-
}
|
|
104
|
-
else if (command === "data:reload") {
|
|
105
|
-
await dataReload([subcommand, ...rest].filter(Boolean));
|
|
106
|
-
}
|
|
107
|
-
else if (command === "data:validate") {
|
|
108
|
-
await dataValidate([subcommand, ...rest].filter(Boolean));
|
|
109
|
-
}
|
|
110
|
-
else if (command === "localization:validate") {
|
|
111
|
-
await localizationValidate([subcommand, ...rest].filter(Boolean));
|
|
112
|
-
}
|
|
113
|
-
else if (command === "localization:push") {
|
|
114
|
-
await localizationPush([subcommand, ...rest].filter(Boolean));
|
|
115
|
-
}
|
|
116
|
-
else if (command === "localization:pull") {
|
|
117
|
-
await localizationPull([subcommand, ...rest].filter(Boolean));
|
|
118
|
-
}
|
|
119
|
-
else if (command === "release:deploy") {
|
|
120
|
-
await releaseDeploy([subcommand, ...rest].filter(Boolean));
|
|
121
|
-
}
|
|
122
|
-
else if (command === "release:status") {
|
|
123
|
-
await releaseStatus([subcommand, ...rest].filter(Boolean));
|
|
124
|
-
}
|
|
125
|
-
else if (command === "release:builds:list") {
|
|
126
|
-
await releaseBuildsList([subcommand, ...rest].filter(Boolean));
|
|
127
|
-
}
|
|
128
|
-
else if (command === "release:builds:get") {
|
|
129
|
-
await releaseBuildsGet([subcommand, ...rest].filter(Boolean));
|
|
130
|
-
}
|
|
131
419
|
else {
|
|
132
|
-
|
|
420
|
+
const resolved = resolveCommand(argv);
|
|
421
|
+
if (!resolved) {
|
|
422
|
+
throw new Error(`Unknown command: ${[command, subcommand].filter(Boolean).join(" ")}`);
|
|
423
|
+
}
|
|
424
|
+
await resolved.handler(resolved.args);
|
|
133
425
|
}
|
|
134
426
|
}
|
|
135
427
|
catch (error) {
|
|
@@ -154,25 +446,36 @@ function toCliError(error) {
|
|
|
154
446
|
return { code: error.code, message: error.message, nextStep: error.nextStep };
|
|
155
447
|
}
|
|
156
448
|
const message = error instanceof Error ? error.message : String(error);
|
|
157
|
-
if (message.includes("is not logged in") || message.includes("Run 'blocks
|
|
158
|
-
return {
|
|
449
|
+
if (message.includes("is not logged in") || message.includes("Run 'blocks login' first")) {
|
|
450
|
+
return {
|
|
451
|
+
code: "not_logged_in",
|
|
452
|
+
message,
|
|
453
|
+
nextStep: "blocks login, then blocks projects list, then blocks use <tenantId>"
|
|
454
|
+
};
|
|
159
455
|
}
|
|
160
456
|
if (message.includes("token expired") || message.includes("refresh token") || message.includes("cannot decrypt")) {
|
|
161
|
-
return { code: "auth_repair_required", message, nextStep: "blocks
|
|
457
|
+
return { code: "auth_repair_required", message, nextStep: "blocks login" };
|
|
162
458
|
}
|
|
163
459
|
if (message.includes("No project selected")) {
|
|
164
|
-
return {
|
|
460
|
+
return {
|
|
461
|
+
code: "project_not_selected",
|
|
462
|
+
message,
|
|
463
|
+
nextStep: "blocks projects list, then blocks use <tenantId>"
|
|
464
|
+
};
|
|
165
465
|
}
|
|
166
466
|
if (message.startsWith("Blocks API 401") || message.startsWith("Blocks API 403")) {
|
|
167
|
-
return { code: "api_auth_failed", message, nextStep: "blocks
|
|
467
|
+
return { code: "api_auth_failed", message, nextStep: "blocks auth status && blocks login" };
|
|
168
468
|
}
|
|
169
469
|
return { code: "command_failed", message };
|
|
170
470
|
}
|
|
171
471
|
function printHelp() {
|
|
172
|
-
console.log(`Blocks
|
|
472
|
+
console.log(`Blocks CLI
|
|
173
473
|
|
|
174
474
|
Usage:
|
|
175
|
-
blocks
|
|
475
|
+
blocks <command> [options]
|
|
476
|
+
|
|
477
|
+
Namespaced commands use spaces, e.g. 'blocks data schema list'.
|
|
478
|
+
':' also works if you prefer it: 'blocks data:schema:list'.
|
|
176
479
|
|
|
177
480
|
Global options:
|
|
178
481
|
--version Print CLI version.
|
|
@@ -184,132 +487,634 @@ Global options:
|
|
|
184
487
|
--yes Skip mutation confirmation after explicit approval.
|
|
185
488
|
|
|
186
489
|
Setup and health:
|
|
187
|
-
blocks
|
|
490
|
+
blocks init
|
|
188
491
|
Create local Blocks workspace files: blocks.json, data schema/rules folders,
|
|
189
|
-
|
|
492
|
+
and .env.example.
|
|
190
493
|
|
|
191
|
-
blocks
|
|
494
|
+
blocks doctor [--json]
|
|
192
495
|
Check local Node.js, OIDC config, token cache, selected project, and config
|
|
193
496
|
file locations. Does not mutate cloud resources.
|
|
194
497
|
|
|
195
498
|
Auth:
|
|
196
|
-
blocks
|
|
499
|
+
blocks login
|
|
197
500
|
Device-code login. Prints a verification URL and user code, opens the
|
|
198
501
|
browser to the verification page when possible so you only need to click
|
|
199
502
|
approve, then polls until the device is authorized; stores account access
|
|
200
|
-
and refresh tokens and auto-refreshes later.
|
|
503
|
+
and refresh tokens and auto-refreshes later. If a project was previously
|
|
504
|
+
selected, re-impersonates it automatically; otherwise lists projects and
|
|
505
|
+
prompts you to run 'blocks use <tenantId>'.
|
|
201
506
|
|
|
202
|
-
blocks
|
|
507
|
+
blocks auth status [--json]
|
|
203
508
|
Show only whether account/project access and refresh tokens are missing,
|
|
204
509
|
valid, expired, or available. Does not print account config values.
|
|
205
510
|
|
|
206
|
-
blocks
|
|
511
|
+
blocks auth refresh [--project] [--json]
|
|
207
512
|
Force account token refresh, or project token refresh with --project.
|
|
208
513
|
|
|
209
|
-
blocks
|
|
514
|
+
blocks auth remove <account>
|
|
210
515
|
Clear cached tokens and stored local credentials for that account. The
|
|
211
516
|
packaged default OS account is restored from package defaults.
|
|
212
517
|
|
|
213
|
-
blocks
|
|
518
|
+
blocks logout
|
|
214
519
|
Revoke the current refresh token when possible and remove local session data.
|
|
215
520
|
|
|
216
521
|
Projects:
|
|
217
|
-
blocks
|
|
218
|
-
List accessible Blocks projects via /os/v4/Project/Gets
|
|
219
|
-
|
|
522
|
+
blocks projects list [--json]
|
|
523
|
+
List accessible Blocks projects via /os/v4/Project/Gets. Uses the
|
|
524
|
+
impersonated project session when a project is selected, otherwise the
|
|
525
|
+
account token. Read-only.
|
|
220
526
|
|
|
221
|
-
blocks
|
|
527
|
+
blocks projects get [tenantId] [--deployment] [--json]
|
|
222
528
|
Read one project from Project/Gets. Uses selected project when tenantId is
|
|
223
|
-
omitted.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
Create a Blocks project/environment via /os/v4/Project/Create using the
|
|
227
|
-
account token. Mutating; supports dry-run and confirmation.
|
|
529
|
+
omitted. Pass --deployment to also include the environment, tenantGroupId,
|
|
530
|
+
and linked repo assets (from Project/GetAsset) that 'release deploy' uses
|
|
531
|
+
to resolve its target. Read-only.
|
|
228
532
|
|
|
229
|
-
blocks
|
|
230
|
-
Save the selected project tenant globally and in blocks.json when present
|
|
231
|
-
|
|
533
|
+
blocks use <project-tenant-id>
|
|
534
|
+
Save the selected project tenant globally and in blocks.json when present,
|
|
535
|
+
then immediately impersonate it. If a different project was selected,
|
|
536
|
+
stops that impersonation first to reclaim a fresh account refresh token
|
|
537
|
+
before starting the new one.
|
|
232
538
|
|
|
233
|
-
blocks
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
539
|
+
blocks deselect
|
|
540
|
+
Stop the active impersonation (restoring a fresh account refresh token),
|
|
541
|
+
then clear the selected project tenant (globally and in blocks.json) and
|
|
542
|
+
drop its cached impersonation token. Run 'blocks use <tenantId>' again to
|
|
543
|
+
reselect and re-impersonate.
|
|
238
544
|
|
|
239
545
|
IAM:
|
|
240
|
-
blocks
|
|
241
|
-
Read the current user from IAM
|
|
242
|
-
|
|
546
|
+
blocks iam me [--json]
|
|
547
|
+
Read the current user from IAM (bootstrapping/CLI operator identity, not
|
|
548
|
+
a project resource). Uses the impersonated project session when a project
|
|
549
|
+
is selected, otherwise the account token -- the server always resolves
|
|
550
|
+
this to the root identity either way. Every other iam * command below is
|
|
551
|
+
project-scoped: it requires a selected project and calls IAM using an
|
|
552
|
+
impersonated project token only, never the account token.
|
|
553
|
+
|
|
554
|
+
Users (/iam/v4/iam/users*):
|
|
555
|
+
blocks iam users list [--page 1] [--page-size 20] [--email <e>] [--name <n>]
|
|
556
|
+
[--organization-id <id>] [--sort-by <field>] [--sort-desc]
|
|
557
|
+
[--filter '<json>'] [--json]
|
|
558
|
+
Query users. --filter merges a raw JSON filter object over the convenience flags.
|
|
559
|
+
blocks iam users get <id> [--organization-id <id>] [--json]
|
|
560
|
+
blocks iam users create --email <e>|--user-name <n> [--first-name] [--last-name]
|
|
561
|
+
[--password] [--phone-number] [--organization-id]
|
|
562
|
+
[--roles a,b] [--permissions a,b] [--body '<json>'|--file <path>]
|
|
563
|
+
[--dry-run] [--yes] [--json]
|
|
564
|
+
blocks iam users update <id> [--first-name] [--last-name] [--phone-number]
|
|
565
|
+
[--organization-id] [--roles a,b] [--permissions a,b]
|
|
566
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
567
|
+
blocks iam users activate <userId> [--reason <text>] [--dry-run] [--yes] [--json]
|
|
568
|
+
blocks iam users deactivate <userId> [--dry-run] [--yes] [--json]
|
|
569
|
+
blocks iam users access grant <userId> [--roles a,b] [--permissions a,b]
|
|
570
|
+
[--organization-id] [--dry-run] [--yes] [--json]
|
|
571
|
+
blocks iam users access revoke <userId> [--organization-id] [--dry-run] [--yes] [--json]
|
|
572
|
+
blocks iam users exists <email> [--json]
|
|
573
|
+
blocks iam email available <email> [--json]
|
|
574
|
+
|
|
575
|
+
Roles (/iam/v4/iam/roles*):
|
|
576
|
+
blocks iam roles list [--page] [--page-size] [--search] [--slugs a,b]
|
|
577
|
+
[--organization-id] [--filter '<json>'] [--json]
|
|
578
|
+
blocks iam roles get <id> [--json]
|
|
579
|
+
blocks iam roles create --name <n> [--slug] [--description] [--parent-role-slug]
|
|
580
|
+
[--can-create-own] [--body '<json>'|--file <path>]
|
|
581
|
+
[--dry-run] [--yes] [--json]
|
|
582
|
+
blocks iam roles update <itemId> [--name] [--description] [--parent-role-slug]
|
|
583
|
+
[--propagate-to-other-org] [--can-create-own]
|
|
584
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
585
|
+
blocks iam roles assign-permissions <slug> [--add-permissions a,b]
|
|
586
|
+
[--remove-permissions a,b] [--organization-id]
|
|
587
|
+
[--dry-run] [--yes] [--json]
|
|
588
|
+
blocks iam roles assignable [--json]
|
|
589
|
+
|
|
590
|
+
Permissions (/iam/v4/iam/permissions*):
|
|
591
|
+
blocks iam permissions list [--page] [--page-size] [--search] [--type <0-3>]
|
|
592
|
+
[--severity <0-4>] [--resource-group] [--tags a,b]
|
|
593
|
+
[--resources a,b] [--is-built-in] [--is-archived]
|
|
594
|
+
[--roles a,b] [--organization-id] [--filter '<json>'] [--json]
|
|
595
|
+
blocks iam permissions get <id> [--json]
|
|
596
|
+
blocks iam permissions create --name <n> [--type] [--description] [--resource]
|
|
597
|
+
[--resource-group] [--tags a,b] [--severity] [--is-built-in]
|
|
598
|
+
[--dependent-permissions a,b] [--body '<json>'|--file <path>]
|
|
599
|
+
[--dry-run] [--yes] [--json]
|
|
600
|
+
blocks iam permissions update <id> [same flags as create, plus --is-archived]
|
|
601
|
+
[--dry-run] [--yes] [--json]
|
|
602
|
+
blocks iam permissions by-severity [--json]
|
|
603
|
+
|
|
604
|
+
Resources (/iam/v4/iam/resource*):
|
|
605
|
+
blocks iam resources groups [--json]
|
|
606
|
+
blocks iam resources features [--search <text>] [--is-built-in] [--json]
|
|
607
|
+
|
|
608
|
+
Organizations (/iam/v4/iam/organizations*):
|
|
609
|
+
blocks iam organizations list [--page] [--page-size] [--search] [--ids a,b]
|
|
610
|
+
[--is-disabled] [--parent-organization-id] [--json]
|
|
611
|
+
blocks iam organizations get <id> [--json]
|
|
612
|
+
blocks iam organizations create --name <n> [--description] [--email] [--phone-number]
|
|
613
|
+
[--website-url] [--default-roles a,b] [--default-permissions a,b]
|
|
614
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
615
|
+
blocks iam organizations update <id> [--name] [--description] [--email]
|
|
616
|
+
[--phone-number] [--website-url] [--industry] [--time-zone]
|
|
617
|
+
[--currency] [--locale] [--is-enabled]
|
|
618
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
619
|
+
blocks iam organizations my [--json]
|
|
620
|
+
blocks iam organizations config get [--json]
|
|
621
|
+
blocks iam organizations config save [--allow-org-creation-from-cloud]
|
|
622
|
+
[--allow-org-creation-from-construct] [--allow-org-creation-from-signup]
|
|
623
|
+
[--allow-org-creation-from-portal] [--multi-org-enabled]
|
|
624
|
+
[--consent-for-multi-org-enable] [--body '<json>'|--file <path>]
|
|
625
|
+
[--dry-run] [--yes] [--json]
|
|
626
|
+
|
|
627
|
+
Signup settings (/iam/v4/iam/signup-settings):
|
|
628
|
+
blocks iam signup-settings get [--json]
|
|
629
|
+
blocks iam signup-settings save [--email-password-signup] [--sso-signup]
|
|
630
|
+
[--default-roles a,b] [--default-permissions a,b]
|
|
631
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
632
|
+
|
|
633
|
+
MFA (/iam/v4/mfa*, project-scoped: requires a selected project, impersonated project token only):
|
|
634
|
+
blocks mfa config get [--json]
|
|
635
|
+
Read the tenant's MFA policy.
|
|
636
|
+
blocks mfa config save [--enable] [--require-for-all-users] [--allow-user-opt-out]
|
|
637
|
+
[--allow-backup-codes] [--backup-codes-count <n>]
|
|
638
|
+
[--user-mfa-type 0,1] [--required-roles a,b] [--exempt-roles a,b]
|
|
639
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
640
|
+
Save the tenant's MFA policy.
|
|
641
|
+
blocks mfa totp setup [--json]
|
|
642
|
+
Start TOTP enrollment for the impersonated user.
|
|
643
|
+
blocks mfa totp verify-setup <code> [--json]
|
|
644
|
+
Confirm TOTP enrollment.
|
|
645
|
+
blocks mfa totp enable --mfa-type <n> [--code <c>] [--dry-run] [--yes] [--json]
|
|
646
|
+
Composed enrollment: totp setup -> (scan the printed QR/secret, enter the code --
|
|
647
|
+
interactively prompted if --code is omitted) -> totp verify-setup -> method set
|
|
648
|
+
--mfa-type <n> -> backup-codes generate. One sitting, one confirmation.
|
|
649
|
+
--mfa-type is required and not defaulted: the numeric value meaning "TOTP" is
|
|
650
|
+
tenant-defined and undocumented here (same value plain mfa method set expects) --
|
|
651
|
+
look it up rather than guessing.
|
|
652
|
+
blocks mfa generate --mfa-type <n> [--send-phone-number-as-email-domain <domain>] [--json]
|
|
653
|
+
Send an OTP challenge; returns an mfaId to pass to resend/verify.
|
|
654
|
+
blocks mfa resend <mfaId> [--send-phone-number-as-email-domain <domain>] [--json]
|
|
655
|
+
blocks mfa verify <mfaId> <code> --auth-type <n> [--from-token-call] [--json]
|
|
656
|
+
blocks mfa method set --mfa-type <n> [--json]
|
|
657
|
+
Switch the impersonated user's active MFA method.
|
|
658
|
+
blocks mfa disable [--dry-run] [--yes] [--json]
|
|
659
|
+
blocks mfa backup-codes list [--json]
|
|
660
|
+
blocks mfa backup-codes generate [--dry-run] [--yes] [--json]
|
|
661
|
+
blocks mfa backup-codes use <userId> <code> [--json]
|
|
662
|
+
|
|
663
|
+
Mail (/os/v4/Mail/* — project-scoped: requires a selected project, impersonated project token only):
|
|
664
|
+
blocks mail config list [--json]
|
|
665
|
+
List SMTP/inbound mail configurations for the selected project.
|
|
666
|
+
blocks mail config get <name> [--json]
|
|
667
|
+
blocks mail config save [--configuration-id <id>] [--name <n>] [--host <h>] [--port <n>]
|
|
668
|
+
[--enable-ssl] [--sender-name] [--sender-address] [--sender-username]
|
|
669
|
+
[--account-password] [--inbound] [--provider <0|1>]
|
|
670
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
671
|
+
Upsert: omit --configuration-id to create; pass it to update.
|
|
672
|
+
blocks mail config delete <configurationId> [--dry-run] [--yes] [--json]
|
|
673
|
+
blocks mail config duplicate <configurationId> [--dry-run] [--yes] [--json]
|
|
674
|
+
blocks mail template list [--page-number] [--page-size] [--search] [--sort-by] [--sort-desc]
|
|
675
|
+
[--configuration-id] [--language] [--json]
|
|
676
|
+
blocks mail template get <itemId> [--json]
|
|
677
|
+
blocks mail template save [--item-id <id>] [--configuration-id] [--name] [--language]
|
|
678
|
+
[--subject] [--template-body] [--json-content] [--image-id]
|
|
679
|
+
[--image-url] [--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
680
|
+
Upsert: omit --item-id to create; pass it to update.
|
|
681
|
+
blocks mail template delete <itemId> [--dry-run] [--yes] [--json]
|
|
682
|
+
blocks mail template clone <itemId> [--configuration-id] [--language] [--name] [--subject]
|
|
683
|
+
[--dry-run] [--yes] [--json]
|
|
684
|
+
blocks mail mailbox list [--page-number] [--page-size] [--status] [--search]
|
|
685
|
+
[--start-date] [--end-date] [--inbound] [--json]
|
|
686
|
+
blocks mail mailbox get <messageId> [--json]
|
|
687
|
+
blocks mail send [--to a,b] [--cc a,b] [--bcc a,b] [--reply-to a,b] [--purpose <p>]
|
|
688
|
+
[--language <culture>] [--subject-data-context '<json>']
|
|
689
|
+
[--body-data-context '<json>'] [--attachments '<json>']
|
|
690
|
+
[--send-phone-number-as-email] [--project-key <key>]
|
|
691
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
692
|
+
Send an email through the tenant's default mail configuration
|
|
693
|
+
(/logic/v4/Mail/Send). --project-key defaults to the selected project.
|
|
694
|
+
blocks mail sendtoany [same flags as mail send, plus --is-test-mail]
|
|
695
|
+
[--dry-run] [--yes] [--json]
|
|
696
|
+
Same as mail send but via /logic/v4/Mail/SendToAny, which lets the mail
|
|
697
|
+
provider route the send (e.g. mark it --is-test-mail).
|
|
698
|
+
|
|
699
|
+
Notification (/os/v4/Notification/* — project-scoped: requires a selected project, impersonated project token only):
|
|
700
|
+
blocks notification list [--page] [--page-size] [--sort-by] [--sort-desc] [--filter] [--json]
|
|
701
|
+
blocks notification get <itemId> [--json]
|
|
702
|
+
blocks notification save [--name <n>] [--channel <0|1>] [--type <0-3>] [--enable-persistence]
|
|
703
|
+
[--notify-method] [--update] [--body '<json>'|--file <path>]
|
|
704
|
+
[--dry-run] [--yes] [--json]
|
|
705
|
+
Pass --update when saving over an existing notification configuration.
|
|
706
|
+
blocks notification delete <itemId> [--dry-run] [--yes] [--json]
|
|
707
|
+
|
|
708
|
+
Notifier (/logic/v4/Notifier/* — real-time/offline notification sends and inbox reads;
|
|
709
|
+
project-scoped: requires a selected project, impersonated project token only.
|
|
710
|
+
Distinct from 'notification' above, which manages notification channel
|
|
711
|
+
configuration, not sending):
|
|
712
|
+
blocks notifier notify [--user-ids a,b] [--roles a,b] [--connection-id <id>]
|
|
713
|
+
[--subscription-filters '<json>'] [--denormalized-payload <text>]
|
|
714
|
+
[--save-denormalized-payload-as-object] [--response-key]
|
|
715
|
+
[--response-value] [--content-available] [--configuration-name]
|
|
716
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
717
|
+
Push a notification to specific users/roles, or everyone matching a subscription
|
|
718
|
+
filter. Target with at least one of --user-ids/--roles/--subscription-filters.
|
|
719
|
+
blocks notifier list [--unread-only] [--page] [--page-size] [--sort-by] [--sort-desc]
|
|
720
|
+
[--filter] [--json]
|
|
721
|
+
List the signed-in user's notifications (GetNotifications). Read-only.
|
|
722
|
+
blocks notifier unread [--user-id <id>] [--context <c>] [--action-name <a>] [--value <v>]
|
|
723
|
+
[--order-by <1|2>] [--json]
|
|
724
|
+
Read unread notifications matching a subscription filter. Sent as query
|
|
725
|
+
parameters even though swagger documents this endpoint as GET with a JSON
|
|
726
|
+
body -- the Fetch spec forbids a body on GET. Read-only.
|
|
727
|
+
blocks notifier mark-read <id> [--dry-run] [--yes] [--json]
|
|
728
|
+
blocks notifier mark-all-read [--dry-run] [--yes] [--json]
|
|
729
|
+
|
|
730
|
+
Secrets (/os/v4/Secrets/* — project-scoped: requires a selected project, impersonated project
|
|
731
|
+
token only; generic tenant secret storage, e.g. captcha provider config):
|
|
732
|
+
blocks secrets get <secretKey> [--page-number 0] [--page-size 10] [--json]
|
|
733
|
+
blocks secrets save --secret-key <key> [--item-id <id>] --key-value-pairs '<json>'
|
|
734
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
735
|
+
Upsert: omit --item-id to create, pass it to update. --key-value-pairs is a flat
|
|
736
|
+
JSON object of provider-specific fields, e.g.
|
|
737
|
+
--key-value-pairs '{"isEnable":"true","provider":"recaptcha","captchaKey":"...","captchaSecret":"..."}'.
|
|
738
|
+
|
|
739
|
+
Storage (/os/v4/Storage/* — project-scoped: requires a selected project, impersonated project token only):
|
|
740
|
+
blocks storage config list [--json]
|
|
741
|
+
blocks storage config get <name> [--json]
|
|
742
|
+
blocks storage config save [--item-id <id>] [--name <n>] [--strategy] [--connection-string]
|
|
743
|
+
[--secret-key] [--access-key] [--region-endpoint] [--host] [--port]
|
|
744
|
+
[--username] [--password] [--remote-base-path] [--update]
|
|
745
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
746
|
+
Upsert: omit --item-id to create; pass --update to update.
|
|
747
|
+
blocks storage config delete <name> [--dry-run] [--yes] [--json]
|
|
748
|
+
|
|
749
|
+
Auth Admin (/iam/v4/auth/identity-providers*, /config, /client-credentials, /oidc-clients —
|
|
750
|
+
project-scoped: requires a selected project, impersonated project token only):
|
|
751
|
+
blocks auth idp list [--json]
|
|
752
|
+
blocks auth idp get <id> [--json]
|
|
753
|
+
blocks auth idp create --provider <p> --provider-type <t> --protocol <proto>
|
|
754
|
+
--client-id <id> [--client-secret] [--display-name] [--issuer]
|
|
755
|
+
[--scope] [--redirect-uris a,b] [--active]
|
|
756
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
757
|
+
Rich provider configs (JWKS, private keys, initial roles, etc.) go in --body/--file;
|
|
758
|
+
the flags above cover the common OAuth/OIDC fields.
|
|
759
|
+
blocks auth idp update <id> [same flags as create, all optional] [--dry-run] [--yes] [--json]
|
|
760
|
+
provider/providerType/protocol/clientId are immutable: omit them, or echo the
|
|
761
|
+
existing values exactly if you also pass --body/--file.
|
|
762
|
+
blocks auth idp delete <id> [--dry-run] [--yes] [--json]
|
|
763
|
+
Irreversible; also deletes the related OIDC client registration.
|
|
764
|
+
blocks auth idp status <id> --active|--active=false [--dry-run] [--yes] [--json]
|
|
765
|
+
Enable/disable a provider without deleting its configuration.
|
|
766
|
+
blocks auth config get [--json]
|
|
767
|
+
blocks auth config save [--refresh-token-minutes] [--absolute-refresh-token-minutes]
|
|
768
|
+
[--access-token-minutes] [--remember-me-refresh-token-minutes]
|
|
769
|
+
[--wrong-attempts-to-lock] [--account-lock-duration-minutes]
|
|
770
|
+
[--oidc-enabled] [--logout-on-password-change]
|
|
771
|
+
[--password-strength-regex] [--body '<json>'|--file <path>]
|
|
772
|
+
[--dry-run] [--yes] [--json]
|
|
773
|
+
blocks auth client-credentials list [--json]
|
|
774
|
+
clientSecret is included in list responses; treat CLI output as sensitive.
|
|
775
|
+
blocks auth client-credentials save --name <n> [--item-id <id>] [--roles a,b]
|
|
776
|
+
[--permissions a,b] [--access-token-valid-minutes] [--active]
|
|
777
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
778
|
+
Omit --item-id to create; pass it to update. The response's clientSecret is
|
|
779
|
+
shown once and is not retrievable again afterward.
|
|
780
|
+
blocks auth client-credentials delete <id> [--dry-run] [--yes] [--json]
|
|
781
|
+
|
|
782
|
+
blocks auth oidc-clients list [--json]
|
|
783
|
+
List registered OAuth 2.0 / OIDC client applications for the tenant. client_secret
|
|
784
|
+
is excluded from list/get responses.
|
|
785
|
+
blocks auth oidc-clients get <clientId> [--json]
|
|
786
|
+
blocks auth oidc-clients save [--item-id <id>] [--client-display-name] [--client-type]
|
|
787
|
+
[--redirect-uris a,b] [--post-logout-redirect-uris a,b]
|
|
788
|
+
[--scope] [--allowed-scopes a,b] [--allowed-response-types a,b]
|
|
789
|
+
[--require-pkce] [--require-consent] [--require-mfa]
|
|
790
|
+
[--allowed-mfa-methods 0,1] [--front-channel-logout-uri]
|
|
791
|
+
[--back-channel-logout-uri] [--auto-redirect]
|
|
792
|
+
[--external-discovery-endpoint] [--active] [--login-mode]
|
|
793
|
+
[--client-logo-url] [--client-brand-color] [--use-tokens-cookie]
|
|
794
|
+
[--register-as-identity-provider] [--device-flow-client]
|
|
795
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
796
|
+
Upsert: omit --item-id to register a new client, pass it to update an existing one.
|
|
797
|
+
The response's client_secret is shown once and is not retrievable again afterward.
|
|
798
|
+
blocks auth oidc-clients delete <clientId> [--dry-run] [--yes] [--json]
|
|
799
|
+
Irreversible; revokes all tokens issued to the client.
|
|
800
|
+
blocks auth oidc-clients rotate-secret <clientId> [--dry-run] [--yes] [--json]
|
|
801
|
+
Generates a new client_secret, shown once; the old secret stops working immediately.
|
|
243
802
|
|
|
244
803
|
Data:
|
|
245
|
-
blocks
|
|
804
|
+
blocks data validate [--json]
|
|
246
805
|
Validate local blocks/data/schemas/*.json and blocks/data/rules.json before
|
|
247
806
|
pushing. Local-only.
|
|
248
807
|
|
|
249
|
-
blocks
|
|
808
|
+
blocks data schema list [--json]
|
|
250
809
|
List project schemas via /data/v4/schemas using an impersonated project
|
|
251
810
|
token. Read-only.
|
|
252
811
|
|
|
253
|
-
blocks
|
|
812
|
+
blocks data schema pull [--json]
|
|
254
813
|
Download project schemas into blocks/data/schemas/*.json. Writes local files
|
|
255
814
|
only.
|
|
256
815
|
|
|
257
|
-
blocks
|
|
816
|
+
blocks data schema push [--dry-run] [--yes] [--json]
|
|
258
817
|
Create or update project schemas via /data/v4/schemas/define. Mutating;
|
|
259
818
|
uses POST for create and PUT for update.
|
|
260
819
|
|
|
261
|
-
blocks
|
|
820
|
+
blocks data rules pull [--json]
|
|
262
821
|
Download data-access policies into blocks/data/rules.json. Writes local
|
|
263
822
|
files only.
|
|
264
823
|
|
|
265
|
-
blocks
|
|
824
|
+
blocks data rules deploy [--dry-run] [--yes] [--json]
|
|
266
825
|
Apply schema security and data-access policies. Mutating; supports dry-run
|
|
267
826
|
and confirmation.
|
|
268
827
|
|
|
269
|
-
blocks
|
|
828
|
+
blocks data reload [--dry-run] [--yes] [--json]
|
|
270
829
|
Reload Data schema configuration so staged schema/rule changes become live.
|
|
271
830
|
Mutating; calls POST /data/v4/schema-configurations/reload.
|
|
272
831
|
|
|
832
|
+
blocks data sync [--dry-run] [--yes] [--json]
|
|
833
|
+
Composed flow: validate local schemas/rules, then data schema push ->
|
|
834
|
+
data rules deploy -> data reload, so pushed changes actually go live in one
|
|
835
|
+
step. Validation runs first and hard-fails before anything is sent if it
|
|
836
|
+
finds errors. Prints 3 separate step outputs (one per underlying command),
|
|
837
|
+
not one combined document. One confirmation covers the whole flow.
|
|
838
|
+
|
|
839
|
+
Data source configuration (/data/v4/configurations) - check this first; by default a
|
|
840
|
+
project's Data Gateway runs on Blocks-managed storage and data config get is all you need.
|
|
841
|
+
Only create/update a configuration if you're pointing the gateway at your own database.
|
|
842
|
+
blocks data config get [--json]
|
|
843
|
+
blocks data config create --connection-string <cs> [--database-name <name>]
|
|
844
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
845
|
+
blocks data config update --item-id <id> [--connection-string] [--database-name]
|
|
846
|
+
[--collection-name-editable] [--collection-name-pattern]
|
|
847
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
848
|
+
|
|
849
|
+
Raw Schema API (/data/v4/schemas* - beyond the file-oriented list/pull/push above):
|
|
850
|
+
blocks data schema get <id> [--json]
|
|
851
|
+
blocks data schema get-by-name <schemaName> [--json]
|
|
852
|
+
Full field-level detail by collection name (info-by-name).
|
|
853
|
+
blocks data schema aggregation [--keyword] [--schema-name] [--collection-name]
|
|
854
|
+
[--schema-type <1|2>] [--page] [--page-size] [--sort-by]
|
|
855
|
+
[--sort-desc] [--json]
|
|
856
|
+
Schemas plus an access-level summary (Public/User/Custom x Read/Write/Edit/Delete).
|
|
857
|
+
blocks data schema change-logs [--json]
|
|
858
|
+
Unadapted schema change logs; data reload clears these.
|
|
859
|
+
blocks data schema delete <id> [--dry-run] [--yes] [--json]
|
|
860
|
+
Irreversible.
|
|
861
|
+
blocks data schema info list [--json]
|
|
862
|
+
Entity-type schema collections with basic info.
|
|
863
|
+
blocks data schema info save --schema-name <n> [--collection-name] [--schema-type <1|2>]
|
|
864
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
865
|
+
Create schema metadata only (no fields yet) - pair with data schema fields.
|
|
866
|
+
blocks data schema info update --item-id <id> [--schema-name] [--collection-name]
|
|
867
|
+
[--schema-type <1|2>] [--body '<json>'|--file <path>]
|
|
868
|
+
[--dry-run] [--yes] [--json]
|
|
869
|
+
blocks data schema fields --schema-id <schemaDefinitionItemId> [--deletable-fields a,b]
|
|
870
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
871
|
+
Add/update field definitions; the 'fields' array (name/type/isArray/isPIIData/
|
|
872
|
+
isUniqueData/description) goes in --body/--file, e.g.
|
|
873
|
+
--body '{"fields":[{"name":"email","type":"string"}]}'.
|
|
874
|
+
|
|
875
|
+
Data-access policies, single-item ops (beyond the file-oriented rules pull/deploy above):
|
|
876
|
+
blocks data rules policy get <schemaName> [--json]
|
|
877
|
+
blocks data rules policy delete <itemId> [--dry-run] [--yes] [--json]
|
|
878
|
+
|
|
879
|
+
Data validation (/data/v4/data-validations* - field-level validation rules; no file-oriented
|
|
880
|
+
workflow exists for this yet, use these directly):
|
|
881
|
+
blocks data validation list [--schema-id] [--field-name] [--keyword] [--page]
|
|
882
|
+
[--page-size] [--sort-by] [--sort-desc] [--json]
|
|
883
|
+
blocks data validation get <validationId> [--json]
|
|
884
|
+
blocks data validation by-schema <schemaId> [--json]
|
|
885
|
+
blocks data validation by-schema-field <schemaId> <fieldName> [--json]
|
|
886
|
+
blocks data validation save --schema-id <id> --field-name <name> [--item-id]
|
|
887
|
+
--body '<json>' (must include a "validations" array, e.g.
|
|
888
|
+
'{"validations":[{"type":1,"value":"^[0-9]+$","isActive":true}]}')
|
|
889
|
+
[--dry-run] [--yes] [--json]
|
|
890
|
+
Upsert: omit --item-id to create, pass it to update.
|
|
891
|
+
blocks data validation delete <validationId> [--dry-run] [--yes] [--json]
|
|
892
|
+
|
|
893
|
+
Files / DMS (/data/v4/Files/* - storage and document management; no SDK required, but see
|
|
894
|
+
the blocks-data-storage skill if writing this into app code instead of scripting it):
|
|
895
|
+
blocks data files get <fileId> [--version] [--configuration-name] [--json]
|
|
896
|
+
blocks data files get-many <fileId...>|--file-ids a,b [--configuration-name] [--json]
|
|
897
|
+
blocks data files info [--name] [--tenant-id] [--page] [--page-size] [--sort-by]
|
|
898
|
+
[--sort-desc] [--json]
|
|
899
|
+
blocks data files upload --file <localPath> [--name] [--parent-id] [--tags]
|
|
900
|
+
[--access-modifier Public|Private] [--content-type]
|
|
901
|
+
[--configuration-name] [--module-name <1-11>] [--local-storage]
|
|
902
|
+
[--dry-run] [--yes] [--json]
|
|
903
|
+
Composed flow: presigned-upload-url -> PUT the file -> dms-upload, threading the
|
|
904
|
+
returned uploadUrl/fileId automatically (content-type is inferred from the file
|
|
905
|
+
extension if omitted). Pass --local-storage to use the one-call
|
|
906
|
+
upload-to-local-storage path instead, for local-storage-backed projects.
|
|
907
|
+
blocks data files presigned-upload-url --name <fileName> [--parent-directory-id]
|
|
908
|
+
[--access-modifier Public|Private] [--configuration-name]
|
|
909
|
+
[--module-name <1-11>] [--meta-data] [--tags]
|
|
910
|
+
[--body '<json>'|--file <path>] [--json]
|
|
911
|
+
Cloud-storage upload, step 1 of 2. Returns an uploadUrl and fileId; PUT the bytes next
|
|
912
|
+
with data files upload-to-url.
|
|
913
|
+
blocks data files upload-to-url --url <presignedUrl> --file <localPath>
|
|
914
|
+
--content-type <type> [--blob-type BlockBlob] [--no-blob-type-header]
|
|
915
|
+
[--dry-run] [--yes] [--json]
|
|
916
|
+
Step 2. Provider-direct PUT - no Blocks auth headers by design.
|
|
917
|
+
blocks data files upload-to-local-storage --file <localPath> [--name] [--item-id]
|
|
918
|
+
[--parent-directory-id] [--tags] [--access-modifier Public|Private]
|
|
919
|
+
[--configuration-name] [--meta-data] [--additional-properties '<json>']
|
|
920
|
+
[--dry-run] [--yes] [--json]
|
|
921
|
+
One-call alternative to the two commands above, for local-storage-backed projects.
|
|
922
|
+
blocks data files update-additional-info <itemId> --additional-properties '<json>'
|
|
923
|
+
[--dry-run] [--yes] [--json]
|
|
924
|
+
blocks data files delete <fileId> [--configuration-name] [--event-queue-name]
|
|
925
|
+
[--dry-run] [--yes] [--json]
|
|
926
|
+
blocks data files dms-list [--parent-id] [--search] [--configuration-name] [--take]
|
|
927
|
+
[--skip] [--json]
|
|
928
|
+
Combined folder+file listing for a DMS parent ("" = root).
|
|
929
|
+
blocks data files dms-upload --file-storage-id <id> --artifact-name <name>
|
|
930
|
+
[--parent-id] [--tags a,b] [--body '<json>'|--file <path>]
|
|
931
|
+
[--dry-run] [--yes] [--json]
|
|
932
|
+
Registers an uploaded file (fileId from presigned-upload-url/upload-to-local-storage)
|
|
933
|
+
so it appears in a DMS folder. Upload alone does not make a file visible in a folder.
|
|
934
|
+
blocks data files create-folder <name> [--parent-id] [--description] [--tags a,b]
|
|
935
|
+
[--configuration-name] [--dry-run] [--yes] [--json]
|
|
936
|
+
blocks data files delete-folder <folderId> [--configuration-name]
|
|
937
|
+
[--dry-run] [--yes] [--json]
|
|
938
|
+
|
|
273
939
|
Localization:
|
|
274
|
-
blocks
|
|
940
|
+
blocks localization validate --module <name> --language <culture> [--file <path>] [--json]
|
|
275
941
|
Validate a local i18n JSON dictionary. Supports nested JSON input and
|
|
276
942
|
validates the flattened key/value set locally.
|
|
277
943
|
|
|
278
|
-
blocks
|
|
944
|
+
blocks localization push --module <name> --language <culture> [--file <path>] [--route <route>] [--context <text>] [--dry-run] [--yes] [--json]
|
|
279
945
|
Create or update Localization keys from a local i18n JSON dictionary via
|
|
280
946
|
/localization/v4/Key/SaveKeys. Creates the module first when it is missing.
|
|
281
947
|
|
|
282
|
-
blocks
|
|
948
|
+
blocks localization pull --module <name> --language <culture> [--out <path>] [--json]
|
|
283
949
|
Download published cloud localization via
|
|
284
950
|
/localization/v4/Key/GetCloudUilmFile and write a local JSON dictionary.
|
|
285
951
|
|
|
952
|
+
Raw API (/localization/v4/* — project-scoped: requires a selected project, impersonated
|
|
953
|
+
project token only). These call the Localization service endpoints directly,
|
|
954
|
+
in addition to the file-oriented validate/push/pull commands above.
|
|
955
|
+
|
|
956
|
+
blocks localization assistant translation-suggestion --source-text <text>
|
|
957
|
+
--destination-language <culture> [--current-language]
|
|
958
|
+
[--element-type] [--element-application-context]
|
|
959
|
+
[--element-detail-context] [--temperature] [--max-character-length]
|
|
960
|
+
[--glossary-ids a,b] [--module-id] [--destination-language-code]
|
|
961
|
+
[--body '<json>'|--file <path>] [--json]
|
|
962
|
+
|
|
963
|
+
blocks localization config get-webhook [--json]
|
|
964
|
+
blocks localization config save-webhook --url <url> --content-type <type>
|
|
965
|
+
--secret <s> --header-key <k> [--item-id <id>] [--is-disabled]
|
|
966
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
967
|
+
|
|
968
|
+
blocks localization glossary save --name <n> [--item-id] [--language] [--type]
|
|
969
|
+
[--context] [--additional-note] [--is-global] [--module-ids a,b]
|
|
970
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
971
|
+
blocks localization glossary list [--search] [--page-number] [--page-size]
|
|
972
|
+
[--is-global] [--module-id] [--json]
|
|
973
|
+
blocks localization glossary get <itemId> [--json]
|
|
974
|
+
blocks localization glossary suggested <itemId> [--max-results <n>] [--json]
|
|
975
|
+
blocks localization glossary delete <itemId> [--dry-run] [--yes] [--json]
|
|
976
|
+
|
|
977
|
+
blocks localization key save --key-name <n> --module-id <id> [--item-id] [--value]
|
|
978
|
+
[--culture] [--routes a,b] [--glossary-ids a,b] [--context]
|
|
979
|
+
[--is-new-key] [--is-partially-translated] [--should-publish]
|
|
980
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
981
|
+
blocks localization key list [--key-search-text] [--search-key] [--module-ids a,b]
|
|
982
|
+
[--page-number] [--page-size] [--sort-by] [--sort-desc]
|
|
983
|
+
[--is-partially-translated] [--missing-languages a,b]
|
|
984
|
+
[--create-date-start] [--create-date-end]
|
|
985
|
+
[--last-update-date-start] [--last-update-date-end]
|
|
986
|
+
[--glossary-id] [--body '<json>'|--file <path>] [--json]
|
|
987
|
+
blocks localization key get-by-names <keyName...>|--key-names a,b [--module-id] [--json]
|
|
988
|
+
blocks localization key get <itemId> [--json]
|
|
989
|
+
blocks localization key delete <itemId> [--dry-run] [--yes] [--json]
|
|
990
|
+
blocks localization key delete-keys <itemId...>|--item-ids a,b [--dry-run] [--yes] [--json]
|
|
991
|
+
blocks localization key get-timeline [--entity-id] [--user-id] [--page-number]
|
|
992
|
+
[--page-size] [--sort-by] [--sort-desc] [--create-date-start]
|
|
993
|
+
[--create-date-end] [--json]
|
|
994
|
+
blocks localization key get-localization-timeline [--user-id] [--log-from]
|
|
995
|
+
[--log-from-values a,b] [--exclude-log-from-values a,b]
|
|
996
|
+
[--page-number] [--page-size] [--sort-by] [--sort-desc]
|
|
997
|
+
[--create-date-start] [--create-date-end] [--json]
|
|
998
|
+
blocks localization key get-timeline-by-operation-id <operationId> [--page-number]
|
|
999
|
+
[--page-size] [--json]
|
|
1000
|
+
blocks localization key get-uilm-file --module <name> --language <culture> [--json]
|
|
1001
|
+
blocks localization key generate-uilm-file --module-id <id> [--guid]
|
|
1002
|
+
[--dry-run] [--yes] [--json]
|
|
1003
|
+
blocks localization key translate-all --module-id <id> [--default-language]
|
|
1004
|
+
[--message-co-relation-id] [--dry-run] [--yes] [--json]
|
|
1005
|
+
blocks localization key translate-key <keyId> --default-language <culture>
|
|
1006
|
+
[--message-co-relation-id] [--dry-run] [--yes] [--json]
|
|
1007
|
+
blocks localization key translate-keys <keyId...>|--key-ids a,b --default-language <culture>
|
|
1008
|
+
[--message-co-relation-id] [--project-key]
|
|
1009
|
+
[--dry-run] [--yes] [--json]
|
|
1010
|
+
blocks localization key translate-and-export --module-id <id> [--default-language]
|
|
1011
|
+
[--wait] [--poll-interval <seconds>] [--timeout <seconds>]
|
|
1012
|
+
[--guid] [--output-type <0-5>] [--app-ids a,b] [--languages a,b]
|
|
1013
|
+
[--reference-file-id] [--caller-tenant-id] [--start-date]
|
|
1014
|
+
[--end-date] [--dry-run] [--yes] [--json]
|
|
1015
|
+
Composed flow: translate-all -> generate-uilm-file -> uilm-export. Without --wait,
|
|
1016
|
+
fires all 3 back to back (same as running them by hand). With --wait, polls
|
|
1017
|
+
GetTimelineByOperationId (using a generated messageCoRelationId) between translate
|
|
1018
|
+
and generate, since translation runs async and there's no documented explicit
|
|
1019
|
+
"done" field to check -- it stops once the timeline entry count settles across 2
|
|
1020
|
+
polls, or times out with a clear next-step message. Prints one output block per
|
|
1021
|
+
step, not a single combined document.
|
|
1022
|
+
blocks localization key uilm-import <fileId> [--message-co-relation-id]
|
|
1023
|
+
[--dry-run] [--yes] [--json]
|
|
1024
|
+
blocks localization key uilm-export [--output-type <0-5>] [--app-ids a,b] [--languages a,b]
|
|
1025
|
+
[--reference-file-id] [--caller-tenant-id] [--start-date]
|
|
1026
|
+
[--end-date] [--message-co-relation-id] [--dry-run] [--yes] [--json]
|
|
1027
|
+
blocks localization key get-uilm-exported-files [--search] [--page-number] [--page-size]
|
|
1028
|
+
[--create-date-start] [--create-date-end] [--json]
|
|
1029
|
+
blocks localization key get-language-file-generation-history [--page-number]
|
|
1030
|
+
[--page-size] [--json]
|
|
1031
|
+
blocks localization key rollback <itemId> [--dry-run] [--yes] [--json]
|
|
1032
|
+
|
|
1033
|
+
blocks localization language save --language-name <n> --language-code <c> [--item-id]
|
|
1034
|
+
[--is-default] [--body '<json>'|--file <path>]
|
|
1035
|
+
[--dry-run] [--yes] [--json]
|
|
1036
|
+
blocks localization language list [--json]
|
|
1037
|
+
blocks localization language list-for-tenant [--json]
|
|
1038
|
+
blocks localization language delete <languageName> [--dry-run] [--yes] [--json]
|
|
1039
|
+
blocks localization language set-default <languageName> [--dry-run] [--yes] [--json]
|
|
1040
|
+
|
|
1041
|
+
blocks localization module save --module-name <n> [--item-id]
|
|
1042
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
1043
|
+
blocks localization module list [--json]
|
|
1044
|
+
blocks localization module list-for-tenant [--json]
|
|
1045
|
+
blocks localization module tag-glossary <moduleId> --glossary-ids a,b
|
|
1046
|
+
[--dry-run] [--yes] [--json]
|
|
1047
|
+
|
|
286
1048
|
Release:
|
|
287
|
-
blocks
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
this
|
|
1049
|
+
blocks release deploy [--domain <customDomain>] [--wait] [--poll-interval <seconds>]
|
|
1050
|
+
[--timeout <seconds>] [--dry-run] [--yes] [--json]
|
|
1051
|
+
Deploy the selected project's environment. Resolves everything from state
|
|
1052
|
+
you already have: the repo linked to this project (Project/GetAsset) and
|
|
1053
|
+
that repo's connected branch (Build/repo-details) -- no --repo-id needed.
|
|
1054
|
+
Aborts if the connected branch doesn't match this environment's name.
|
|
1055
|
+
Pass --domain to also set the custom deployment domain before deploying.
|
|
1056
|
+
Pass --wait to poll release status on the resulting build until it reaches
|
|
1057
|
+
a terminal state (or --timeout elapses, default 900s) instead of returning
|
|
1058
|
+
immediately with just a build id.
|
|
1059
|
+
Mutating; no artifact upload is performed by this CLI.
|
|
291
1060
|
|
|
292
|
-
blocks
|
|
1061
|
+
blocks release status <buildId> [--json]
|
|
293
1062
|
Read Release build status by build id using an impersonated project
|
|
294
1063
|
token. Read-only.
|
|
295
1064
|
|
|
296
|
-
blocks
|
|
1065
|
+
blocks release builds list [repoId] [--repo-id <repoId>] [--json]
|
|
297
1066
|
List Release build details for a repository using an impersonated project
|
|
298
|
-
token.
|
|
1067
|
+
token. When repoId is omitted, resolves it from the selected project's
|
|
1068
|
+
linked repo assets (Project/GetAsset, account token) -- auto-picked if
|
|
1069
|
+
there's exactly one, otherwise you're prompted to choose. Read-only.
|
|
299
1070
|
|
|
300
|
-
blocks
|
|
301
|
-
Alias for release
|
|
1071
|
+
blocks release builds get <buildId> [--json]
|
|
1072
|
+
Alias for release status. Read-only.
|
|
302
1073
|
|
|
303
1074
|
Scaffold:
|
|
304
|
-
blocks
|
|
305
|
-
[--blocks-api-url <url>] [--oidc-url <url>]
|
|
306
|
-
Create a Vite React starter app
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
1075
|
+
blocks new web <name> [--app-domain <domain>] [--client-id <oidcClientId>]
|
|
1076
|
+
[--x-blocks-key <tenantId>] [--blocks-api-url <url>] [--oidc-url <url>]
|
|
1077
|
+
Create a Vite React starter app that talks to Blocks exclusively through
|
|
1078
|
+
@seliseblocks/client (a single createBlocksClient() instance) using the SDK
|
|
1079
|
+
hosted IdP flow: blocksClient.auth.idp.redirectToProvider() on login click
|
|
1080
|
+
and blocksClient.auth.idp.callback() on /login/callback. Includes route
|
|
1081
|
+
guards, auto-refresh through auth.oidc.refreshToken(), live
|
|
1082
|
+
auth/iam/data/localization SDK examples, environment config, and safe
|
|
1083
|
+
.gitignore defaults.
|
|
1084
|
+
Uses the selected project (see 'use') unless --x-blocks-key overrides it.
|
|
1085
|
+
--app-domain and --client-id are resolved from the project when omitted:
|
|
1086
|
+
if the project has one domain it's used automatically, otherwise you're
|
|
1087
|
+
prompted to choose; the OIDC client is picked from a list of the
|
|
1088
|
+
project's existing clients, or you can create a minimal one (display
|
|
1089
|
+
name + redirect URI, active, registered as a Blocks OIDC identity
|
|
1090
|
+
provider) on the spot, or skip and register one later from the portal or
|
|
1091
|
+
'auth oidc-clients save'.
|
|
1092
|
+
--blocks-api-url defaults to https://api.seliseblocks.com if omitted -
|
|
1093
|
+
pass a different Data/IAM/Localization/OS gateway URL explicitly only if
|
|
1094
|
+
your project uses a non-default one.
|
|
313
1095
|
--oidc-url defaults to https://iam.seliseblocks.com.
|
|
1096
|
+
|
|
1097
|
+
Skills:
|
|
1098
|
+
blocks skill list [--json]
|
|
1099
|
+
List bundled blocks-skills/*/SKILL.md agent context docs (name +
|
|
1100
|
+
description). Local-only, no cloud calls.
|
|
1101
|
+
blocks skill show <name> [--json]
|
|
1102
|
+
Print one skill's full SKILL.md content.
|
|
1103
|
+
blocks skill add <name> [--dir <path>]
|
|
1104
|
+
Copy a bundled skill's SKILL.md into <path>/<name>/SKILL.md in the
|
|
1105
|
+
current directory (default --dir is 'blocks-skills'), for use in a
|
|
1106
|
+
project outside this monorepo. Overwrites silently, same as
|
|
1107
|
+
'data schema pull'.
|
|
1108
|
+
|
|
1109
|
+
SDK:
|
|
1110
|
+
blocks sdk client [--app-domain <domain>] [--client-id <oidcClientId>]
|
|
1111
|
+
[--x-blocks-key <tenantId>] [--blocks-api-url <url>] [--oidc-url <url>] [--json]
|
|
1112
|
+
Read-only: "I want to use the Blocks SDK -- show me the client." Resolves this
|
|
1113
|
+
project's @seliseblocks/client config (same values 'new web' scaffolds with,
|
|
1114
|
+
using the selected project unless --x-blocks-key overrides it, and the
|
|
1115
|
+
project's registered domain/OIDC client when --app-domain/--client-id are
|
|
1116
|
+
omitted) and prints a ready-to-paste createBlocksClient(...) snippet.
|
|
1117
|
+
Passing both --app-domain and --client-id skips the project lookup entirely
|
|
1118
|
+
(no login required). Never writes a file; to scaffold a new app use 'new web'.
|
|
314
1119
|
`);
|
|
315
1120
|
}
|