Autogenerated forms from catalog schemas
When creating new entities in nullplatform—like a namespace, application, or release—you can attach catalog specifications that automatically generate UI forms.
These forms are built directly from your JSON Schema definitions, with validations, field types, and layout inferred automatically.
This allows teams to standardize input fields, enforce rules, and improve data quality without writing any custom frontend code.
How it works
- You create a catalog specification with a valid JSON Schema.
- When a user goes to create a new entity (e.g.,
/namespace/new
), nullplatform scans for active specs for that entity type. - It builds a form dynamically, using your schema rules for:
- Field type (string, enum, array, object, and so on)
- Validation (required, min/max, format)
- Read-only / optional fields
- The filled-in data is saved as metadata for the entity.
You can define multiple catalog specifications per entity, and each will generate a separate form section.
Supported entity types
You can autogenerate forms for:
namespace
application
release
Each entity will check for relevant catalog specs and render the forms during the creation process.
Example: Create two forms for a namespace
1. Short description (single string)
{
"entity": "namespace",
"metadata": "description",
"nrn": "organization=123",
"name": "Brief description of namespace",
"schema": {
"type": "string"
}
}
Generates a single-line input field.
2. General info (complex object with arrays, enums, etc.)
{
"entity": "namespace",
"metadata": "general",
"nrn": "organization=1255165411",
"name": "Some information about the namespace",
"schema": {
"type": "object",
"properties": {
"country": {
"type": "array",
"description": "Where this project will be worked",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1,
"description": "A country in ISO format"
}
},
"platform": {
"type": "array",
"description": "Our available platforms are `microservice`, `web`, `mobile`, `other`",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"channel": {
"type": "string",
"description": "Our available channels are `all`, `engineer`, `others`"
},
"maintainers": {
"type": "array",
"description": "Main maintainers of the project",
"minItems": 1,
"items": {
"type": "string"
}
},
"internalNumbers": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
}
}
}
What the UI looks like
- Each specification appears in its own form section
- Fields follow your schema types and rules
- Validation is automatic — required fields, enum options, length, format, etc.
Namespace creation with catalog-driven form

Validation errors on required fields
If users submit invalid or incomplete data based on your schema, the UI will block submission and show validation errors:
