{
  "manifest_version": "1.0.0",
  "template": {
    "id": "3420264f-646a-417f-a424-9ea0b266f9ef",
    "slug": "f6CKpT",
    "name": "Spring Microservice Ecosystem",
    "description": "Deploy a Spring microservice ecosystem with Eureka and Cloud Gateway",
    "url": "https://railway.com/deploy/f6CKpT",
    "upstream": {
      "repo_url": "https://github.com/UnirCs/back-end-cloud-gateway"
    }
  },
  "services": [
    {
      "name": "microservice-one",
      "source": {
        "repo": "https://github.com/UnirCs/back-end-spring-microservice-archetype"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "microservice-two",
      "source": {
        "repo": "https://github.com/UnirCs/back-end-spring-microservice-archetype"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "spring-cloud-gateway",
      "source": {
        "repo": "https://github.com/UnirCs/back-end-cloud-gateway"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "spring-cloud-eureka",
      "source": {
        "repo": "https://github.com/UnirCs/back-end-eureka"
      },
      "needs_volume": false,
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "microservice-one",
      "description": "Used to specify the port number on which the application will run. 8080 by default",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "PROFILE",
      "service": "microservice-one",
      "description": "Spring Execution Profile",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "APP_NAME",
      "service": "microservice-one",
      "description": "The service name.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "HOSTNAME",
      "service": "microservice-one",
      "description": "specifies the hostname that will be used by the Eureka server to register the client instance. This is essential for identifying and locating the service instance within the network. By default, the value is the same as the service name in the project",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EUREKA_URL",
      "service": "microservice-one",
      "description": "Used to specify the default URL of the Eureka server. This URL is where the Eureka client will register itself and also fetch the registry information of other services. By default, this variable references the Eureka server privately, without traffic leaving Railway's network",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PORT",
      "service": "microservice-two",
      "description": "Used to specify the port number on which the application will run. 8080 by default",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "PROFILE",
      "service": "microservice-two",
      "description": "Spring Execution Profile",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "APP_NAME",
      "service": "microservice-two",
      "description": "The service name.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "HOSTNAME",
      "service": "microservice-two",
      "description": "specifies the hostname that will be used by the Eureka server to register the client instance. This is essential for identifying and locating the service instance within the network. By default, the value is the same as the service name in the project",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EUREKA_URL",
      "service": "microservice-two",
      "description": "Used to specify the default URL of the Eureka server. This URL is where the Eureka client will register itself and also fetch the registry information of other services. By default, this variable references the Eureka server privately, without traffic leaving Railway's network",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PORT",
      "service": "spring-cloud-gateway",
      "description": "Used to specify the port number on which the application will run. 8762 by default",
      "secret": false,
      "strategy": "default",
      "default": "8762"
    },
    {
      "key": "HOSTNAME",
      "service": "spring-cloud-gateway",
      "description": "specifies the hostname that will be used by the Eureka server to register the client instance. This is essential for identifying and locating the service instance within the network. By default, the value is the same as the service name in the project",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EUREKA_URL",
      "service": "spring-cloud-gateway",
      "description": "Used to specify the default URL of the Eureka server. This URL is where the Eureka client will register itself and also fetch the registry information of other services. By default, this variable references the Eureka server privately, without traffic leaving Railway's network",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ALLOWED_ORIGINS",
      "service": "spring-cloud-gateway",
      "description": "Used to set up Cross-Origin Resource Sharing (CORS) policies, determining which external domains are permitted to access resources on the server. All origins are allowed by default",
      "secret": false,
      "strategy": "default",
      "default": "*"
    },
    {
      "key": "PORT",
      "service": "spring-cloud-eureka",
      "description": "Used to specify the port number on which the application will run. 8761 by default",
      "secret": false,
      "strategy": "default",
      "default": "8761"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "f6CKpT"
      }
    },
    "cli": "railway deploy --template f6CKpT",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "3420264f-646a-417f-a424-9ea0b266f9ef",
            "serializedConfig": {
              "services": {
                "319b08c3-3c2a-4a1e-8a7b-57675bda31ad": {
                  "icon": "https://www.svgrepo.com/show/354380/spring-icon.svg",
                  "name": "microservice-one",
                  "source": {
                    "repo": "UnirCs/back-end-spring-microservice-archetype",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": true,
                      "description": "Used to specify the port number on which the application will run. 8080 by default",
                      "defaultValue": "8080"
                    },
                    "PROFILE": {
                      "isOptional": true,
                      "description": "Spring Execution Profile",
                      "defaultValue": "railway"
                    },
                    "APP_NAME": {
                      "isOptional": true,
                      "description": "The service name.",
                      "defaultValue": "${{RAILWAY_SERVICE_NAME}}"
                    },
                    "HOSTNAME": {
                      "isOptional": true,
                      "description": "specifies the hostname that will be used by the Eureka server to register the client instance. This is essential for identifying and locating the service instance within the network. By default, the value is the same as the service name in the project",
                      "defaultValue": "${{RAILWAY_SERVICE_NAME}}"
                    },
                    "EUREKA_URL": {
                      "isOptional": true,
                      "description": "Used to specify the default URL of the Eureka server. This URL is where the Eureka client will register itself and also fetch the registry information of other services. By default, this variable references the Eureka server privately, without traffic leaving Railway's network",
                      "defaultValue": "http://${{spring-cloud-eureka.RAILWAY_SERVICE_NAME}}:${{spring-cloud-eureka.PORT}}/eureka"
                    }
                  }
                },
                "487dfa2e-8a92-468f-90d5-c1538bf4d892": {
                  "icon": "https://www.svgrepo.com/show/354380/spring-icon.svg",
                  "name": "microservice-two",
                  "source": {
                    "repo": "UnirCs/back-end-spring-microservice-archetype",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": true,
                      "description": "Used to specify the port number on which the application will run. 8080 by default",
                      "defaultValue": "8080"
                    },
                    "PROFILE": {
                      "isOptional": true,
                      "description": "Spring Execution Profile",
                      "defaultValue": "railway"
                    },
                    "APP_NAME": {
                      "isOptional": true,
                      "description": "The service name.",
                      "defaultValue": "${{RAILWAY_SERVICE_NAME}}"
                    },
                    "HOSTNAME": {
                      "isOptional": true,
                      "description": "specifies the hostname that will be used by the Eureka server to register the client instance. This is essential for identifying and locating the service instance within the network. By default, the value is the same as the service name in the project",
                      "defaultValue": "${{RAILWAY_SERVICE_NAME}}"
                    },
                    "EUREKA_URL": {
                      "isOptional": true,
                      "description": "Used to specify the default URL of the Eureka server. This URL is where the Eureka client will register itself and also fetch the registry information of other services. By default, this variable references the Eureka server privately, without traffic leaving Railway's network",
                      "defaultValue": "http://${{spring-cloud-eureka.RAILWAY_SERVICE_NAME}}:${{spring-cloud-eureka.PORT}}/eureka"
                    }
                  }
                },
                "5219aed3-0961-457d-a219-a16a7a2e9cb8": {
                  "icon": "https://www.svgrepo.com/show/354380/spring-icon.svg",
                  "name": "spring-cloud-gateway",
                  "source": {
                    "repo": "UnirCs/back-end-cloud-gateway",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": true,
                      "description": "Used to specify the port number on which the application will run. 8762 by default",
                      "defaultValue": "8762"
                    },
                    "HOSTNAME": {
                      "isOptional": true,
                      "description": "specifies the hostname that will be used by the Eureka server to register the client instance. This is essential for identifying and locating the service instance within the network. By default, the value is the same as the service name in the project",
                      "defaultValue": "${{RAILWAY_SERVICE_NAME}}"
                    },
                    "EUREKA_URL": {
                      "isOptional": true,
                      "description": "Used to specify the default URL of the Eureka server. This URL is where the Eureka client will register itself and also fetch the registry information of other services. By default, this variable references the Eureka server privately, without traffic leaving Railway's network",
                      "defaultValue": "http://${{spring-cloud-eureka.RAILWAY_SERVICE_NAME}}:${{spring-cloud-eureka.PORT}}/eureka"
                    },
                    "ALLOWED_ORIGINS": {
                      "isOptional": true,
                      "description": "Used to set up Cross-Origin Resource Sharing (CORS) policies, determining which external domains are permitted to access resources on the server. All origins are allowed by default",
                      "defaultValue": "*"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "7a9984b8-0e29-4471-9983-0cde938fe9ce": {
                  "icon": "https://www.svgrepo.com/show/354380/spring-icon.svg",
                  "name": "spring-cloud-eureka",
                  "source": {
                    "repo": "UnirCs/back-end-eureka",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": true,
                      "description": "Used to specify the port number on which the application will run. 8761 by default",
                      "defaultValue": "8761"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 4,
    "needs_volume": false
  },
  "generated_at": "2026-09-21T22:14:44.200Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-21T13:12:45.601Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_6961c6b9e13d4a43bf3a",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 128,
    "typical_build_seconds": 61,
    "typical_start_seconds": 10,
    "slowest_service": "spring-cloud-gateway"
  }
}
