# Inspecting schemas

The `dcupl schemas` family is the discovery and escape-hatch tool for the CLI: when you are unsure what fields a `ModelDefinition`, a loader config, or a `TemplateV3` workflow takes, list the built-in schemas, print any of them — optionally with a curated example payload, where one ships — and validate a JSON file against one.

## Commands

| Command                                          | Description                                                                                    |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------- |
| `dcupl schemas list`                             | List all built-in dcupl schemas (models, loader, workflows, workflow nodes, CLI config).       |
| `dcupl schemas get <name>`                       | Print the schema source for `<name>`.                                                          |
| `dcupl schemas get <name> --example`             | Print the schema source, then append a curated example payload (11 schemas ship one).          |
| `dcupl schemas validate <file> --against <name>` | Validate a JSON file against a `[Zod]` schema (e.g. `TemplateV3`); exits 1 when it is invalid. |

| Flag        | Description                                                                                                               |
| ----------- | ------------------------------------------------------------------------------------------------------------------------- |
| `--example` | Append a curated example payload after the schema, for the schemas that ship one (see [Print a schema](#print-a-schema)). |

## List available schemas

Start by listing every built-in schema to find the exact name you need:

```bash title="List all schemas"
dcupl schemas list
```

The output groups schemas by category. This abridged sample shows the kind of names you'll see — the real list is longer:

```text title="dcupl schemas list (abridged)"
Models:
  ModelDefinition
  ...
Loader:
  AppLoaderConfiguration
Workflows:
  TemplateV3
  ...
Workflow Nodes:
  ...
CLI Config:
  DcuplCliConfig
```

Each entry is tagged with its type (`[TS]` / `[Zod]`), source package, and a one-line description in the full output.

## Print a schema

Pass a schema name to print its source. Add `--example` to also get a concrete payload you can adapt:

```bash title="Print a schema with an example"
dcupl schemas get ModelDefinition --example
```

Examples ship for `ModelDefinition`, `AttributeQualityConfig`, `AppLoaderConfiguration`, `WorkflowConfigV3`, `TemplateV3` and `RestApiTemplate` (alias `rest-api-template`, the REST API template `api/<key>.api.json`), and for the `TriggerRequestConfig`, `RequestStepConfig`, `ScriptStepConfig`, `DataMapperStepConfig` and `ResponseScriptConfig` node configs. For the other schemas, `--example` prints the source only and the `--json` result has no `example` field.

> **Note:** `dcupl schemas get <name> --example` is the fastest way to learn a schema's exact field names without guessing — no docs lookup required.

## Scaffold a workflow template

In plain output, `get --example` prints the schema source first and the example after it, so redirecting it gives you a file that is not JSON. With `--json`, the example is a separate `example` field: extract it to bootstrap a config. This scaffolds a workflow template (format version 3) from the `TemplateV3` example and checks it:

```bash title="Scaffold a workflow template"
dcupl schemas get TemplateV3 --example --json | jq -r .example > my.workflow-v3.json
dcupl schemas validate my.workflow-v3.json --against TemplateV3
```

`dcupl generate workflow --name my-workflow` is the other way to start: it writes a complete template from a preset to `dcupl/workflows/my-workflow.workflow-v3.json` (in your `baseFolder`, default `dcupl/`, which `dcupl files push` syncs). Edit the file, then validate and deploy it with the [workflow commands](/cli/workflows).

## Next steps

- [Workflows](/cli/workflows) — Validate, deploy, and trace the templates you scaffold
- [Scaffolding](/cli/scaffolding) — Generate models, types, and tests
- [Commands Reference](/cli/commands) — Every command family at a glance
