@seliseblocks/cli-os 0.2.2 → 0.2.4
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 +20 -15
- package/README.md +5 -5
- package/dist/commands/auth/idp/create.d.ts +7 -0
- package/dist/commands/auth/idp/create.js +22 -3
- package/dist/commands/auth/idp/update.d.ts +7 -0
- package/dist/commands/auth/idp/update.js +22 -3
- package/dist/commands/data/files/delete.js +5 -4
- package/dist/commands/data/files/get-many.js +1 -1
- package/dist/commands/data/files/get.js +1 -1
- package/dist/commands/data/files/info.js +1 -1
- package/dist/commands/data/files/object-tree.d.ts +23 -0
- package/dist/commands/data/files/object-tree.js +238 -0
- package/dist/commands/data/files/presigned-upload-url.js +9 -2
- package/dist/commands/data/files/update-additional-info.js +2 -2
- package/dist/commands/data/files/upload-to-local-storage.js +2 -2
- package/dist/commands/data/files/upload.d.ts +2 -4
- package/dist/commands/data/files/upload.js +14 -28
- package/dist/commands/new/web.js +4 -0
- package/dist/index.js +100 -42
- package/dist/skills/blocks-data-storage/SKILL.md +194 -102
- package/dist/skills/blocks-data-storage/flows/object-management.md +124 -0
- package/dist/skills/blocks-iam-sso-oidc-configuration/SKILL.md +25 -9
- package/dist/skills/blocks-onboarding/SKILL.md +2 -2
- package/dist/skills/blocks-storage-configuration/SKILL.md +93 -93
- package/package.json +1 -1
- package/dist/commands/data/files/create-folder.d.ts +0 -1
- package/dist/commands/data/files/create-folder.js +0 -34
- package/dist/commands/data/files/delete-folder.d.ts +0 -1
- package/dist/commands/data/files/delete-folder.js +0 -25
- package/dist/commands/data/files/dms-list.d.ts +0 -1
- package/dist/commands/data/files/dms-list.js +0 -27
- package/dist/commands/data/files/dms-upload.d.ts +0 -6
- package/dist/commands/data/files/dms-upload.js +0 -41
|
@@ -16,7 +16,7 @@ export async function dataFilesUploadToLocalStorage(argv) {
|
|
|
16
16
|
const name = stringFlag(flags, "name") || basename(filePath);
|
|
17
17
|
const additionalPropertiesRaw = stringFlag(flags, "additional-properties");
|
|
18
18
|
if (booleanFlag(flags, "dry-run")) {
|
|
19
|
-
writeOutput({ dryRun: true, endpoint: "/data/v4/
|
|
19
|
+
writeOutput({ dryRun: true, endpoint: "/data/v4/files/upload-file-to-local-storage", name, request: { file: filePath } }, flags);
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
await confirmMutation(flags, `Upload '${filePath}' to local storage as '${name}'.`);
|
|
@@ -45,7 +45,7 @@ export async function dataFilesUploadToLocalStorage(argv) {
|
|
|
45
45
|
form.set(`AdditionalProperties[${key}]`, value);
|
|
46
46
|
}
|
|
47
47
|
const projectKey = await selectedProject(flags);
|
|
48
|
-
const result = await blocksRequest("/data/v4/
|
|
48
|
+
const result = await blocksRequest("/data/v4/files/upload-file-to-local-storage", {
|
|
49
49
|
body: form,
|
|
50
50
|
impersonatedProjectAuth: true,
|
|
51
51
|
...requestContext(flags),
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Composed upload:
|
|
3
|
-
*
|
|
4
|
-
* local-storage path) -- instead of you chaining presigned-upload-url/upload-to-url/dms-upload
|
|
5
|
-
* (or upload-to-local-storage) by hand.
|
|
2
|
+
* Composed upload: create the file/version metadata and PUT cloud bytes, or use the
|
|
3
|
+
* one-call local-storage path. The upload is immediately part of the object tree.
|
|
6
4
|
*/
|
|
7
5
|
export declare function dataFilesUpload(argv: string[]): Promise<void>;
|
|
@@ -3,7 +3,7 @@ import { basename, extname } from "node:path";
|
|
|
3
3
|
import { booleanFlag, optionalIntegerFlag, stringFlag } from "../../../lib/args.js";
|
|
4
4
|
import { blocksRequest } from "../../../lib/api.js";
|
|
5
5
|
import { confirmMutation } from "../../../lib/confirm.js";
|
|
6
|
-
import { compact
|
|
6
|
+
import { compact } from "../../../lib/json-flag.js";
|
|
7
7
|
import { writeOutput } from "../../../lib/output.js";
|
|
8
8
|
import { requestContext } from "../../../lib/request-context.js";
|
|
9
9
|
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
@@ -25,10 +25,8 @@ const CONTENT_TYPES = {
|
|
|
25
25
|
".zip": "application/zip"
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
|
-
* Composed upload:
|
|
29
|
-
*
|
|
30
|
-
* local-storage path) -- instead of you chaining presigned-upload-url/upload-to-url/dms-upload
|
|
31
|
-
* (or upload-to-local-storage) by hand.
|
|
28
|
+
* Composed upload: create the file/version metadata and PUT cloud bytes, or use the
|
|
29
|
+
* one-call local-storage path. The upload is immediately part of the object tree.
|
|
32
30
|
*/
|
|
33
31
|
export async function dataFilesUpload(argv) {
|
|
34
32
|
const { flags } = parseCommand(argv);
|
|
@@ -43,7 +41,7 @@ export async function dataFilesUpload(argv) {
|
|
|
43
41
|
async function uploadToLocalStorage(filePath, name, flags) {
|
|
44
42
|
const parentDirectoryId = stringFlag(flags, "parent-id") || stringFlag(flags, "parent-directory-id");
|
|
45
43
|
if (booleanFlag(flags, "dry-run")) {
|
|
46
|
-
writeOutput({ dryRun: true, endpoint: "/data/v4/
|
|
44
|
+
writeOutput({ dryRun: true, endpoint: "/data/v4/files/upload-file-to-local-storage", file: filePath, name }, flags);
|
|
47
45
|
return;
|
|
48
46
|
}
|
|
49
47
|
await confirmMutation(flags, `Upload '${filePath}' to local storage as '${name}'.`);
|
|
@@ -52,6 +50,9 @@ async function uploadToLocalStorage(filePath, name, flags) {
|
|
|
52
50
|
form.set("Name", name);
|
|
53
51
|
if (parentDirectoryId)
|
|
54
52
|
form.set("ParentDirectoryId", parentDirectoryId);
|
|
53
|
+
const itemId = stringFlag(flags, "item-id");
|
|
54
|
+
if (itemId)
|
|
55
|
+
form.set("ItemId", itemId);
|
|
55
56
|
const tags = stringFlag(flags, "tags");
|
|
56
57
|
if (tags)
|
|
57
58
|
form.set("Tags", tags);
|
|
@@ -62,7 +63,7 @@ async function uploadToLocalStorage(filePath, name, flags) {
|
|
|
62
63
|
if (configurationName)
|
|
63
64
|
form.set("ConfigurationName", configurationName);
|
|
64
65
|
const projectKey = await selectedProject(flags);
|
|
65
|
-
const result = await blocksRequest("/data/v4/
|
|
66
|
+
const result = await blocksRequest("/data/v4/files/upload-file-to-local-storage", {
|
|
66
67
|
body: form,
|
|
67
68
|
impersonatedProjectAuth: true,
|
|
68
69
|
...requestContext(flags),
|
|
@@ -77,6 +78,7 @@ async function uploadViaPresignedUrl(filePath, name, flags) {
|
|
|
77
78
|
const presignBody = compact({
|
|
78
79
|
accessModifier: stringFlag(flags, "access-modifier") || undefined,
|
|
79
80
|
configurationName: stringFlag(flags, "configuration-name") || undefined,
|
|
81
|
+
itemId: stringFlag(flags, "item-id") || undefined,
|
|
80
82
|
metaData: stringFlag(flags, "meta-data") || undefined,
|
|
81
83
|
moduleName: optionalIntegerFlag(flags, "module-name"),
|
|
82
84
|
name,
|
|
@@ -87,16 +89,15 @@ async function uploadViaPresignedUrl(filePath, name, flags) {
|
|
|
87
89
|
writeOutput({
|
|
88
90
|
dryRun: true,
|
|
89
91
|
steps: [
|
|
90
|
-
{ body: presignBody, endpoint: "/data/v4/
|
|
91
|
-
{ contentType, endpoint: "PUT <uploadUrl>", file: filePath }
|
|
92
|
-
{ endpoint: "/data/v4/Files/UploadFile" }
|
|
92
|
+
{ body: presignBody, endpoint: "/data/v4/files/get-pre-signed-url-for-upload" },
|
|
93
|
+
{ contentType, endpoint: "PUT <uploadUrl>", file: filePath }
|
|
93
94
|
]
|
|
94
95
|
}, flags);
|
|
95
96
|
return;
|
|
96
97
|
}
|
|
97
|
-
await confirmMutation(flags, `Upload '${filePath}' as '${name}' (
|
|
98
|
+
await confirmMutation(flags, `Upload '${filePath}' as '${name}' (create metadata + PUT bytes).`);
|
|
98
99
|
const projectKey = await selectedProject(flags);
|
|
99
|
-
const presigned = await blocksRequest("/data/v4/
|
|
100
|
+
const presigned = await blocksRequest("/data/v4/files/get-pre-signed-url-for-upload", {
|
|
100
101
|
body: presignBody,
|
|
101
102
|
impersonatedProjectAuth: true,
|
|
102
103
|
...requestContext(flags),
|
|
@@ -118,22 +119,7 @@ async function uploadViaPresignedUrl(filePath, name, flags) {
|
|
|
118
119
|
if (!putResponse.ok) {
|
|
119
120
|
throw new Error(`Upload PUT ${putResponse.status} ${putResponse.statusText}: ${await putResponse.text().catch(() => "")}`);
|
|
120
121
|
}
|
|
121
|
-
|
|
122
|
-
body: {
|
|
123
|
-
upload: [
|
|
124
|
-
compact({
|
|
125
|
-
artifactName: name,
|
|
126
|
-
fileStorageId: fileId,
|
|
127
|
-
parentId: parentDirectoryId || undefined,
|
|
128
|
-
tags: listFlag(flags, "tags")
|
|
129
|
-
})
|
|
130
|
-
]
|
|
131
|
-
},
|
|
132
|
-
impersonatedProjectAuth: true,
|
|
133
|
-
...requestContext(flags),
|
|
134
|
-
projectTenantId: projectKey
|
|
135
|
-
});
|
|
136
|
-
writeOutput({ fileId, registered, uploadUrl }, flags);
|
|
122
|
+
writeOutput({ fileId, uploadUrl, uploaded: true }, flags);
|
|
137
123
|
}
|
|
138
124
|
function firstString(record, keys) {
|
|
139
125
|
for (const key of keys) {
|
package/dist/commands/new/web.js
CHANGED
|
@@ -132,8 +132,12 @@ async function createOidcClientInteractively(tenantId, appDomain, appName, flags
|
|
|
132
132
|
const defaultRedirect = `https://${appDomain}/login/callback`;
|
|
133
133
|
const displayName = (await promptText(`OIDC client display name [${appName}]: `)) || appName;
|
|
134
134
|
const redirectUri = (await promptText(`Redirect URI [${defaultRedirect}]: `)) || defaultRedirect;
|
|
135
|
+
// clientType drives IAM's tokenEndpointAuthMethod: omitting it stores this browser
|
|
136
|
+
// app as confidential ("client_secret_post") and lets it request client_credentials.
|
|
137
|
+
// The scaffold only ever produces a PKCE SPA, so it is always "public".
|
|
135
138
|
const body = {
|
|
136
139
|
clientDisplayName: displayName,
|
|
140
|
+
clientType: "public",
|
|
137
141
|
isActive: true,
|
|
138
142
|
redirectUris: [redirectUri],
|
|
139
143
|
registerAsIdentityProvider: true,
|
package/dist/index.js
CHANGED
|
@@ -31,11 +31,7 @@ import { dataValidationDelete } from "./commands/data/validation/delete.js";
|
|
|
31
31
|
import { dataValidationGet } from "./commands/data/validation/get.js";
|
|
32
32
|
import { dataValidationList } from "./commands/data/validation/list.js";
|
|
33
33
|
import { dataValidationSave } from "./commands/data/validation/save.js";
|
|
34
|
-
import { dataFilesCreateFolder } from "./commands/data/files/create-folder.js";
|
|
35
34
|
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
35
|
import { dataFilesGet } from "./commands/data/files/get.js";
|
|
40
36
|
import { dataFilesGetMany } from "./commands/data/files/get-many.js";
|
|
41
37
|
import { dataFilesInfo } from "./commands/data/files/info.js";
|
|
@@ -44,6 +40,7 @@ import { dataFilesUpdateAdditionalInfo } from "./commands/data/files/update-addi
|
|
|
44
40
|
import { dataFilesUpload } from "./commands/data/files/upload.js";
|
|
45
41
|
import { dataFilesUploadToLocalStorage } from "./commands/data/files/upload-to-local-storage.js";
|
|
46
42
|
import { dataFilesUploadToUrl } from "./commands/data/files/upload-to-url.js";
|
|
43
|
+
import { dataFilesAccessGrant, dataFilesAccessList, dataFilesAccessResolve, dataFilesAccessRevoke, dataFilesAccessUpdate, dataFilesCopy, dataFilesCreateVersion, dataFilesDirectoryCreate, dataFilesDirectoryDelete, dataFilesDirectoryGet, dataFilesDirectoryMove, dataFilesDirectoryUpdate, dataFilesInheritance, dataFilesList, dataFilesMove, dataFilesPurge, dataFilesRename, dataFilesRestore, dataFilesSearch, dataFilesShare, dataFilesShared, dataFilesTrash, dataFilesVersions } from "./commands/data/files/object-tree.js";
|
|
47
44
|
import { iamMe } from "./commands/iam/me.js";
|
|
48
45
|
import { init } from "./commands/init.js";
|
|
49
46
|
import { localizationAssistantTranslationSuggestion } from "./commands/localization/assistant/translation-suggestion.js";
|
|
@@ -243,10 +240,29 @@ const commands = {
|
|
|
243
240
|
"data:files:upload-to-local-storage": dataFilesUploadToLocalStorage,
|
|
244
241
|
"data:files:update-additional-info": dataFilesUpdateAdditionalInfo,
|
|
245
242
|
"data:files:delete": dataFilesDelete,
|
|
246
|
-
"data:files:
|
|
247
|
-
"data:files:
|
|
248
|
-
"data:files:
|
|
249
|
-
"data:files:
|
|
243
|
+
"data:files:list": dataFilesList,
|
|
244
|
+
"data:files:search": dataFilesSearch,
|
|
245
|
+
"data:files:trash": dataFilesTrash,
|
|
246
|
+
"data:files:shared": dataFilesShared,
|
|
247
|
+
"data:files:restore": dataFilesRestore,
|
|
248
|
+
"data:files:purge": dataFilesPurge,
|
|
249
|
+
"data:files:directory-create": dataFilesDirectoryCreate,
|
|
250
|
+
"data:files:directory-get": dataFilesDirectoryGet,
|
|
251
|
+
"data:files:directory-update": dataFilesDirectoryUpdate,
|
|
252
|
+
"data:files:directory-delete": dataFilesDirectoryDelete,
|
|
253
|
+
"data:files:directory-move": dataFilesDirectoryMove,
|
|
254
|
+
"data:files:versions": dataFilesVersions,
|
|
255
|
+
"data:files:create-version": dataFilesCreateVersion,
|
|
256
|
+
"data:files:copy": dataFilesCopy,
|
|
257
|
+
"data:files:move": dataFilesMove,
|
|
258
|
+
"data:files:rename": dataFilesRename,
|
|
259
|
+
"data:files:access-list": dataFilesAccessList,
|
|
260
|
+
"data:files:access-grant": dataFilesAccessGrant,
|
|
261
|
+
"data:files:access-update": dataFilesAccessUpdate,
|
|
262
|
+
"data:files:access-revoke": dataFilesAccessRevoke,
|
|
263
|
+
"data:files:access-resolve": dataFilesAccessResolve,
|
|
264
|
+
"data:files:inheritance": dataFilesInheritance,
|
|
265
|
+
"data:files:share": dataFilesShare,
|
|
250
266
|
"localization:validate": localizationValidate,
|
|
251
267
|
"localization:push": localizationPush,
|
|
252
268
|
"localization:pull": localizationPull,
|
|
@@ -753,12 +769,24 @@ Auth Admin (/iam/v4/auth/identity-providers*, /config, /client-credentials, /oid
|
|
|
753
769
|
blocks auth idp create --provider <p> --provider-type <t> --protocol <proto>
|
|
754
770
|
--client-id <id> [--client-secret] [--display-name] [--issuer]
|
|
755
771
|
[--scope] [--redirect-uris a,b] [--active]
|
|
772
|
+
[--authorization-url] [--token-url] [--user-info-url]
|
|
773
|
+
[--jwks-uri] [--well-known-url] [--response-type]
|
|
774
|
+
[--grant-types a,b] [--require-pkce]
|
|
775
|
+
[--token-endpoint-auth-method] [--initial-roles a,b]
|
|
776
|
+
[--initial-permissions a,b] [--icon]
|
|
756
777
|
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
757
|
-
|
|
758
|
-
|
|
778
|
+
Apple-specific fields (teamId, keyId, privateKey, appleAudience) go in --body/--file
|
|
779
|
+
so no private key lands in shell history.
|
|
780
|
+
IAM's create endpoint stores issuer/jwksUri/wellKnownUrl but drops
|
|
781
|
+
authorizationUrl/tokenUrl/userInfoUrl -- set those with 'idp update' afterward.
|
|
759
782
|
blocks auth idp update <id> [same flags as create, all optional] [--dry-run] [--yes] [--json]
|
|
760
783
|
provider/providerType/protocol/clientId are immutable: omit them, or echo the
|
|
761
784
|
existing values exactly if you also pass --body/--file.
|
|
785
|
+
The only endpoint that persists authorizationUrl/tokenUrl/userInfoUrl -- create accepts
|
|
786
|
+
and drops them, and update never re-runs discovery, so values set here stick. Use it to
|
|
787
|
+
repair a provider whose authorizationUrl came back null: '/idp/initiate' builds its
|
|
788
|
+
redirect from that field, so hosted login goes nowhere without it. Read the endpoint
|
|
789
|
+
values from the tenant's discovery document rather than composing them by hand.
|
|
762
790
|
blocks auth idp delete <id> [--dry-run] [--yes] [--json]
|
|
763
791
|
Irreversible; also deletes the related OIDC client registration.
|
|
764
792
|
blocks auth idp status <id> --active|--active=false [--dry-run] [--yes] [--json]
|
|
@@ -795,6 +823,14 @@ Auth Admin (/iam/v4/auth/identity-providers*, /config, /client-credentials, /oid
|
|
|
795
823
|
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
796
824
|
Upsert: omit --item-id to register a new client, pass it to update an existing one.
|
|
797
825
|
The response's client_secret is shown once and is not retrievable again afterward.
|
|
826
|
+
--client-type is not optional in practice: IAM derives tokenEndpointAuthMethod from it,
|
|
827
|
+
so omitting it stores a browser/SPA client as confidential ("client_secret_post") and
|
|
828
|
+
lets it request the client_credentials grant. Pass --client-type public for any
|
|
829
|
+
PKCE/browser client.
|
|
830
|
+
--register-as-identity-provider creates the linked identity provider in the same call.
|
|
831
|
+
Its authorize/token/userinfo/jwks/issuer values are filled from the discovery document
|
|
832
|
+
at --external-discovery-endpoint; with no discovery endpoint they are left null and the
|
|
833
|
+
provider's scope is replaced with "openid profile email". Verify with 'auth idp list'.
|
|
798
834
|
blocks auth oidc-clients delete <clientId> [--dry-run] [--yes] [--json]
|
|
799
835
|
Irreversible; revokes all tokens issued to the client.
|
|
800
836
|
blocks auth oidc-clients rotate-secret <clientId> [--dry-run] [--yes] [--json]
|
|
@@ -890,26 +926,22 @@ Data:
|
|
|
890
926
|
Upsert: omit --item-id to create, pass it to update.
|
|
891
927
|
blocks data validation delete <validationId> [--dry-run] [--yes] [--json]
|
|
892
928
|
|
|
893
|
-
|
|
894
|
-
the blocks-data-storage skill if writing this into app code instead of scripting it):
|
|
929
|
+
Storage object tree (files, directories, discovery, trash, versions, and access):
|
|
895
930
|
blocks data files get <fileId> [--version] [--configuration-name] [--json]
|
|
896
931
|
blocks data files get-many <fileId...>|--file-ids a,b [--configuration-name] [--json]
|
|
897
932
|
blocks data files info [--name] [--tenant-id] [--page] [--page-size] [--sort-by]
|
|
898
933
|
[--sort-desc] [--json]
|
|
899
|
-
blocks data files upload --file <localPath> [--name] [--parent-id] [--tags]
|
|
934
|
+
blocks data files upload --file <localPath> [--name] [--item-id] [--parent-id] [--tags]
|
|
900
935
|
[--access-modifier Public|Private] [--content-type]
|
|
901
936
|
[--configuration-name] [--module-name <1-11>] [--local-storage]
|
|
902
937
|
[--dry-run] [--yes] [--json]
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
upload-to-local-storage path instead, for local-storage-backed projects.
|
|
907
|
-
blocks data files presigned-upload-url --name <fileName> [--parent-directory-id]
|
|
938
|
+
Cloud: create file/version metadata, then PUT bytes to the returned URL. Local:
|
|
939
|
+
one multipart request. The file appears in the object tree without registration.
|
|
940
|
+
blocks data files presigned-upload-url --name <fileName> [--item-id] [--parent-directory-id]
|
|
908
941
|
[--access-modifier Public|Private] [--configuration-name]
|
|
909
942
|
[--module-name <1-11>] [--meta-data] [--tags]
|
|
910
|
-
[--body '<json>'|--file <path>] [--json]
|
|
911
|
-
|
|
912
|
-
with data files upload-to-url.
|
|
943
|
+
[--body '<json>'|--file <path>] [--dry-run] [--yes] [--json]
|
|
944
|
+
Mutating cloud step 1: creates metadata/version and returns uploadUrl/fileId.
|
|
913
945
|
blocks data files upload-to-url --url <presignedUrl> --file <localPath>
|
|
914
946
|
--content-type <type> [--blob-type BlockBlob] [--no-blob-type-header]
|
|
915
947
|
[--dry-run] [--yes] [--json]
|
|
@@ -922,18 +954,44 @@ Data:
|
|
|
922
954
|
blocks data files update-additional-info <itemId> --additional-properties '<json>'
|
|
923
955
|
[--dry-run] [--yes] [--json]
|
|
924
956
|
blocks data files delete <fileId> [--configuration-name] [--event-queue-name]
|
|
957
|
+
[--permanent]
|
|
958
|
+
[--dry-run] [--yes] [--json]
|
|
959
|
+
Defaults to moving the file to trash; --permanent removes bytes and metadata.
|
|
960
|
+
blocks data files list [--parent-id] [--module-name <1-11>] [--type directory|file]
|
|
961
|
+
[--search] [--cursor] [--limit 1-200] [--json]
|
|
962
|
+
blocks data files search <query> [--directory-id] [--type directory|file]
|
|
963
|
+
[--cursor] [--limit 1-200] [--json]
|
|
964
|
+
blocks data files trash|shared [--type directory|file] [--cursor] [--limit] [--json]
|
|
965
|
+
blocks data files restore <resourceId> [--dry-run] [--yes] [--json]
|
|
966
|
+
blocks data files purge <resourceId> [--dry-run] [--yes] [--json]
|
|
967
|
+
blocks data files directory-create <name> [--parent-id] [--module-name]
|
|
968
|
+
[--description] [--allowed-extensions pdf,docx]
|
|
969
|
+
[--dry-run] [--yes] [--json]
|
|
970
|
+
blocks data files directory-get <directoryId> [--json]
|
|
971
|
+
blocks data files directory-update <directoryId> [--name] [--description]
|
|
972
|
+
[--dry-run] [--yes] [--json]
|
|
973
|
+
blocks data files directory-delete <directoryId> [--permanent]
|
|
974
|
+
[--dry-run] [--yes] [--json]
|
|
975
|
+
blocks data files directory-move <directoryId> [--target-directory-id]
|
|
976
|
+
[--dry-run] [--yes] [--json]
|
|
977
|
+
blocks data files versions <fileId> [--cursor] [--limit 1-100] [--json]
|
|
978
|
+
blocks data files create-version <fileId> [--configuration-name]
|
|
979
|
+
[--dry-run] [--yes] [--json]
|
|
980
|
+
blocks data files copy <fileId> --target-directory-id <id> [--copy-access-policies]
|
|
925
981
|
[--dry-run] [--yes] [--json]
|
|
926
|
-
blocks data files
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
blocks data files
|
|
930
|
-
|
|
982
|
+
blocks data files move <fileId> --target-directory-id <id> [--dry-run] [--yes] [--json]
|
|
983
|
+
blocks data files rename <fileId> --name <name> [--dry-run] [--yes] [--json]
|
|
984
|
+
blocks data files access-list|access-resolve <resourceId> [--json]
|
|
985
|
+
blocks data files access-grant <resourceId> --resource-type Directory|File
|
|
986
|
+
--principal-type User|Role|Everyone|Organization
|
|
987
|
+
[--principal-id] --permission View|Download|Edit|Delete|Manage|Owner
|
|
988
|
+
[--effect Allow|Deny] [--priority] [--expires-at]
|
|
931
989
|
[--dry-run] [--yes] [--json]
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
blocks data files
|
|
935
|
-
|
|
936
|
-
|
|
990
|
+
blocks data files access-update <resourceId> --policy-id <id> <same policy flags>
|
|
991
|
+
blocks data files access-revoke <resourceId> --policy-id <id> [--dry-run] [--yes] [--json]
|
|
992
|
+
blocks data files inheritance <resourceId> --enabled=true|false [--dry-run] [--yes] [--json]
|
|
993
|
+
blocks data files share <resourceId> --resource-type <type> --principal-type <type>
|
|
994
|
+
[--principal-id] --permission <permission> [--expires-at]
|
|
937
995
|
[--dry-run] [--yes] [--json]
|
|
938
996
|
|
|
939
997
|
Localization:
|
|
@@ -1089,11 +1147,11 @@ Scaffold:
|
|
|
1089
1147
|
name + redirect URI, active, registered as a Blocks OIDC identity
|
|
1090
1148
|
provider) on the spot, or skip and register one later from the portal or
|
|
1091
1149
|
'auth oidc-clients save'.
|
|
1092
|
-
If --blocks-api-url is omitted, it is derived from the app domain:
|
|
1093
|
-
https://blocksapi.<registrable-domain> (for example, app domain
|
|
1094
|
-
https://dqrsf.slsblx.com uses https://blocksapi.slsblx.com). Pass a
|
|
1095
|
-
different Data/IAM/Localization/OS gateway URL explicitly only if your
|
|
1096
|
-
project uses a non-default one.
|
|
1150
|
+
If --blocks-api-url is omitted, it is derived from the app domain:
|
|
1151
|
+
https://blocksapi.<registrable-domain> (for example, app domain
|
|
1152
|
+
https://dqrsf.slsblx.com uses https://blocksapi.slsblx.com). Pass a
|
|
1153
|
+
different Data/IAM/Localization/OS gateway URL explicitly only if your
|
|
1154
|
+
project uses a non-default one.
|
|
1097
1155
|
--oidc-url defaults to https://iam.seliseblocks.com.
|
|
1098
1156
|
|
|
1099
1157
|
Skills:
|
|
@@ -1111,12 +1169,12 @@ Skills:
|
|
|
1111
1169
|
SDK:
|
|
1112
1170
|
blocks sdk client [--app-domain <domain>] [--client-id <oidcClientId>]
|
|
1113
1171
|
[--x-blocks-key <tenantId>] [--blocks-api-url <url>] [--oidc-url <url>] [--json]
|
|
1114
|
-
Read-only: "I want to use the Blocks SDK -- show me the client." Resolves this
|
|
1115
|
-
project's @seliseblocks/client config using the selected project unless
|
|
1116
|
-
--x-blocks-key overrides it, and the project's registered domain/OIDC client
|
|
1117
|
-
when --app-domain/--client-id are omitted. Its API URL defaults to
|
|
1118
|
-
https://api.seliseblocks.com unless --blocks-api-url is passed.
|
|
1119
|
-
Prints a ready-to-paste createBlocksClient(...) snippet.
|
|
1172
|
+
Read-only: "I want to use the Blocks SDK -- show me the client." Resolves this
|
|
1173
|
+
project's @seliseblocks/client config using the selected project unless
|
|
1174
|
+
--x-blocks-key overrides it, and the project's registered domain/OIDC client
|
|
1175
|
+
when --app-domain/--client-id are omitted. Its API URL defaults to
|
|
1176
|
+
https://api.seliseblocks.com unless --blocks-api-url is passed.
|
|
1177
|
+
Prints a ready-to-paste createBlocksClient(...) snippet.
|
|
1120
1178
|
Passing both --app-domain and --client-id skips the project lookup entirely
|
|
1121
1179
|
(no login required). Never writes a file; to scaffold a new app use 'new web'.
|
|
1122
1180
|
`);
|