Blueprints

Every entity in Rely is associated with a blueprint that defines the entity's type. Like entities, every blueprint can be represented as a JSON file called a blueprint descriptor.

In Rely.io, blueprints are schemas that outline the structure and attributes of entities such as services or resources. They provide a customizable framework for documenting and managing your software ecosystem, while entities serve as specific instances within this framework.

Blueprint ID

The blueprint ID is a unique identifier that's used throughout Rely.io to declare dependencies to other blueprints or look-up information. The blueprint ID must be globally unique across all blueprints.

An blueprint ID is usually the very first field in the JSON representation of a Rely.io blueprint.

Blueprint Descriptor

Regardless of whether you're using UI editing or GitOps to manage your blueprints, the definitions are backed by JSON files that's a fully compliant OpenAPI 3 spec file, with our own specific extensions.

You can still use Rely even if you don't use OpenAPI/Swagger.

We use the OpenAPI specification as a base for entity and blueprint data, since it's an open spec with official support for extensions. That lets us extend it to be an entity or blueprint descriptor spec with optional usage of actual OpenAPI fields.

All blueprints have two other metadata fields besides the blueprint id:

  • Name: A user-friendly display name.

  • Description (Optional): A concise overview of the blueprint for further context.

A blueprint descriptor also contains all relevant data that makes up the entity itself which might envolve:

  • Properties: These indicate the type of data that properties in entities created from this blueprint can hold. Properties have an id, title and description of their own.

  • Relations: These indicate how entities created from this blueprint can be connected with other entities in Rely. Relations have an id, title and description of their own as well as a target blueprint. Relations can be both 1:1 or 1:many.

Example Service Blueprint

{
  "id": "service",
  "title": "Service",
  "description": "Representation of a service ",
  "icon": "terminal",
  "schemaProperties": {
    "type": "object",
    "properties": {
      "handles-pii": {
        "type": "boolean",
        "title": "Handles PII",
        "description": ""
      },
      "unit-tests-coverage": {
        "type": "number",
        "title": "Unit Tests Coverage",
        "description": ""
      },
      "helm-version": {
        "type": "string",
        "title": "Helm Chart Version",
        "description": ""
      },
      "lifecycle": {
        "enum": [
          "Production",
          "Experimental",
          "Deprecated"
        ],
        "type": "string",
        "title": "Lifecycle",
        "description": ""
      },
      "github-url": {
        "type": "string",
        "title": "Repo URL",
        "format": "url",
        "description": ""
      },
      "code-owners": {
        "type": "array",
        "title": "Code Owners",
        "items": {
          "type": "string"
        },
        "description": ""
      },
      "helmchartyaml": {
        "type": "string",
        "title": "Helm Chart",
        "format": "yaml",
        "description": ""
      },
      "readme-content": {
        "type": "string",
        "title": "README ",
        "format": "markdown",
        "description": ""
      }
    }
  },
  "relations": {
    "team": {
      "array": false,
      "title": "Team",
      "value": "team",
      "description": ""
    },
    "internal-dependencies": {
      "array": true,
      "title": "Dependencies",
      "value": "service",
      "description": ""
    },
    "running-instances": {
      "array": true,
      "title": "Running Instances",
      "value": "running-service",
      "description": ""
    }
  },
  "referenceProperties": {},
  "options": {
    "showInSideBar": true
  }
}

Learn More

Blueprint Actions
Blueprint Actions

Last updated