{
  "format": "cadastre-model",
  "version": 2,
  "cadastre": "0.1.0",
  "name": "Retail",
  "resources": 55,
  "links": 36,
  "kinds": {
    "app": 15,
    "channel": 4,
    "cluster": 1,
    "component": 2,
    "data": 6,
    "database": 4,
    "fleet": 1,
    "job": 5,
    "saas": 6,
    "server": 1,
    "site": 2,
    "system": 4,
    "team": 4
  },
  "views": [
    {
      "name": "building-blocks",
      "title": "Building blocks",
      "description": "The four systems of the retail landscape, their apps, jobs and databases, and every flow, authentication and trigger between them.",
      "formats": [
        "svg",
        "mermaid"
      ],
      "declared": "views.cav:11:6"
    },
    {
      "name": "landscape",
      "title": "Application landscape",
      "description": "The flows between the systems, lifted from the flows between their apps; the SaaS and the shared services around them.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:22:6"
    },
    {
      "name": "prices-topic",
      "title": "Prices topic",
      "description": "Who produces and who consumes the item prices on the Kafka topic.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:31:6"
    },
    {
      "name": "price-chain",
      "title": "Price chain",
      "description": "The item prices, followed step by step from the pricing push to the stores and the e-commerce site.",
      "formats": [
        "svg",
        "text"
      ],
      "declared": "views.cav:41:6"
    },
    {
      "name": "file-hub",
      "title": "File hub",
      "description": "The files exchanged through the product file hub: which app sends what, by which protocol.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:50:6"
    },
    {
      "name": "to-verify",
      "title": "To verify",
      "description": "The links assumed or doubtful: what the mapping still has to confirm.",
      "formats": [
        "text"
      ],
      "declared": "views.cav:59:6"
    },
    {
      "name": "to-complete",
      "title": "To complete",
      "description": "The resources missing something for a complete model.",
      "formats": [
        "text"
      ],
      "declared": "views.cav:70:6"
    },
    {
      "name": "ownership",
      "title": "Ownership",
      "description": "Who owns and who operates each system and each application.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:78:6"
    },
    {
      "name": "systems-stacked",
      "title": "Systems, stacked",
      "description": "The systems in a chosen order, top to bottom, with the shared services beside them.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:88:6"
    }
  ],
  "checks": [],
  "modules": [],
  "files": [
    "data.ca",
    "infra.ca",
    "product.ca",
    "saas.ca",
    "schema.ca",
    "systems.ca",
    "teams.ca",
    "views.cav"
  ],
  "diagnostics": [
    {
      "severity": "incomplete",
      "message": "approximate placement: cluster k8s-data at the root (expected parent: site, vpc, network, subnet)",
      "help": null,
      "at": "infra.ca:12:9"
    },
    {
      "severity": "incomplete",
      "message": "approximate placement: server filehub in a site (expected parent: subnet)",
      "help": null,
      "at": "product.ca:4:8"
    },
    {
      "severity": "incomplete",
      "message": "app keycloak: missing attribute on",
      "help": null,
      "at": "saas.ca:15:5"
    },
    {
      "severity": "incomplete",
      "message": "app directory: missing attribute on",
      "help": null,
      "at": "saas.ca:16:5"
    },
    {
      "severity": "incomplete",
      "message": "app central-scheduler: missing attribute on",
      "help": null,
      "at": "saas.ca:18:5"
    },
    {
      "severity": "incomplete",
      "message": "job product.fsync: schedule in free text, \"cron\"",
      "help": "write it as a cron expression, checked and shown in plain words: \"0 3 * * *\"",
      "at": "systems.ca:19:15"
    },
    {
      "severity": "incomplete",
      "message": "app catalog.api: missing attribute on",
      "help": null,
      "at": "systems.ca:38:7"
    },
    {
      "severity": "incomplete",
      "message": "app pricing.ui: missing attribute on",
      "help": null,
      "at": "systems.ca:60:7"
    },
    {
      "severity": "incomplete",
      "message": "job pricing.price-push: schedule in free text, \"cron\"",
      "help": "write it as a cron expression, checked and shown in plain words: \"0 3 * * *\"",
      "at": "systems.ca:69:15"
    },
    {
      "severity": "incomplete",
      "message": "job pricing.extractor: schedule in free text, \"cron\"",
      "help": "write it as a cron expression, checked and shown in plain words: \"0 3 * * *\"",
      "at": "systems.ca:75:15"
    },
    {
      "severity": "incomplete",
      "message": "app labels.label-server: missing attribute on",
      "help": null,
      "at": "systems.ca:103:7"
    },
    {
      "severity": "incomplete",
      "message": "cluster k8s-data: no owner, neither written nor inherited",
      "help": null,
      "at": "infra.ca:12:9"
    },
    {
      "severity": "incomplete",
      "message": "server hoster-a-dc.filehub: no owner, neither written nor inherited",
      "help": null,
      "at": "product.ca:4:8"
    },
    {
      "severity": "incomplete",
      "message": "saas kafka-cloud: no owner, neither written nor inherited",
      "help": null,
      "at": "saas.ca:1:6"
    },
    {
      "severity": "incomplete",
      "message": "saas apim: no owner, neither written nor inherited",
      "help": null,
      "at": "saas.ca:6:6"
    },
    {
      "severity": "incomplete",
      "message": "saas electronic-labels: no owner, neither written nor inherited",
      "help": null,
      "at": "saas.ca:11:6"
    },
    {
      "severity": "incomplete",
      "message": "saas paper-labels: no owner, neither written nor inherited",
      "help": null,
      "at": "saas.ca:12:6"
    },
    {
      "severity": "incomplete",
      "message": "app keycloak: no owner, neither written nor inherited",
      "help": null,
      "at": "saas.ca:15:5"
    },
    {
      "severity": "incomplete",
      "message": "app directory: no owner, neither written nor inherited",
      "help": null,
      "at": "saas.ca:16:5"
    },
    {
      "severity": "incomplete",
      "message": "app central-scheduler: no owner, neither written nor inherited",
      "help": null,
      "at": "saas.ca:18:5"
    },
    {
      "severity": "incomplete",
      "message": "system catalog: no owner, neither written nor inherited",
      "help": null,
      "at": "systems.ca:34:8"
    },
    {
      "severity": "incomplete",
      "message": "app catalog.api: no owner, neither written nor inherited",
      "help": null,
      "at": "systems.ca:38:7"
    },
    {
      "severity": "incomplete",
      "message": "database catalog.db: no owner, neither written nor inherited",
      "help": null,
      "at": "systems.ca:53:12"
    },
    {
      "severity": "incomplete",
      "message": "system labels: no owner, neither written nor inherited",
      "help": null,
      "at": "systems.ca:100:8"
    },
    {
      "severity": "incomplete",
      "message": "app labels.label-server: no owner, neither written nor inherited",
      "help": null,
      "at": "systems.ca:103:7"
    },
    {
      "severity": "incomplete",
      "message": "app labels.desktop: no owner, neither written nor inherited",
      "help": null,
      "at": "systems.ca:116:7"
    },
    {
      "severity": "incomplete",
      "message": "database labels.db: no owner, neither written nor inherited",
      "help": null,
      "at": "systems.ca:122:12"
    }
  ]
}
