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.
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.
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
Last updated
Was this helpful?