Skip to main content

Overview

Using fcproject.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

  • version Integer 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.
  • servers A 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.
  • schemas A 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, or
    • example: a JSON instance conforming to the schema.
  • messages A list of message definitions. Each message has:
    • name: unique within project.
    • description: what the message conveys.
    • schema: a nested block referencing
      • name: schema name
      • version: optional (defaults to the latest version).
  • apps A 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 name fields (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.

Example snippet