@signstack/cli 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +458 -0
- package/bin/run.js +12 -0
- package/dist/apps/signstack-cli/schemas/asset.schema.json +220 -0
- package/dist/apps/signstack-cli/schemas/blueprint.schema.json +485 -0
- package/dist/apps/signstack-cli/schemas/jsonata-function.schema.json +185 -0
- package/dist/apps/signstack-cli/schemas/schema.schema.json +97 -0
- package/dist/apps/signstack-cli/schemas/template.schema.json +295 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.d.ts +25 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.js +229 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.d.ts +10 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.js +59 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.d.ts +9 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.js +85 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/generate.d.ts +51 -0
- package/dist/apps/signstack-cli/src/commands/generate.js +479 -0
- package/dist/apps/signstack-cli/src/commands/generate.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/preview.d.ts +24 -0
- package/dist/apps/signstack-cli/src/commands/preview.js +162 -0
- package/dist/apps/signstack-cli/src/commands/preview.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/pull.d.ts +28 -0
- package/dist/apps/signstack-cli/src/commands/pull.js +244 -0
- package/dist/apps/signstack-cli/src/commands/pull.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/push.d.ts +46 -0
- package/dist/apps/signstack-cli/src/commands/push.js +460 -0
- package/dist/apps/signstack-cli/src/commands/push.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/run.d.ts +22 -0
- package/dist/apps/signstack-cli/src/commands/run.js +126 -0
- package/dist/apps/signstack-cli/src/commands/run.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/test.d.ts +6 -0
- package/dist/apps/signstack-cli/src/commands/test.js +25 -0
- package/dist/apps/signstack-cli/src/commands/test.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/validate.d.ts +59 -0
- package/dist/apps/signstack-cli/src/commands/validate.js +558 -0
- package/dist/apps/signstack-cli/src/commands/validate.js.map +1 -0
- package/dist/apps/signstack-cli/src/index.d.ts +1 -0
- package/dist/apps/signstack-cli/src/index.js +2 -0
- package/dist/apps/signstack-cli/src/index.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/api-client.d.ts +77 -0
- package/dist/apps/signstack-cli/src/lib/api-client.js +269 -0
- package/dist/apps/signstack-cli/src/lib/api-client.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/base-command.d.ts +38 -0
- package/dist/apps/signstack-cli/src/lib/base-command.js +135 -0
- package/dist/apps/signstack-cli/src/lib/base-command.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/config.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/config.js +106 -0
- package/dist/apps/signstack-cli/src/lib/config.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.d.ts +31 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js +107 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.d.ts +72 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.js +238 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.d.ts +4 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.js +7 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.d.ts +127 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.js +545 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.d.ts +95 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.js +611 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.d.ts +63 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js +198 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.d.ts +13 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.js +39 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.d.ts +131 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.js +800 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.d.ts +87 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.js +361 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.d.ts +29 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.js +101 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.d.ts +44 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.js +158 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.js +266 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.d.ts +28 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.js +44 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.d.ts +35 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.js +80 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.d.ts +8 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.js +39 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.d.ts +17 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.js +61 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.d.ts +25 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js +133 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.d.ts +3 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.js +32 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.js +160 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/auth.types.d.ts +48 -0
- package/dist/apps/signstack-cli/src/types/auth.types.js +31 -0
- package/dist/apps/signstack-cli/src/types/auth.types.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/schema.types.d.ts +14 -0
- package/dist/apps/signstack-cli/src/types/schema.types.js +16 -0
- package/dist/apps/signstack-cli/src/types/schema.types.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.d.ts +144 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.js +2 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.js.map +1 -0
- package/dist/libs/common/base/src/index.d.ts +14 -0
- package/dist/libs/common/base/src/index.js +44 -0
- package/dist/libs/common/base/src/index.js.map +1 -0
- package/dist/libs/common/base/src/lib/address.util.d.ts +12 -0
- package/dist/libs/common/base/src/lib/address.util.js +55 -0
- package/dist/libs/common/base/src/lib/address.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/country-code-data.d.ts +5 -0
- package/dist/libs/common/base/src/lib/country-code-data.js +1256 -0
- package/dist/libs/common/base/src/lib/country-code-data.js.map +1 -0
- package/dist/libs/common/base/src/lib/date.util.d.ts +13 -0
- package/dist/libs/common/base/src/lib/date.util.js +135 -0
- package/dist/libs/common/base/src/lib/date.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/headers.d.ts +1 -0
- package/dist/libs/common/base/src/lib/headers.js +5 -0
- package/dist/libs/common/base/src/lib/headers.js.map +1 -0
- package/dist/libs/common/base/src/lib/jsonata.service.d.ts +32 -0
- package/dist/libs/common/base/src/lib/jsonata.service.js +207 -0
- package/dist/libs/common/base/src/lib/jsonata.service.js.map +1 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.d.ts +37 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.js +144 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.js.map +1 -0
- package/dist/libs/common/base/src/lib/phone-util.d.ts +16 -0
- package/dist/libs/common/base/src/lib/phone-util.js +61 -0
- package/dist/libs/common/base/src/lib/phone-util.js.map +1 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.d.ts +24 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.js +155 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/string-builder.d.ts +48 -0
- package/dist/libs/common/base/src/lib/string-builder.js +90 -0
- package/dist/libs/common/base/src/lib/string-builder.js.map +1 -0
- package/dist/libs/common/base/src/lib/util.d.ts +20 -0
- package/dist/libs/common/base/src/lib/util.js +110 -0
- package/dist/libs/common/base/src/lib/util.js.map +1 -0
- package/dist/libs/signstack/base/schemas/asset.schema.json +220 -0
- package/dist/libs/signstack/base/schemas/blueprint.schema.json +485 -0
- package/dist/libs/signstack/base/schemas/jsonata-function.schema.json +185 -0
- package/dist/libs/signstack/base/schemas/schema.schema.json +97 -0
- package/dist/libs/signstack/base/schemas/template.schema.json +295 -0
- package/dist/libs/signstack/base/src/index.d.ts +28 -0
- package/dist/libs/signstack/base/src/index.js +32 -0
- package/dist/libs/signstack/base/src/index.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/constants.d.ts +123 -0
- package/dist/libs/signstack/base/src/lib/constants.js +131 -0
- package/dist/libs/signstack/base/src/lib/constants.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/hash.util.d.ts +58 -0
- package/dist/libs/signstack/base/src/lib/hash.util.js +90 -0
- package/dist/libs/signstack/base/src/lib/hash.util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.d.ts +29 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js +93 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.d.ts +41 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.d.ts +54 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.js +18 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/asset.d.ts +101 -0
- package/dist/libs/signstack/base/src/lib/models/asset.js +11 -0
- package/dist/libs/signstack/base/src/lib/models/asset.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/auth.d.ts +142 -0
- package/dist/libs/signstack/base/src/lib/models/auth.js +35 -0
- package/dist/libs/signstack/base/src/lib/models/auth.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/base.d.ts +134 -0
- package/dist/libs/signstack/base/src/lib/models/base.js +71 -0
- package/dist/libs/signstack/base/src/lib/models/base.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.d.ts +311 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.js +9 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/file.d.ts +75 -0
- package/dist/libs/signstack/base/src/lib/models/file.js +9 -0
- package/dist/libs/signstack/base/src/lib/models/file.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.d.ts +111 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.js +19 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.d.ts +132 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js +22 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/membership.d.ts +127 -0
- package/dist/libs/signstack/base/src/lib/models/membership.js +22 -0
- package/dist/libs/signstack/base/src/lib/models/membership.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.d.ts +87 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.js +57 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/organization.d.ts +79 -0
- package/dist/libs/signstack/base/src/lib/models/organization.js +41 -0
- package/dist/libs/signstack/base/src/lib/models/organization.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.d.ts +88 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.d.ts +60 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.js +202 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.d.ts +138 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.js +14 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/schema.d.ts +131 -0
- package/dist/libs/signstack/base/src/lib/models/schema.js +44 -0
- package/dist/libs/signstack/base/src/lib/models/schema.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.d.ts +215 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.js +27 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.d.ts +279 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.js +105 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/template.d.ts +248 -0
- package/dist/libs/signstack/base/src/lib/models/template.js +32 -0
- package/dist/libs/signstack/base/src/lib/models/template.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/user.d.ts +30 -0
- package/dist/libs/signstack/base/src/lib/models/user.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/user.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.d.ts +223 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.js +62 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.d.ts +917 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.js +152 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/util.d.ts +92 -0
- package/dist/libs/signstack/base/src/lib/util.js +406 -0
- package/dist/libs/signstack/base/src/lib/util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.d.ts +94 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js +446 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.d.ts +57 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.js +8 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/index.d.ts +9 -0
- package/dist/libs/signstack/base/src/lib/validation/index.js +23 -0
- package/dist/libs/signstack/base/src/lib/validation/index.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.d.ts +3 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js +27 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.d.ts +57 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js +57 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.d.ts +38 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.js +146 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.d.ts +22 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js +69 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.d.ts +37 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js +250 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.d.ts +24 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js +98 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.d.ts +12 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js +50 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.d.ts +101 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js +998 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js.map +1 -0
- package/oclif.manifest.json +822 -0
- package/package.json +101 -0
package/README.md
ADDED
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
# signstack
|
|
2
|
+
|
|
3
|
+
Modern Sign CLI — command-line tool for managing SignStack document workflows. Validate, preview, push, and run document blueprints from your terminal.
|
|
4
|
+
|
|
5
|
+
Built with [oclif](https://oclif.io).
|
|
6
|
+
|
|
7
|
+
[](https://npmjs.org/package/@signstack/cli)
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
|
|
11
|
+
- Node.js >= 18.0.0
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g @signstack/cli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
This installs the `signstack` command globally.
|
|
20
|
+
|
|
21
|
+
Or use with npx:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx @signstack/cli <command>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 1. Authenticate
|
|
31
|
+
signstack auth login
|
|
32
|
+
|
|
33
|
+
# 2. Validate your YAML resources
|
|
34
|
+
signstack validate
|
|
35
|
+
|
|
36
|
+
# 3. Preview a blueprint
|
|
37
|
+
signstack preview my_blueprint@1.0.0
|
|
38
|
+
|
|
39
|
+
# 4. Push resources to the API
|
|
40
|
+
signstack push
|
|
41
|
+
|
|
42
|
+
# 5. Run a workflow
|
|
43
|
+
signstack run my_blueprint@1.0.0
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Shell Completions
|
|
47
|
+
|
|
48
|
+
Set up tab completions for your shell:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
signstack autocomplete
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Follow the printed instructions. Supports bash, zsh, and fish.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Commands
|
|
59
|
+
|
|
60
|
+
| Command | Description | Auth Required |
|
|
61
|
+
|---------|-------------|:---:|
|
|
62
|
+
| [`generate`](#generate) | Browse public blueprints or bootstrap a new project with AI tools | No |
|
|
63
|
+
| [`init`](#init) | Show how to use AI tools to generate contracts | No |
|
|
64
|
+
| [`auth login`](#auth-login) | Authenticate with an API key | No |
|
|
65
|
+
| [`auth logout`](#auth-logout) | Remove stored credentials | No |
|
|
66
|
+
| [`auth whoami`](#auth-whoami) | Show current user and config | No |
|
|
67
|
+
| [`validate`](#validate) | Validate YAML files with dependency analysis | No |
|
|
68
|
+
| [`push`](#push) | Push resources to the API | Yes |
|
|
69
|
+
| [`preview`](#preview) | Preview a blueprint or template as PDF | Yes |
|
|
70
|
+
| [`run`](#run) | Create and start a workflow | Yes |
|
|
71
|
+
| `help [COMMAND]` | Display help for a command | No |
|
|
72
|
+
| `update` | Update the CLI | No |
|
|
73
|
+
| `autocomplete` | Set up shell completions | No |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### `generate`
|
|
78
|
+
|
|
79
|
+
Bootstrap a new SignStack project. Browses public blueprints in the SignStack Library one page at a time (5 per page) and downloads the selected listing + all its dependencies as local YAML files. Pick **+ New** to print AI-tool instructions instead (Claude Code, Cursor, ChatGPT, Gemini).
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Browse the library interactively
|
|
83
|
+
signstack generate
|
|
84
|
+
|
|
85
|
+
# Download into a specific parent directory
|
|
86
|
+
signstack generate -o ./projects
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
No authentication required — the command uses the public library endpoints and only shows listings with `scope: public`.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### `init`
|
|
94
|
+
|
|
95
|
+
Show how to use AI tools (Claude Code, Cursor, ChatGPT, Gemini) to generate SignStack contracts from natural language descriptions.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
signstack init
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Prints a guide with the exact invocation for each AI tool and an example prompt.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### `auth login`
|
|
106
|
+
|
|
107
|
+
Authenticate with the SignStack API using an API key. Credentials are stored locally in a config file.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Interactive (recommended)
|
|
111
|
+
signstack auth login
|
|
112
|
+
|
|
113
|
+
# Via environment variable
|
|
114
|
+
SIGNSTACK_API_KEY=sk_ns_live_xxx signstack auth login
|
|
115
|
+
|
|
116
|
+
# Pipe from stdin (CI/scripts)
|
|
117
|
+
echo "$SIGNSTACK_API_KEY" | signstack auth login --api-key-stdin
|
|
118
|
+
|
|
119
|
+
# Custom API endpoint
|
|
120
|
+
signstack auth login --api-url https://api.custom.io
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
| Flag | Short | Description |
|
|
124
|
+
|------|-------|-------------|
|
|
125
|
+
| `--api-key` | `-k` | API key (insecure — prefer interactive or stdin). Also reads `SIGNSTACK_API_KEY` env var. |
|
|
126
|
+
| `--api-key-stdin` | | Read API key from stdin |
|
|
127
|
+
| `--api-url` | `-u` | API URL (default: production). Also reads `SIGNSTACK_API_URL` env var. |
|
|
128
|
+
| `--force` | `-f` | Force login even if already logged in |
|
|
129
|
+
| `--json` | | Output in JSON format |
|
|
130
|
+
|
|
131
|
+
**API key format:** `sk_{namespace}_{live|test}_{publicKey}_{secret}`
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### `auth logout`
|
|
136
|
+
|
|
137
|
+
Remove stored credentials.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
signstack auth logout
|
|
141
|
+
signstack auth logout --force # Skip confirmation
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
| Flag | Short | Description |
|
|
145
|
+
|------|-------|-------------|
|
|
146
|
+
| `--force` | `-f` | Skip confirmation prompt |
|
|
147
|
+
| `--json` | | Output in JSON format |
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### `auth whoami`
|
|
152
|
+
|
|
153
|
+
Display the current authenticated user and configuration.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
signstack auth whoami
|
|
157
|
+
signstack auth whoami --json
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
| Flag | Description |
|
|
161
|
+
|------|-------------|
|
|
162
|
+
| `--json` | Output in JSON format |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### `validate`
|
|
167
|
+
|
|
168
|
+
Validate YAML resource files against SignStack JSON schemas. When given a folder, builds a dependency graph and validates in topological order (leaf nodes first).
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Validate all YAML files in current directory
|
|
172
|
+
signstack validate
|
|
173
|
+
|
|
174
|
+
# Validate a specific folder
|
|
175
|
+
signstack validate ./my-project
|
|
176
|
+
|
|
177
|
+
# Validate a single file
|
|
178
|
+
signstack validate template.yaml
|
|
179
|
+
|
|
180
|
+
# Validate with glob pattern
|
|
181
|
+
signstack validate "schemas/**/*.yaml"
|
|
182
|
+
|
|
183
|
+
# Force a specific schema type
|
|
184
|
+
signstack validate my-file.yaml --schema blueprint
|
|
185
|
+
|
|
186
|
+
# Skip dependency analysis (faster)
|
|
187
|
+
signstack validate --no-deps
|
|
188
|
+
|
|
189
|
+
# Verbose output with graph stats
|
|
190
|
+
signstack validate --verbose
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
| Arg/Flag | Short | Description |
|
|
194
|
+
|----------|-------|-------------|
|
|
195
|
+
| `PATH` (arg) | | Folder, file, or glob pattern (default: `.`) |
|
|
196
|
+
| `--schema` | `-s` | Force schema type: `schema`, `template`, `asset`, `blueprint`, `jsonata-function` (auto-detected from `kind` field if omitted) |
|
|
197
|
+
| `--verbose` | `-v` | Detailed output including dependency graph stats |
|
|
198
|
+
| `--no-deps` | | Skip dependency ordering and validation |
|
|
199
|
+
| `--json` | | Output in JSON format |
|
|
200
|
+
|
|
201
|
+
**Auto-detection:** The `kind` field in your YAML file determines which schema is used. You only need `--schema` if auto-detection fails.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### `push`
|
|
206
|
+
|
|
207
|
+
Push resources to the API. Validates all files first, then creates resources in dependency order (leaf nodes first).
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Push from current directory
|
|
211
|
+
signstack push
|
|
212
|
+
|
|
213
|
+
# Push from a specific folder
|
|
214
|
+
signstack push ./my-project
|
|
215
|
+
|
|
216
|
+
# Dry run — see what would be pushed
|
|
217
|
+
signstack push --dry-run
|
|
218
|
+
|
|
219
|
+
# Verbose output
|
|
220
|
+
signstack push --verbose
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
| Arg/Flag | Short | Description |
|
|
224
|
+
|----------|-------|-------------|
|
|
225
|
+
| `PATH` (arg) | | Folder containing YAML files (default: `.`) |
|
|
226
|
+
| `--dry-run` | | Show what would be pushed without calling the API |
|
|
227
|
+
| `--verbose` | `-v` | Detailed output |
|
|
228
|
+
| `--json` | | Output in JSON format |
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
### `preview`
|
|
233
|
+
|
|
234
|
+
Preview a blueprint or template and get signed PDF URL(s). By default, resolves resources from local YAML files first, falling back to the API for anything not found locally.
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# Preview with version
|
|
238
|
+
signstack preview my_blueprint@1.0.0
|
|
239
|
+
|
|
240
|
+
# Preview latest local version (no version = highest version in local files)
|
|
241
|
+
signstack preview my_blueprint
|
|
242
|
+
|
|
243
|
+
# Preview a single template instead of a blueprint
|
|
244
|
+
signstack preview --template my_template@1.0.0
|
|
245
|
+
|
|
246
|
+
# Use a specific scenario
|
|
247
|
+
signstack preview my_blueprint@1.0.0 --scenario onboarding_scenario
|
|
248
|
+
|
|
249
|
+
# List available scenarios
|
|
250
|
+
signstack preview --list-scenarios
|
|
251
|
+
|
|
252
|
+
# Use files from a different folder
|
|
253
|
+
signstack preview my_blueprint@1.0.0 -p ./other-project
|
|
254
|
+
|
|
255
|
+
# Strict local — fail if any resource is missing locally
|
|
256
|
+
signstack preview my_blueprint@1.0.0 --resolve local
|
|
257
|
+
|
|
258
|
+
# Strict remote — skip local files entirely
|
|
259
|
+
signstack preview my_blueprint@1.0.0 --resolve remote
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
| Arg/Flag | Short | Description |
|
|
263
|
+
|----------|-------|-------------|
|
|
264
|
+
| `BLUEPRINT` (arg) | | Blueprint reference as `key@version` or `key` |
|
|
265
|
+
| `--template` | `-t` | Template reference (instead of blueprint) |
|
|
266
|
+
| `--path` | `-p` | Folder with YAML resource files (default: `.`) |
|
|
267
|
+
| `--resolve` | `-r` | Resolution strategy: `local`, `remote`, `auto` (see below) |
|
|
268
|
+
| `--scenario` | `-s` | Scenario key for entity data |
|
|
269
|
+
| `--list-scenarios` | `-l` | List available scenarios |
|
|
270
|
+
| `--skip-signature-fields` | | Disable dummy signatures/initials/auto-dates |
|
|
271
|
+
| `--json` | | Output in JSON format |
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
### `run`
|
|
276
|
+
|
|
277
|
+
Create and start a workflow from a blueprint. Same resource resolution as `preview`.
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# Run with version
|
|
281
|
+
signstack run my_blueprint@1.0.0
|
|
282
|
+
|
|
283
|
+
# Run latest local version
|
|
284
|
+
signstack run my_blueprint
|
|
285
|
+
|
|
286
|
+
# Run in review mode
|
|
287
|
+
signstack run my_blueprint@1.0.0 --mode Review
|
|
288
|
+
|
|
289
|
+
# With a specific scenario
|
|
290
|
+
signstack run my_blueprint@1.0.0 --scenario onboarding_scenario
|
|
291
|
+
|
|
292
|
+
# Strict local
|
|
293
|
+
signstack run my_blueprint@1.0.0 --resolve local
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
| Arg/Flag | Short | Description |
|
|
297
|
+
|----------|-------|-------------|
|
|
298
|
+
| `BLUEPRINT` (arg) | | Blueprint reference as `key@version` or `key` |
|
|
299
|
+
| `--path` | `-p` | Folder with YAML resource files (default: `.`) |
|
|
300
|
+
| `--resolve` | `-r` | Resolution strategy: `local`, `remote`, `auto` (see below) |
|
|
301
|
+
| `--scenario` | `-s` | Scenario key for entity data |
|
|
302
|
+
| `--mode` | `-m` | Workflow mode: `Run` (default) or `Review` |
|
|
303
|
+
| `--json` | | Output in JSON format |
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Resource Resolution (`--resolve`)
|
|
308
|
+
|
|
309
|
+
The `preview` and `run` commands resolve resources (templates, assets, schemas) using a configurable strategy:
|
|
310
|
+
|
|
311
|
+
| Mode | Behavior |
|
|
312
|
+
|------|----------|
|
|
313
|
+
| *(default)* | Hybrid — local files first, API fallback for missing resources |
|
|
314
|
+
| `local` | Strict local — all resources must exist in your YAML files. Fails if anything is missing. |
|
|
315
|
+
| `remote` | Strict remote — ignores local files, resolves everything from the API. |
|
|
316
|
+
| `auto` | Same as default (hybrid). Explicit alias. |
|
|
317
|
+
|
|
318
|
+
**Version resolution:** When you omit the version (e.g., `signstack preview my_blueprint`), the CLI finds the highest version in your local files. If no local files exist, it falls back to the API.
|
|
319
|
+
|
|
320
|
+
**Default path:** Both commands look for YAML files in the current directory (`.`) by default. Use `-p` to point elsewhere.
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Resource Types
|
|
325
|
+
|
|
326
|
+
SignStack YAML files use a `kind` field to declare their type:
|
|
327
|
+
|
|
328
|
+
| Kind | Description |
|
|
329
|
+
|------|-------------|
|
|
330
|
+
| `Schema` | JSON Schema definitions for validating entity data |
|
|
331
|
+
| `Template` | Document templates (HTML/Handlebars → PDF) with dependencies |
|
|
332
|
+
| `Asset` | Static files — CSS stylesheets, images, HTML partials, PDF forms |
|
|
333
|
+
| `Blueprint` | Workflow definitions that compose templates, schemas, and signing steps |
|
|
334
|
+
| `JsonataFunction` | Reusable JSONata transformation functions |
|
|
335
|
+
|
|
336
|
+
### Reference Format
|
|
337
|
+
|
|
338
|
+
Resources reference each other using `key@version`:
|
|
339
|
+
|
|
340
|
+
```yaml
|
|
341
|
+
# In a blueprint
|
|
342
|
+
templates:
|
|
343
|
+
- key: offer_letter
|
|
344
|
+
version: 1.0.0
|
|
345
|
+
|
|
346
|
+
# In a template
|
|
347
|
+
dependencies:
|
|
348
|
+
- kind: Asset
|
|
349
|
+
key: company_logo
|
|
350
|
+
version: 1.0.0
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Project Structure
|
|
356
|
+
|
|
357
|
+
A typical project folder looks like this:
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
my-project/
|
|
361
|
+
├── blueprint.yaml # Blueprint definition
|
|
362
|
+
├── schema.yaml # Data schema(s)
|
|
363
|
+
├── template.yaml # Template definition(s)
|
|
364
|
+
├── asset.yaml # Asset declaration(s)
|
|
365
|
+
├── html/
|
|
366
|
+
│ └── offer_letter.hbs # Handlebars template file
|
|
367
|
+
├── styles/
|
|
368
|
+
│ └── main.css # CSS stylesheet
|
|
369
|
+
├── images/
|
|
370
|
+
│ └── logo.png # Image assets
|
|
371
|
+
├── partials/
|
|
372
|
+
│ └── footer.hbs # Handlebars partials
|
|
373
|
+
└── scenarios/
|
|
374
|
+
└── test_data.json # Test entity data for preview/run
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Multi-document YAML files are supported — you can put multiple resources in a single `.yaml` file separated by `---`.
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## Global Flags
|
|
382
|
+
|
|
383
|
+
These flags are available on every command:
|
|
384
|
+
|
|
385
|
+
| Flag | Description |
|
|
386
|
+
|------|-------------|
|
|
387
|
+
| `--json` | Output in JSON format (for scripting and CI) |
|
|
388
|
+
| `--help` | Show help for any command |
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## Environment Variables
|
|
393
|
+
|
|
394
|
+
| Variable | Description |
|
|
395
|
+
|----------|-------------|
|
|
396
|
+
| `SIGNSTACK_API_KEY` | API key for `auth login` (avoids interactive prompt) |
|
|
397
|
+
| `SIGNSTACK_API_URL` | Override the API URL |
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## CI/CD Usage
|
|
402
|
+
|
|
403
|
+
All commands support `--json` for machine-readable output. Combine with `--api-key-stdin` for secure authentication:
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# Login
|
|
407
|
+
echo "$SIGNSTACK_API_KEY" | signstack auth login --api-key-stdin
|
|
408
|
+
|
|
409
|
+
# Validate
|
|
410
|
+
signstack validate ./resources --json
|
|
411
|
+
|
|
412
|
+
# Push (with dry-run check first)
|
|
413
|
+
signstack push ./resources --dry-run --json
|
|
414
|
+
signstack push ./resources --json
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
## Development
|
|
420
|
+
|
|
421
|
+
### Building the CLI
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
# From the monorepo root
|
|
425
|
+
npm run cli:build
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Running Validation on Examples
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
npm run signstack:validate -- ./apps/signstack-cli/schemas/examples
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
### Running Locally (Without Installing)
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
# From the monorepo root, after building
|
|
438
|
+
node apps/signstack-cli/bin/run.js <command>
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## Troubleshooting
|
|
444
|
+
|
|
445
|
+
| Problem | Solution |
|
|
446
|
+
|---------|----------|
|
|
447
|
+
| `Not logged in` | Run `signstack auth login` |
|
|
448
|
+
| `Configuration is corrupted` | Run `signstack auth logout` then `signstack auth login` |
|
|
449
|
+
| `Session expired` | Tokens auto-refresh. If persists, re-login. |
|
|
450
|
+
| `Invalid API key format` | Key must match `sk_{ns}_{live\|test}_{public}_{secret}` |
|
|
451
|
+
| `Permission denied (403)` | Your API key may lack required scopes |
|
|
452
|
+
| `Rate limit exceeded (429)` | Wait and retry |
|
|
453
|
+
| Validation fails on dependencies | Check `key@version` references match across files |
|
|
454
|
+
| Circular dependency detected | Remove circular references between resources |
|
|
455
|
+
|
|
456
|
+
## License
|
|
457
|
+
|
|
458
|
+
MIT
|
package/bin/run.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// @common/base and @signstack/base are shipped inside this package's
|
|
4
|
+
// node_modules (see "bundledDependencies"), so they resolve via normal
|
|
5
|
+
// Node module resolution — no path-alias registration needed.
|
|
6
|
+
|
|
7
|
+
async function main() {
|
|
8
|
+
const { execute } = await import('@oclif/core');
|
|
9
|
+
await execute({ dir: import.meta.url });
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
await main();
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://signstack.ai/schemas/asset/v1beta2",
|
|
4
|
+
"title": "SignStack Asset",
|
|
5
|
+
"description": "An Asset wraps a file (PDF, HTML, image, CSS) for use in templates. HTML Assets can reference other Assets for partials, styles, and images. All references are versioned (key@version). Each Asset version is immutable.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["apiVersion", "kind", "metadata", "spec"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"apiVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"const": "signstack/v1beta2",
|
|
13
|
+
"description": "API version for the asset schema"
|
|
14
|
+
},
|
|
15
|
+
"kind": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"const": "Asset",
|
|
18
|
+
"description": "Resource type identifier"
|
|
19
|
+
},
|
|
20
|
+
"metadata": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"required": ["key", "version", "name"],
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"properties": {
|
|
25
|
+
"key": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*$",
|
|
28
|
+
"description": "Unique identifier for the asset (snake_case)",
|
|
29
|
+
"examples": ["company_logo", "offer_letter", "corporate_theme"]
|
|
30
|
+
},
|
|
31
|
+
"version": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$",
|
|
34
|
+
"description": "Semantic version (e.g., 1.0.0)"
|
|
35
|
+
},
|
|
36
|
+
"name": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1,
|
|
39
|
+
"maxLength": 200,
|
|
40
|
+
"description": "Human-readable name for the asset"
|
|
41
|
+
},
|
|
42
|
+
"description": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"minLength": 1,
|
|
45
|
+
"maxLength": 1000,
|
|
46
|
+
"description": "Description of the asset"
|
|
47
|
+
},
|
|
48
|
+
"labels": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"propertyNames": {
|
|
51
|
+
"pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*$"
|
|
52
|
+
},
|
|
53
|
+
"additionalProperties": { "type": "string" },
|
|
54
|
+
"description": "Key-value labels for categorization"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"spec": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": ["type"],
|
|
61
|
+
"additionalProperties": false,
|
|
62
|
+
"description": "Asset specification. HTML assets can reference other versioned assets for dependencies. Use 'file' for file-based assets or 'content' for inline HTML/CSS.",
|
|
63
|
+
"properties": {
|
|
64
|
+
"type": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"enum": ["pdf", "html", "image", "css"],
|
|
67
|
+
"description": "Asset type"
|
|
68
|
+
},
|
|
69
|
+
"file": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"description": "Relative path to the asset file",
|
|
72
|
+
"examples": [
|
|
73
|
+
"./offer_letter.html",
|
|
74
|
+
"./document.pdf",
|
|
75
|
+
"./logo.png",
|
|
76
|
+
"./theme.css"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"fileId": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"pattern": "^f_[0-9a-z]{26}$",
|
|
82
|
+
"description": "Uploaded file identifier (used by API for PDF/image assets)"
|
|
83
|
+
},
|
|
84
|
+
"content": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "Inline content for html or css assets. Use this instead of 'file' when providing content directly."
|
|
87
|
+
},
|
|
88
|
+
"partials": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"additionalProperties": {
|
|
91
|
+
"oneOf": [
|
|
92
|
+
{
|
|
93
|
+
"type": "string",
|
|
94
|
+
"pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"type": "object",
|
|
98
|
+
"required": ["asset"],
|
|
99
|
+
"additionalProperties": false,
|
|
100
|
+
"properties": {
|
|
101
|
+
"asset": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$",
|
|
104
|
+
"description": "Asset reference (key@version)"
|
|
105
|
+
},
|
|
106
|
+
"roleMap": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"additionalProperties": {
|
|
109
|
+
"type": "string"
|
|
110
|
+
},
|
|
111
|
+
"description": "Maps roles defined in the partial to roles in the parent context"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"description": "Handlebars partials. Keys are partial names used in {{> name}}. Values can be a simple asset reference (key@version) or an object with asset and roleMap."
|
|
118
|
+
},
|
|
119
|
+
"styles": {
|
|
120
|
+
"type": "array",
|
|
121
|
+
"items": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$"
|
|
124
|
+
},
|
|
125
|
+
"description": "CSS asset references (key@version). Order matters for cascading."
|
|
126
|
+
},
|
|
127
|
+
"images": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"additionalProperties": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$"
|
|
132
|
+
},
|
|
133
|
+
"description": "Image asset references. Keys are names used in HTML, values are asset references (key@version)."
|
|
134
|
+
},
|
|
135
|
+
"data": {
|
|
136
|
+
"type": "object",
|
|
137
|
+
"additionalProperties": false,
|
|
138
|
+
"description": "Data configuration for HTML assets",
|
|
139
|
+
"properties": {
|
|
140
|
+
"schema": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$",
|
|
143
|
+
"description": "Schema defining the data context this HTML expects (key@version). Required for HTML assets. Partials can use the same schema as parent for implicit inheritance."
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"required": ["schema"]
|
|
147
|
+
},
|
|
148
|
+
"pdfSettings": {
|
|
149
|
+
"type": "object",
|
|
150
|
+
"additionalProperties": false,
|
|
151
|
+
"description": "PDF rendering settings for HTML assets",
|
|
152
|
+
"properties": {
|
|
153
|
+
"paperSize": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"enum": ["Letter", "Legal", "A4", "A3"],
|
|
156
|
+
"default": "Letter",
|
|
157
|
+
"description": "Paper size for PDF output"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"allOf": [
|
|
163
|
+
{
|
|
164
|
+
"if": { "properties": { "type": { "const": "pdf" } } },
|
|
165
|
+
"then": {
|
|
166
|
+
"anyOf": [
|
|
167
|
+
{
|
|
168
|
+
"required": ["file"],
|
|
169
|
+
"properties": {
|
|
170
|
+
"file": { "pattern": "\\.(pdf)$" }
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
{ "required": ["fileId"] }
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"if": { "properties": { "type": { "const": "html" } } },
|
|
179
|
+
"then": {
|
|
180
|
+
"anyOf": [
|
|
181
|
+
{
|
|
182
|
+
"required": ["file"],
|
|
183
|
+
"properties": {
|
|
184
|
+
"file": { "pattern": "\\.(html|hbs|handlebars)$" }
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
{ "required": ["content"] }
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"if": { "properties": { "type": { "const": "image" } } },
|
|
193
|
+
"then": {
|
|
194
|
+
"anyOf": [
|
|
195
|
+
{
|
|
196
|
+
"required": ["file"],
|
|
197
|
+
"properties": {
|
|
198
|
+
"file": { "pattern": "\\.(png|jpg|jpeg|gif|svg|webp)$" }
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{ "required": ["fileId"] }
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"if": { "properties": { "type": { "const": "css" } } },
|
|
207
|
+
"then": {
|
|
208
|
+
"anyOf": [
|
|
209
|
+
{
|
|
210
|
+
"required": ["file"],
|
|
211
|
+
"properties": { "file": { "pattern": "\\.(css)$" } }
|
|
212
|
+
},
|
|
213
|
+
{ "required": ["content"] }
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|