Overview
Usingfcproject.yaml, you can:
- Design your project topology (schemas, messages, servers, resources, apps) in a single file.
- Validate entity names, uniqueness, and cross-references before provisioning.
- Import definitions into Fusioncat to automatically create or update artifacts.
- Export your live project state (with UUIDs) for backup, code generation, or migration.
- Bundle builds (predefined object sets and versions) into portable, attachable manifests.
File structure
Top-Level Fields
versionInteger indicating the fcproject file format version. Incremented when YAML structure or validation rules change.export_parameters(export only) Controls which parts of the project are included when exporting. Each boolean flag toggles inclusion of that section in the output YAML.include_export_parameters: if true, the export_parameters block itself appears in the exported file.servers / apps / messages / schemas: include the corresponding top‑level lists.include_only_latest_schema_versions: when true, only the highest-numbered version for each schema is exported.include_only_schemas_used_in_messages: when true, export only schemas referenced by messages.include_descriptions: include description fields for entities throughout the export.
serversA list of server blocks. Each server must have:name: unique within the project.type: protocol identifier (async+kafka, async+amqp, async+webhook, etc.).description: human-readable label.resources: array of resources (topics, queues, exchanges, endpoints).binds(optional): AMQP-specific bindings linking exchanges to queues.- Resource fields:
name: unique under this server.mode: one of read, write, readwrite, or bind.type: resource kind (topic, queue, exchange, endpoint, table).description: free-form text.
schemasA list of schema definitions. Each schema block includes:name: unique identifier.type: currently only jsonschema.version: sequential integer, starting at 1.description: optional summary.schema: the JSONSchema document as a string, orexample: a JSON instance conforming to the schema.
messagesA list of message definitions. Each message has:name: unique within project.description: what the message conveys.schema: a nested block referencingname: schema nameversion: optional (defaults to the latest version).
appsA list of application definitions. Each application block contains:name: unique identifier.description: application purpose.receives(optional): array of [ message, resource ] pairs the app consumes.sends(optional): array of [ message, resource ] pairs the app produces.
Key Rules & Conventions
- Uniqueness: All
namefields (servers, resources, schemas, messages, apps) must be unique within a single project. They can contan latin alphabet leters, digits and _ symbol. - UUID Assignment:
- Imported definitions lack UUIDs.
- Exported or live entities always include a uuid property.
- Presence of a UUID means the resource already exists in its target server.
- Scoped Definitions:
- All resources, schemas, messages, and apps defined in fcproject.yaml must belong to the same project.