vela pull fetches all schemas for your app from the Vela API and writes them as local JSON files. Server-only fields (id, appId, createdAt, updatedAt) are stripped so the files match the expected local format.
Usage
Example output
i Fetching schemas for app "order-service"...
✓ Pulled order.placed → vela/schemas/order.placed.json
✓ Pulled payment.failed → vela/schemas/payment.failed.json
✓ Pulled user.signed-up → vela/schemas/user.signed-up.json
i Pulled 3 schema(s) to ./vela/schemas
What happens step by step
- Connects to the Vela API and fetches all schemas for your app
- Writes each schema to
{schemasDir}/{eventName}.json
- Strips server-generated fields (
id, appId, createdAt, updatedAt) so files are clean and pushable
- Creates the schemas directory if it doesn’t exist yet
- Overwrites existing local files — uncommitted local changes are lost
vela pull overwrites existing local files without a prompt. If you have unsaved local changes, commit or stash them before pulling.
When to use pull
First-time setup — if schemas already exist in the dashboard (created manually or by another team member), pull them before you start editing locally:
mkdir -p vela/schemas
vela pull
git add vela/schemas/
git commit -m "chore: pull initial schemas from Vela"
After dashboard edits — if someone modified a schema in the dashboard directly, pull to bring local files back in sync before the next push:
vela pull
git diff vela/schemas/ # review what changed
git add -p vela/schemas/ # stage selectively
git commit -m "sync: pull schema changes from dashboard"
Onboarding a new developer — instead of manually creating schema files, pull directly from the remote app:
git clone https://github.com/your-org/your-service
cd your-service
cp .env.sample .env && vim .env # set VELA_CLIENT_SECRET
vela pull # get schemas from remote
Options
| Flag | Description |
|---|
--app <slug> | Override the app slug from vela.config.json |
--dir <path> | Override the schemas directory path |
# Pull from a specific app
vela pull --app order-service-production
# Write to a custom directory
vela pull --dir ./src/events/schemas
The pulled files match the format expected by vela push. A pulled order.placed.json looks like:
{
"eventName": "order.placed",
"description": "Fired when a customer completes checkout",
"fields": [
{ "id": "f1", "name": "orderId", "type": "string", "required": true },
{ "id": "f2", "name": "amountCents", "type": "number", "required": true },
{ "id": "f3", "name": "currency", "type": "enum", "required": true,
"enumValues": ["USD", "EUR", "GBP"] }
]
}
You can edit this file and push it back without any format changes.