Skip to content

Blueprints

A blueprint is the schema for a type of catalog entity: its properties (typed, with enums, formats, colors) and its relations to other blueprints. Everything you see in the catalog is an entity of some blueprint.

The data model view

Admin → Data model shows all blueprints and their relations as a graph (the demo has 20+ blueprints, most provisioned automatically by the Ocean exporters):

Data model graph

Click + Blueprint to create one in the UI, or create it via API as shown below.

Example 1 — the service blueprint

The demo's service blueprint (GitLab projects are mapped into it by the ingestion):

json
{
  "identifier": "service",
  "title": "Service",
  "icon": "GitLab",
  "schema": {
    "required": [],
    "properties": {
      "url": { "icon": "Link", "type": "string", "title": "URL", "format": "url" },
      "tier": {
        "enum": ["Mission Critical", "Customer Facing", "Internal Service", "Other"],
        "type": "string",
        "title": "Tier",
        "enumColors": {
          "Mission Critical": "turquoise",
          "Customer Facing": "green",
          "Internal Service": "darkGray",
          "Other": "yellow"
        },
        "description": "How mission-critical the service is"
      },
      "readme": { "icon": "Book", "type": "string", "title": "README", "format": "markdown" },
      "language": { "icon": "Git", "type": "string", "title": "Language" },
      "codeowners": { "type": "string", "title": "CODEOWNERS", "format": "markdown" }
    }
  },
  "relations": {}
}

Example 2 — the deployment blueprint

This is the blueprint your self-service workflows will write into (Part 4). Create it exactly like this:

json
{
  "identifier": "deployment",
  "title": "Deployment",
  "icon": "LucideRocket",
  "schema": {
    "required": [],
    "properties": {
      "url": { "type": "string", "title": "Run link", "format": "url" },
      "status": { "type": "string", "title": "Status" },
      "version": { "type": "string", "title": "Version" },
      "provider": { "enum": ["github", "gitlab", "mixed"], "type": "string", "title": "Provider" },
      "services": { "type": "array", "title": "Services" },
      "workflow": { "type": "string", "title": "Workflow" },
      "environment": { "enum": ["dev", "staging", "prod"], "type": "string", "title": "Environment" },
      "triggeredBy": { "type": "string", "title": "Triggered by" }
    }
  },
  "relations": {}
}

Creating blueprints via API

bash
curl -X POST "https://<your-idp-domain>/api/v1/blueprints" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d @deployment-blueprint.json

Property types cheat sheet

  • type: string, number, boolean, array, object
  • format (for strings): url, markdown, email, date-time
  • enum + enumColors: dropdown values rendered as colored badges
  • relations: { "team": { "target": "team", "many": false } } links entities together — related entities appear on the entity page and in the data model graph

Relations need existing targets

If an entity is created before the entity its relation points to, the relation is silently skipped. Re-run the sync (or PATCH the entity) once the target exists.

Next: organize the catalog with pages →

IDP Next — Internal Developer Platform