{
  "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",
  "nodes": [
    {
      "id": "kafka-cloud",
      "kind": "saas",
      "label": "Managed Kafka",
      "frame": null
    },
    {
      "id": "apim",
      "kind": "saas",
      "label": "API manager",
      "frame": null
    },
    {
      "id": "electronic-labels",
      "kind": "saas",
      "label": "Electronic shelf labels",
      "frame": null
    },
    {
      "id": "paper-labels",
      "kind": "saas",
      "label": "Paper labels",
      "frame": null
    },
    {
      "id": "keycloak",
      "kind": "app",
      "label": "keycloak",
      "frame": null
    },
    {
      "id": "directory",
      "kind": "app",
      "label": "Active Directory",
      "frame": null
    },
    {
      "id": "central-scheduler",
      "kind": "app",
      "label": "Central scheduler",
      "frame": null
    },
    {
      "id": "product.pim",
      "kind": "saas",
      "label": "PIM (SaaS)",
      "frame": "product"
    },
    {
      "id": "product.photo-studio",
      "kind": "saas",
      "label": "Photo studio",
      "frame": "product"
    },
    {
      "id": "product.fsync",
      "kind": "job",
      "label": "fsync",
      "frame": "product"
    },
    {
      "id": "product.price-processor",
      "kind": "app",
      "label": "Price processor (Kafka Streams / Connect)",
      "frame": "product"
    },
    {
      "id": "catalog.api",
      "kind": "app",
      "label": "Catalog API",
      "frame": "catalog"
    },
    {
      "id": "catalog.db",
      "kind": "database",
      "label": "db",
      "frame": "catalog"
    },
    {
      "id": "pricing.ui",
      "kind": "app",
      "label": "Pricing UI",
      "frame": "pricing"
    },
    {
      "id": "pricing.price-push",
      "kind": "job",
      "label": "price-push",
      "frame": "pricing"
    },
    {
      "id": "pricing.extractor",
      "kind": "job",
      "label": "extractor",
      "frame": "pricing"
    },
    {
      "id": "pricing.article-extractor",
      "kind": "job",
      "label": "article-extractor",
      "frame": "pricing"
    },
    {
      "id": "pricing.price-extractor",
      "kind": "job",
      "label": "price-extractor",
      "frame": "pricing"
    },
    {
      "id": "pricing.db",
      "kind": "database",
      "label": "db",
      "frame": "pricing"
    },
    {
      "id": "labels.label-server",
      "kind": "app",
      "label": "Label server",
      "frame": "labels"
    },
    {
      "id": "labels.desktop",
      "kind": "app",
      "label": "Desktop label application",
      "frame": "labels"
    },
    {
      "id": "labels.db",
      "kind": "database",
      "label": "db",
      "frame": "labels"
    },
    {
      "id": "web-shop",
      "kind": "app",
      "label": "E-commerce site",
      "frame": null
    },
    {
      "id": "logistics",
      "kind": "app",
      "label": "logistics",
      "frame": null
    },
    {
      "id": "sales-transfer",
      "kind": "app",
      "label": "Sales transfer",
      "frame": null
    },
    {
      "id": "esb",
      "kind": "app",
      "label": "esb",
      "frame": null
    },
    {
      "id": "franchise-portal",
      "kind": "app",
      "label": "franchise-portal",
      "frame": null
    },
    {
      "id": "commercial-management",
      "kind": "app",
      "label": "commercial-management",
      "frame": null
    },
    {
      "id": "indexer",
      "kind": "app",
      "label": "Indexing application (unknown)",
      "frame": null
    },
    {
      "id": "search-engine",
      "kind": "database",
      "label": "search-engine",
      "frame": null
    }
  ],
  "frames": [
    {
      "id": "product",
      "title": "Product management",
      "resource": "product",
      "in": null
    },
    {
      "id": "catalog",
      "title": "Product data service",
      "resource": "catalog",
      "in": null
    },
    {
      "id": "pricing",
      "title": "Price management",
      "resource": "pricing",
      "in": null
    },
    {
      "id": "labels",
      "title": "Paper and electronic labels",
      "resource": "labels",
      "in": null
    }
  ],
  "edges": [
    {
      "source": "apim",
      "target": "labels.label-server",
      "relation": null,
      "ports": [
        "https/443"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "product.price-processor",
      "target": "kafka-cloud",
      "relation": null,
      "ports": [
        "kafka/9092"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "product.price-processor",
      "target": "product.pim",
      "relation": null,
      "ports": [
        "sftp/22"
      ],
      "layers": [
        "flow"
      ],
      "carries": [
        "price-deltas"
      ],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "catalog.api",
      "target": "catalog.db",
      "relation": null,
      "ports": [
        "jdbc"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "catalog.api",
      "target": "kafka-cloud",
      "relation": null,
      "ports": [
        "kafka/9092"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "catalog.api",
      "target": "logistics",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "catalog.api",
      "target": "sales-transfer",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.ui",
      "target": "pricing.db",
      "relation": null,
      "ports": [
        "jdbc"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.extractor",
      "target": "pricing.db",
      "relation": null,
      "ports": [
        "jdbc"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.extractor",
      "target": "franchise-portal",
      "relation": null,
      "ports": [
        "ftp/21"
      ],
      "layers": [
        "flow"
      ],
      "carries": [
        "item-prices",
        "articles",
        "sales-sessions"
      ],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.article-extractor",
      "target": "pricing.db",
      "relation": null,
      "ports": [
        "jdbc"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.article-extractor",
      "target": "esb",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "flow"
      ],
      "carries": [
        "articles"
      ],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.price-extractor",
      "target": "pricing.db",
      "relation": null,
      "ports": [
        "jdbc"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.price-extractor",
      "target": "esb",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "flow"
      ],
      "carries": [
        "item-prices"
      ],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "labels.label-server",
      "target": "labels.db",
      "relation": null,
      "ports": [
        "jdbc"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "labels.label-server",
      "target": "catalog.api",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "labels.label-server",
      "target": "electronic-labels",
      "relation": null,
      "ports": [
        "https"
      ],
      "layers": [
        "flow"
      ],
      "carries": [
        "label-content"
      ],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "labels.label-server",
      "target": "paper-labels",
      "relation": null,
      "ports": [
        "https"
      ],
      "layers": [
        "flow"
      ],
      "carries": [
        "label-content"
      ],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "labels.desktop",
      "target": "labels.label-server",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "commercial-management",
      "target": "apim",
      "relation": null,
      "ports": [],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "indexer",
      "target": "catalog.api",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "indexer",
      "target": "search-engine",
      "relation": null,
      "ports": [],
      "layers": [
        "flow"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "pricing.price-push",
      "target": "pricing.ui",
      "relation": null,
      "ports": [
        "http"
      ],
      "layers": [
        "trigger"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    },
    {
      "source": "central-scheduler",
      "target": "pricing.ui",
      "relation": null,
      "ports": [],
      "layers": [
        "trigger"
      ],
      "carries": [],
      "through": [],
      "through_steps": [],
      "step": null
    }
  ],
  "diagnostics": []
}
