{
  "$schema": "https://json.schemastore.org/aspire-8.0.json",
  "resources": {
    "cache": {
      "type": "container.v1",
      "connectionString": "{cache.bindings.tcp.host}:{cache.bindings.tcp.port},password={cache-password.value}",
      "image": "docker.io/library/redis:8.2",
      "entrypoint": "/bin/sh",
      "args": [
        "-c",
        "redis-server --requirepass $REDIS_PASSWORD"
      ],
      "env": {
        "REDIS_PASSWORD": "{cache-password.value}"
      },
      "bindings": {
        "tcp": {
          "scheme": "tcp",
          "protocol": "tcp",
          "transport": "tcp",
          "targetPort": 6379
        }
      }
    },
    "queue": {
      "type": "container.v1",
      "connectionString": "nats://nats:{queue-password.value}@{queue.bindings.tcp.host}:{queue.bindings.tcp.port}",
      "image": "docker.io/library/nats:2.11",
      "args": [
        "--user",
        "nats",
        "--pass",
        "{queue-password.value}",
        "-js"
      ],
      "bindings": {
        "tcp": {
          "scheme": "tcp",
          "protocol": "tcp",
          "transport": "tcp",
          "targetPort": 4222
        }
      }
    },
    "ring": {
      "type": "project.v1",
      "path": "../DysonNetwork.Ring/DysonNetwork.Ring.csproj",
      "env": {
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
        "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
        "HTTP_PORTS": "8001",
        "HTTPS_PORTS": "{ring.bindings.grpc.targetPort}",
        "ConnectionStrings__cache": "{cache.connectionString}",
        "ConnectionStrings__queue": "{queue.connectionString}",
        "GRPC_PORT": "7002",
        "services__pass__http__0": "{pass.bindings.http.url}",
        "services__pass__grpc__0": "{pass.bindings.grpc.url}",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "{docker-compose-dashboard.bindings.otlp-grpc.url}",
        "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
        "OTEL_SERVICE_NAME": "ring"
      },
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 8001
        },
        "grpc": {
          "scheme": "https",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 7002
        }
      }
    },
    "pass": {
      "type": "project.v1",
      "path": "../DysonNetwork.Pass/DysonNetwork.Pass.csproj",
      "env": {
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
        "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
        "HTTP_PORTS": "8002",
        "HTTPS_PORTS": "{pass.bindings.grpc.targetPort}",
        "services__ring__http__0": "{ring.bindings.http.url}",
        "services__ring__grpc__0": "{ring.bindings.grpc.url}",
        "services__develop__http__0": "{develop.bindings.http.url}",
        "services__develop__grpc__0": "{develop.bindings.grpc.url}",
        "services__drive__http__0": "{drive.bindings.http.url}",
        "services__drive__grpc__0": "{drive.bindings.grpc.url}",
        "ConnectionStrings__cache": "{cache.connectionString}",
        "ConnectionStrings__queue": "{queue.connectionString}",
        "GRPC_PORT": "7003",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "{docker-compose-dashboard.bindings.otlp-grpc.url}",
        "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
        "OTEL_SERVICE_NAME": "pass"
      },
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 8002
        },
        "grpc": {
          "scheme": "https",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 7003
        }
      }
    },
    "drive": {
      "type": "project.v1",
      "path": "../DysonNetwork.Drive/DysonNetwork.Drive.csproj",
      "env": {
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
        "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
        "HTTP_PORTS": "8003",
        "HTTPS_PORTS": "{drive.bindings.grpc.targetPort}",
        "services__pass__http__0": "{pass.bindings.http.url}",
        "services__pass__grpc__0": "{pass.bindings.grpc.url}",
        "services__ring__http__0": "{ring.bindings.http.url}",
        "services__ring__grpc__0": "{ring.bindings.grpc.url}",
        "ConnectionStrings__cache": "{cache.connectionString}",
        "ConnectionStrings__queue": "{queue.connectionString}",
        "GRPC_PORT": "7004",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "{docker-compose-dashboard.bindings.otlp-grpc.url}",
        "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
        "OTEL_SERVICE_NAME": "drive"
      },
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 8003
        },
        "grpc": {
          "scheme": "https",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 7004
        }
      }
    },
    "sphere": {
      "type": "project.v1",
      "path": "../DysonNetwork.Sphere/DysonNetwork.Sphere.csproj",
      "env": {
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
        "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
        "HTTP_PORTS": "8004",
        "HTTPS_PORTS": "{sphere.bindings.grpc.targetPort}",
        "services__pass__http__0": "{pass.bindings.http.url}",
        "services__pass__grpc__0": "{pass.bindings.grpc.url}",
        "services__ring__http__0": "{ring.bindings.http.url}",
        "services__ring__grpc__0": "{ring.bindings.grpc.url}",
        "services__drive__http__0": "{drive.bindings.http.url}",
        "services__drive__grpc__0": "{drive.bindings.grpc.url}",
        "ConnectionStrings__cache": "{cache.connectionString}",
        "ConnectionStrings__queue": "{queue.connectionString}",
        "GRPC_PORT": "7005",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "{docker-compose-dashboard.bindings.otlp-grpc.url}",
        "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
        "OTEL_SERVICE_NAME": "sphere"
      },
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 8004
        },
        "grpc": {
          "scheme": "https",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 7005
        }
      }
    },
    "develop": {
      "type": "project.v1",
      "path": "../DysonNetwork.Develop/DysonNetwork.Develop.csproj",
      "env": {
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
        "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
        "HTTP_PORTS": "8005",
        "HTTPS_PORTS": "{develop.bindings.grpc.targetPort}",
        "services__pass__http__0": "{pass.bindings.http.url}",
        "services__pass__grpc__0": "{pass.bindings.grpc.url}",
        "services__ring__http__0": "{ring.bindings.http.url}",
        "services__ring__grpc__0": "{ring.bindings.grpc.url}",
        "services__sphere__http__0": "{sphere.bindings.http.url}",
        "services__sphere__grpc__0": "{sphere.bindings.grpc.url}",
        "ConnectionStrings__cache": "{cache.connectionString}",
        "ConnectionStrings__queue": "{queue.connectionString}",
        "GRPC_PORT": "7006",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "{docker-compose-dashboard.bindings.otlp-grpc.url}",
        "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
        "OTEL_SERVICE_NAME": "develop"
      },
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 8005
        },
        "grpc": {
          "scheme": "https",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 7006
        }
      }
    },
    "insight": {
      "type": "project.v1",
      "path": "../DysonNetwork.Insight/DysonNetwork.Insight.csproj",
      "env": {
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
        "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
        "HTTP_PORTS": "8006",
        "HTTPS_PORTS": "{insight.bindings.grpc.targetPort}",
        "services__pass__http__0": "{pass.bindings.http.url}",
        "services__pass__grpc__0": "{pass.bindings.grpc.url}",
        "services__ring__http__0": "{ring.bindings.http.url}",
        "services__ring__grpc__0": "{ring.bindings.grpc.url}",
        "services__sphere__http__0": "{sphere.bindings.http.url}",
        "services__sphere__grpc__0": "{sphere.bindings.grpc.url}",
        "services__develop__http__0": "{develop.bindings.http.url}",
        "services__develop__grpc__0": "{develop.bindings.grpc.url}",
        "ConnectionStrings__cache": "{cache.connectionString}",
        "ConnectionStrings__queue": "{queue.connectionString}",
        "GRPC_PORT": "7007",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "{docker-compose-dashboard.bindings.otlp-grpc.url}",
        "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
        "OTEL_SERVICE_NAME": "insight"
      },
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 8006
        },
        "grpc": {
          "scheme": "https",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 7007
        }
      }
    },
    "gateway": {
      "type": "project.v1",
      "path": "../DysonNetwork.Gateway/DysonNetwork.Gateway.csproj",
      "env": {
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
        "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
        "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
        "HTTP_PORTS": "5001",
        "services__ring__http__0": "{ring.bindings.http.url}",
        "services__ring__grpc__0": "{ring.bindings.grpc.url}",
        "services__pass__http__0": "{pass.bindings.http.url}",
        "services__pass__grpc__0": "{pass.bindings.grpc.url}",
        "services__drive__http__0": "{drive.bindings.http.url}",
        "services__drive__grpc__0": "{drive.bindings.grpc.url}",
        "services__sphere__http__0": "{sphere.bindings.http.url}",
        "services__sphere__grpc__0": "{sphere.bindings.grpc.url}",
        "services__develop__http__0": "{develop.bindings.http.url}",
        "services__develop__grpc__0": "{develop.bindings.grpc.url}",
        "services__insight__http__0": "{insight.bindings.http.url}",
        "services__insight__grpc__0": "{insight.bindings.grpc.url}",
        "OTEL_EXPORTER_OTLP_ENDPOINT": "{docker-compose-dashboard.bindings.otlp-grpc.url}",
        "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
        "OTEL_SERVICE_NAME": "gateway"
      },
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 5001
        }
      }
    },
    "docker-compose": {
      "error": "This resource does not support generation in the manifest."
    },
    "cache-password": {
      "type": "parameter.v0",
      "value": "{cache-password.inputs.value}",
      "inputs": {
        "value": {
          "type": "string",
          "secret": true,
          "default": {
            "generate": {
              "minLength": 22,
              "special": false
            }
          }
        }
      }
    },
    "queue-password": {
      "type": "parameter.v0",
      "value": "{queue-password.inputs.value}",
      "inputs": {
        "value": {
          "type": "string",
          "secret": true,
          "default": {
            "generate": {
              "minLength": 22,
              "special": false
            }
          }
        }
      }
    },
    "docker-compose-dashboard": {
      "type": "container.v1",
      "image": "mcr.microsoft.com/dotnet/nightly/aspire-dashboard:latest",
      "bindings": {
        "http": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 18888
        },
        "otlp-grpc": {
          "scheme": "http",
          "protocol": "tcp",
          "transport": "http",
          "targetPort": 18889
        }
      }
    }
  }
}