{
  "service_graph": {
    "id": "service_graph",
    "description": "Meetecho Application",
    "functions": [
      {
        "id": "urn:app:sink:janus-streaming",
        "description": "Sink function",
        "label": "Sink",
        "type": "sink",
        "category": "sink",
        "requirements": [
          {
            "type": "processing_delay",
            "capacity": {
              "value": 0,
              "unit": "ms"
            }
          },
          {
            "instances": 1
          }
        ],
        "constraints": {
          "sites": [
            "47e55d5f-d3ec-4858-a32f-4ecf833de016:egress"
          ]
        },
        "placement": [
          {
            "site": "47e55d5f-d3ec-4858-a32f-4ecf833de016:egress",
            "fraction": 1
          }
        ]
      },
      {
        "id": "urn:app:operator:janus-avroom",
        "description": "Operator function",
        "label": "Operator2",
        "type": "operator",
        "category": "AI",
        "requirements": [
          {
            "type": "processing_delay",
            "capacity": {
              "value": 0,
              "unit": "ms"
            }
          },
          {
            "type": "cpu",
            "capacity": {
              "value": 8,
              "unit": "vCPU"
            }
          },
          {
            "type": "memory",
            "capacity": {
              "value": 10000.0,
              "unit": "MB"
            }
          },
          {
            "instances": 1
          }
        ],
        "constraints": {
          "sites": [
            "2b77c099-2050-4cb5-a0b5-56f391fcad94",
            "2682e3c9-fcc9-4c1a-ad12-704f2667fac5",
            "fcfa512c-45ec-4d28-9c19-9be91841a20f"
          ]
        },
        "placement": [
          {
            "site": "2b77c099-2050-4cb5-a0b5-56f391fcad94",
            "fraction": 1
          }
        ]
      },
      {
        "id": "urn:app:operator:juturna-helmets",
        "description": "Operator function",
        "label": "Operator3",
        "type": "operator",
        "category": "AI",
        "requirements": [
          {
            "type": "processing_delay",
            "capacity": {
              "value": 0,
              "unit": "ms"
            }
          },
          {
            "type": "cpu",
            "capacity": {
              "value": 0.0,
              "unit": "vCPU"
            }
          },
          {
            "type": "memory",
            "capacity": {
              "value": 6.521728,
              "unit": "MB"
            }
          },
          {
            "instances": 1
          }
        ],
        "constraints": {
          "sites": [
            "2b77c099-2050-4cb5-a0b5-56f391fcad94",
            "2682e3c9-fcc9-4c1a-ad12-704f2667fac5",
            "fcfa512c-45ec-4d28-9c19-9be91841a20f"
          ]
        },
        "placement": [
          {
            "site": "2b77c099-2050-4cb5-a0b5-56f391fcad94",
            "fraction": 1
          }
        ]
      },
      {
        "id": "urn:app:operator:juturna-whisper",
        "description": "Operator function",
        "label": "Operator4",
        "type": "operator",
        "category": "AI",
        "requirements": [
          {
            "type": "processing_delay",
            "capacity": {
              "value": 0,
              "unit": "ms"
            }
          },
          {
            "type": "cpu",
            "capacity": {
              "value": 0.0,
              "unit": "vCPU"
            }
          },
          {
            "type": "memory",
            "capacity": {
              "value": 80.021728,
              "unit": "MB"
            }
          },
          {
            "instances": 1
          }
        ],
        "constraints": {
          "sites": [
            "2b77c099-2050-4cb5-a0b5-56f391fcad94",
            "2682e3c9-fcc9-4c1a-ad12-704f2667fac5",
            "fcfa512c-45ec-4d28-9c19-9be91841a20f"
          ]
        },
        "placement": [
          {
            "site": "2b77c099-2050-4cb5-a0b5-56f391fcad94",
            "fraction": 1
          }
        ]
      },
      {
        "id": "urn:app:source:janus-nginx",
        "description": "Source function",
        "label": "Ingress",
        "type": "source",
        "category": "ingress",
        "requirements": [
          {
            "type": "processing_delay",
            "capacity": {
              "value": 0,
              "unit": "ms"
            }
          }
        ],
        "constraints": {
          "sites": [
            "47e55d5f-d3ec-4858-a32f-4ecf833de016:ingress"
          ]
        },
        "placement": [
          {
            "site": "47e55d5f-d3ec-4858-a32f-4ecf833de016:ingress",
            "fraction": 1
          }
        ]
      }
    ],
    "commodities": [
      {
        "origin": "urn:app:source:janus-nginx",
        "target": "urn:app:operator:janus-avroom",
        "description": "API Response",
        "type": "source",
        "category": "API",
        "requirements": [
          {
            "type": "cumulative_delay",
            "capacity": {
              "value": 250,
              "unit": "ms"
            }
          },
          {
            "type": "transmission_delay",
            "capacity": {
              "value": 50,
              "unit": "ms"
            }
          },
          {
            "type": "bandwidth",
            "capacity": {
              "value": 100,
              "unit": "Mbps"
            }
          }
        ],
        "routing": [
          {
            "path": [],
            "fraction": 0
          }
        ]
      },
      {
        "origin": "urn:app:operator:juturna-whisper",
        "target": "urn:app:sink:janus-streaming",
        "description": "API Response",
        "type": "destination",
        "category": "API",
        "requirements": [
          {
            "type": "cumulative_delay",
            "capacity": {
              "value": 2500,
              "unit": "ms"
            }
          },
          {
            "type": "transmission_delay",
            "capacity": {
              "value": 500,
              "unit": "ms"
            }
          },
          {
            "type": "bandwidth",
            "capacity": {
              "value": 2,
              "unit": "Mbps"
            }
          }
        ],
        "routing": [
          {
            "path": [
              [
                "2b77c099-2050-4cb5-a0b5-56f391fcad94",
                "47e55d5f-d3ec-4858-a32f-4ecf833de016"
              ],
              [
                "47e55d5f-d3ec-4858-a32f-4ecf833de016",
                "47e55d5f-d3ec-4858-a32f-4ecf833de016:egress"
              ]
            ],
            "fraction": 0
          }
        ]
      },
      {
        "origin": "urn:app:operator:juturna-helmets",
        "target": "urn:app:sink:janus-streaming",
        "description": "API Response",
        "type": "destination",
        "category": "API",
        "requirements": [
          {
            "type": "cumulative_delay",
            "capacity": {
              "value": 1500,
              "unit": "ms"
            }
          },
          {
            "type": "transmission_delay",
            "capacity": {
              "value": 250,
              "unit": "ms"
            }
          },
          {
            "type": "bandwidth",
            "capacity": {
              "value": 2,
              "unit": "Mbps"
            }
          }
        ],
        "routing": [
          {
            "path": [
              [
                "2b77c099-2050-4cb5-a0b5-56f391fcad94",
                "47e55d5f-d3ec-4858-a32f-4ecf833de016"
              ],
              [
                "47e55d5f-d3ec-4858-a32f-4ecf833de016",
                "47e55d5f-d3ec-4858-a32f-4ecf833de016:egress"
              ]
            ],
            "fraction": 0
          }
        ]
      },
      {
        "origin": "urn:app:operator:janus-avroom",
        "target": "urn:app:operator:juturna-whisper",
        "description": "API Response",
        "type": "processing",
        "category": "API",
        "requirements": [
          {
            "type": "cumulative_delay",
            "capacity": {
              "value": 150,
              "unit": "ms"
            }
          },
          {
            "type": "transmission_delay",
            "capacity": {
              "value": 250,
              "unit": "ms"
            }
          },
          {
            "type": "bandwidth",
            "capacity": {
              "value": 2,
              "unit": "Mbps"
            }
          }
        ],
        "routing": [
          {
            "path": [],
            "fraction": 0
          }
        ]
      },
      {
        "origin": "urn:app:operator:janus-avroom",
        "target": "urn:app:operator:juturna-helmets",
        "description": "API Response",
        "type": "processing",
        "category": "API",
        "requirements": [
          {
            "type": "cumulative_delay",
            "capacity": {
              "value": 150,
              "unit": "ms"
            }
          },
          {
            "type": "transmission_delay",
            "capacity": {
              "value": 250,
              "unit": "ms"
            }
          },
          {
            "type": "bandwidth",
            "capacity": {
              "value": 2,
              "unit": "Mbps"
            }
          }
        ],
        "routing": [
          {
            "path": [],
            "fraction": 0
          }
        ]
      }
    ]
  }
}