{
  "manifest_version": "1.0.0",
  "template": {
    "id": "37fb7440-2efb-460a-823a-1ce18d021961",
    "slug": "opencloud-drive",
    "name": "OpenCloud",
    "description": "File sync and sharing platform with browser-based office editing",
    "url": "https://railway.com/deploy/opencloud-drive",
    "upstream": {
      "repo_url": "https://github.com/gridalpha/opencloud-railway"
    }
  },
  "services": [
    {
      "name": "tika",
      "source": {
        "repo": "https://github.com/gridalpha/opencloud-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "collabora",
      "source": {
        "repo": "https://github.com/gridalpha/opencloud-railway"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "opencloud",
      "source": {
        "repo": "https://github.com/gridalpha/opencloud-railway"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "tika",
      "description": "Port Railway probes",
      "secret": false,
      "strategy": "default",
      "default": "9998"
    },
    {
      "key": "PRIVATE_URL",
      "service": "tika",
      "description": "Private endpoint peers reference",
      "secret": false,
      "strategy": "default",
      "default": "http://tika.railway.internal:9998"
    },
    {
      "key": "JAVA_TOOL_OPTIONS",
      "service": "tika",
      "description": "Cap the JVM heap to the container",
      "secret": false,
      "strategy": "default",
      "default": "-XX:MaxRAMPercentage=70"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "tika",
      "description": "Dockerfile for this service",
      "secret": false,
      "strategy": "default",
      "default": "tika/Dockerfile"
    },
    {
      "key": "PORT",
      "service": "collabora",
      "description": "Port Railway probes and routes",
      "secret": false,
      "strategy": "default",
      "default": "9980"
    },
    {
      "key": "password",
      "service": "collabora",
      "description": "Collabora admin console password",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "username",
      "service": "collabora",
      "description": "Collabora admin console user",
      "secret": false,
      "strategy": "default",
      "default": "admin"
    },
    {
      "key": "aliasgroup1",
      "service": "collabora",
      "description": "Regex of trusted WOPI hosts",
      "secret": false,
      "strategy": "default",
      "default": "https://.*\\.up\\.railway\\.app"
    },
    {
      "key": "server_name",
      "service": "collabora",
      "description": "Public host coolwsd advertises",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "extra_params",
      "service": "collabora",
      "description": "coolwsd flags behind Railway's edge",
      "secret": false,
      "strategy": "default",
      "default": "--o:ssl.enable=false --o:ssl.termination=true --o:home_mode.enable=false --o:net.frame_ancestors=*.up.railway.app"
    },
    {
      "key": "DONT_GEN_SSL_CERT",
      "service": "collabora",
      "description": "No self-signed certificate needed",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "collabora",
      "description": "Dockerfile for this service",
      "secret": false,
      "strategy": "default",
      "default": "collabora/Dockerfile"
    },
    {
      "key": "PORT",
      "service": "opencloud",
      "description": "Port Railway probes and routes",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "OC_URL",
      "service": "opencloud",
      "description": "Public base URL and OIDC issuer",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "PROXY_TLS",
      "service": "opencloud",
      "description": "Railway's edge terminates TLS",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "OC_INSECURE",
      "service": "opencloud",
      "description": "Verify TLS; also stops init prompting",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "OC_LOG_COLOR",
      "service": "opencloud",
      "description": "No ANSI colour in logs",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "OC_LOG_LEVEL",
      "service": "opencloud",
      "description": "Log verbosity",
      "secret": false,
      "strategy": "default",
      "default": "info"
    },
    {
      "key": "OC_LOG_PRETTY",
      "service": "opencloud",
      "description": "Machine-readable log lines",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "PROXY_HTTP_ADDR",
      "service": "opencloud",
      "description": "Proxy listen address",
      "secret": false,
      "strategy": "default",
      "default": "0.0.0.0:9200"
    },
    {
      "key": "COLLABORA_DOMAIN",
      "service": "opencloud",
      "description": "Editor host for the CSP",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "IDM_ADMIN_PASSWORD",
      "service": "opencloud",
      "description": "Built-in admin password, read on first init",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "OC_ADD_RUN_SERVICES",
      "service": "opencloud",
      "description": "Run the WOPI service in-process",
      "secret": false,
      "strategy": "default",
      "default": "collaboration"
    },
    {
      "key": "STORAGE_USERS_DRIVER",
      "service": "opencloud",
      "description": "User file bodies go to the bucket",
      "secret": false,
      "strategy": "default",
      "default": "decomposeds3"
    },
    {
      "key": "GRAPH_AVAILABLE_ROLES",
      "service": "opencloud",
      "description": "Sharing roles including secure view",
      "secret": false,
      "strategy": "default",
      "default": "b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049,aa97fe03-7980-45ac-9e50-b325749fd7e6"
    },
    {
      "key": "IDM_CREATE_DEMO_USERS",
      "service": "opencloud",
      "description": "Never create the public demo accounts",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "SEARCH_EXTRACTOR_TYPE",
      "service": "opencloud",
      "description": "Extract document text with Tika",
      "secret": false,
      "strategy": "default",
      "default": "tika"
    },
    {
      "key": "STORAGE_SYSTEM_DRIVER",
      "service": "opencloud",
      "description": "System data stays on the volume",
      "secret": false,
      "strategy": "default",
      "default": "decomposed"
    },
    {
      "key": "COLLABORATION_APP_ADDR",
      "service": "opencloud",
      "description": "Editor base URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "COLLABORATION_APP_ICON",
      "service": "opencloud",
      "description": "Editor icon",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "COLLABORATION_APP_NAME",
      "service": "opencloud",
      "description": "Editor name shown in the UI",
      "secret": false,
      "strategy": "default",
      "default": "CollaboraOnline"
    },
    {
      "key": "COLLABORATION_WOPI_SRC",
      "service": "opencloud",
      "description": "WOPI callback base URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "PROXY_ENABLE_BASIC_AUTH",
      "service": "opencloud",
      "description": "OIDC only, no basic auth",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "opencloud",
      "description": "Dockerfile for this service",
      "secret": false,
      "strategy": "default",
      "default": "Dockerfile"
    },
    {
      "key": "COLLABORATION_APP_PRODUCT",
      "service": "opencloud",
      "description": "Editor product label",
      "secret": false,
      "strategy": "default",
      "default": "Collabora"
    },
    {
      "key": "COLLABORATION_APP_INSECURE",
      "service": "opencloud",
      "description": "Verify the editor's certificate",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "FRONTEND_ARCHIVER_MAX_SIZE",
      "service": "opencloud",
      "description": "Max bytes per folder download",
      "secret": false,
      "strategy": "default",
      "default": "10000000000"
    },
    {
      "key": "FRONTEND_CHECK_FOR_UPDATES",
      "service": "opencloud",
      "description": "Show upstream release notices",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "PROXY_CSP_CONFIG_FILE_LOCATION",
      "service": "opencloud",
      "description": "Adds Collabora to the CSP",
      "secret": false,
      "strategy": "default",
      "default": "/etc/opencloud-static/csp.yaml"
    },
    {
      "key": "SEARCH_EXTRACTOR_TIKA_TIKA_URL",
      "service": "opencloud",
      "description": "Private Tika endpoint",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "RAILWAY_HEALTHCHECK_TIMEOUT_SEC",
      "service": "opencloud",
      "description": "First-boot health check window",
      "secret": false,
      "strategy": "default",
      "default": "300"
    },
    {
      "key": "COLLABORATION_APP_PROOF_DURATION",
      "service": "opencloud",
      "description": "WOPI proof key cache lifetime",
      "secret": false,
      "strategy": "default",
      "default": "10m"
    },
    {
      "key": "FRONTEND_FULL_TEXT_SEARCH_ENABLED",
      "service": "opencloud",
      "description": "Offer content search in the UI",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "STORAGE_USERS_DECOMPOSEDS3_BUCKET",
      "service": "opencloud",
      "description": "Bucket name",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "STORAGE_USERS_DECOMPOSEDS3_REGION",
      "service": "opencloud",
      "description": "Bucket region",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "STORAGE_USERS_EVENTS_NUM_CONSUMERS",
      "service": "opencloud",
      "description": "Postprocessing event consumers",
      "secret": false,
      "strategy": "default",
      "default": "5"
    },
    {
      "key": "STORAGE_USERS_DECOMPOSEDS3_ENDPOINT",
      "service": "opencloud",
      "description": "Bucket endpoint",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "STORAGE_USERS_DECOMPOSEDS3_ACCESS_KEY",
      "service": "opencloud",
      "description": "Bucket access key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "STORAGE_USERS_DECOMPOSEDS3_SECRET_KEY",
      "service": "opencloud",
      "description": "Bucket secret key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST",
      "service": "opencloud",
      "description": "Rejected link passwords",
      "secret": true,
      "strategy": "default",
      "default": "/etc/opencloud-static/banned-password-list.txt"
    },
    {
      "key": "COLLABORATION_CS3API_DATAGATEWAY_INSECURE",
      "service": "opencloud",
      "description": "Verify the data gateway certificate",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "FRONTEND_APP_HANDLER_SECURE_VIEW_APP_ADDR",
      "service": "opencloud",
      "description": "Secure-view provider",
      "secret": false,
      "strategy": "default",
      "default": "eu.opencloud.api.collaboration"
    },
    {
      "key": "OC_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD",
      "service": "opencloud",
      "description": "Force a password on public links",
      "secret": true,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD",
      "service": "opencloud",
      "description": "Upload links may skip the password",
      "secret": true,
      "strategy": "default",
      "default": "false"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "opencloud-drive"
      }
    },
    "cli": "railway deploy --template opencloud-drive",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "37fb7440-2efb-460a-823a-1ce18d021961",
            "serializedConfig": {
              "buckets": {
                "efc897ba-84c9-4473-bdfe-c6416f99b314": {
                  "name": "opencloud-blobs"
                }
              },
              "services": {
                "189476d4-5a15-41ce-b9b6-fe60612901db": {
                  "icon": "https://tika.apache.org/tika.png",
                  "name": "tika",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/version",
                    "restartPolicyType": "ALWAYS",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/opencloud-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port Railway probes",
                      "defaultValue": "9998"
                    },
                    "PRIVATE_URL": {
                      "isOptional": false,
                      "description": "Private endpoint peers reference",
                      "defaultValue": "http://tika.railway.internal:9998"
                    },
                    "JAVA_TOOL_OPTIONS": {
                      "isOptional": true,
                      "description": "Cap the JVM heap to the container",
                      "defaultValue": "-XX:MaxRAMPercentage=70"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Dockerfile for this service",
                      "defaultValue": "tika/Dockerfile"
                    }
                  }
                },
                "4076de18-1437-45ee-99e2-a5b0ebc86f47": {
                  "icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/collabora-online.svg",
                  "name": "collabora",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/hosting/discovery",
                    "restartPolicyType": "ALWAYS",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/opencloud-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port Railway probes and routes",
                      "defaultValue": "9980"
                    },
                    "password": {
                      "isOptional": false,
                      "description": "Collabora admin console password",
                      "defaultValue": "{{password}}"
                    },
                    "username": {
                      "isOptional": false,
                      "description": "Collabora admin console user",
                      "defaultValue": "admin"
                    },
                    "aliasgroup1": {
                      "isOptional": false,
                      "description": "Regex of trusted WOPI hosts",
                      "defaultValue": "https://.*\\.up\\.railway\\.app"
                    },
                    "server_name": {
                      "isOptional": false,
                      "description": "Public host coolwsd advertises",
                      "defaultValue": "${{RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "extra_params": {
                      "isOptional": false,
                      "description": "coolwsd flags behind Railway's edge",
                      "defaultValue": "--o:ssl.enable=false --o:ssl.termination=true --o:home_mode.enable=false --o:net.frame_ancestors=*.up.railway.app"
                    },
                    "DONT_GEN_SSL_CERT": {
                      "isOptional": true,
                      "description": "No self-signed certificate needed",
                      "defaultValue": "true"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Dockerfile for this service",
                      "defaultValue": "collabora/Dockerfile"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:9980": {
                        "port": 9980
                      }
                    }
                  }
                },
                "5d576eac-3722-40b0-bb70-4ecea8eab51a": {
                  "icon": "https://raw.githubusercontent.com/opencloud-eu/opencloud/main/opencloud_logo.png",
                  "name": "opencloud",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/signin/v1/identifier",
                    "restartPolicyType": "ALWAYS",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/opencloud-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port Railway probes and routes",
                      "defaultValue": "9200"
                    },
                    "OC_URL": {
                      "isOptional": false,
                      "description": "Public base URL and OIDC issuer",
                      "defaultValue": "https://${{RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "PROXY_TLS": {
                      "isOptional": false,
                      "description": "Railway's edge terminates TLS",
                      "defaultValue": "false"
                    },
                    "OC_INSECURE": {
                      "isOptional": false,
                      "description": "Verify TLS; also stops init prompting",
                      "defaultValue": "false"
                    },
                    "OC_LOG_COLOR": {
                      "isOptional": false,
                      "description": "No ANSI colour in logs",
                      "defaultValue": "false"
                    },
                    "OC_LOG_LEVEL": {
                      "isOptional": true,
                      "description": "Log verbosity",
                      "defaultValue": "info"
                    },
                    "OC_LOG_PRETTY": {
                      "isOptional": false,
                      "description": "Machine-readable log lines",
                      "defaultValue": "false"
                    },
                    "PROXY_HTTP_ADDR": {
                      "isOptional": false,
                      "description": "Proxy listen address",
                      "defaultValue": "0.0.0.0:9200"
                    },
                    "COLLABORA_DOMAIN": {
                      "isOptional": false,
                      "description": "Editor host for the CSP",
                      "defaultValue": "${{collabora.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "IDM_ADMIN_PASSWORD": {
                      "isOptional": false,
                      "description": "Built-in admin password, read on first init",
                      "defaultValue": "{{IDM_ADMIN_PASSWORD}}"
                    },
                    "OC_ADD_RUN_SERVICES": {
                      "isOptional": false,
                      "description": "Run the WOPI service in-process",
                      "defaultValue": "collaboration"
                    },
                    "STORAGE_USERS_DRIVER": {
                      "isOptional": false,
                      "description": "User file bodies go to the bucket",
                      "defaultValue": "decomposeds3"
                    },
                    "GRAPH_AVAILABLE_ROLES": {
                      "isOptional": false,
                      "description": "Sharing roles including secure view",
                      "defaultValue": "b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049,aa97fe03-7980-45ac-9e50-b325749fd7e6"
                    },
                    "IDM_CREATE_DEMO_USERS": {
                      "isOptional": false,
                      "description": "Never create the public demo accounts",
                      "defaultValue": "false"
                    },
                    "SEARCH_EXTRACTOR_TYPE": {
                      "isOptional": false,
                      "description": "Extract document text with Tika",
                      "defaultValue": "tika"
                    },
                    "STORAGE_SYSTEM_DRIVER": {
                      "isOptional": false,
                      "description": "System data stays on the volume",
                      "defaultValue": "decomposed"
                    },
                    "COLLABORATION_APP_ADDR": {
                      "isOptional": false,
                      "description": "Editor base URL",
                      "defaultValue": "https://${{collabora.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "COLLABORATION_APP_ICON": {
                      "isOptional": false,
                      "description": "Editor icon",
                      "defaultValue": "https://${{collabora.RAILWAY_PUBLIC_DOMAIN}}/favicon.ico"
                    },
                    "COLLABORATION_APP_NAME": {
                      "isOptional": false,
                      "description": "Editor name shown in the UI",
                      "defaultValue": "CollaboraOnline"
                    },
                    "COLLABORATION_WOPI_SRC": {
                      "isOptional": false,
                      "description": "WOPI callback base URL",
                      "defaultValue": "https://${{RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "PROXY_ENABLE_BASIC_AUTH": {
                      "isOptional": false,
                      "description": "OIDC only, no basic auth",
                      "defaultValue": "false"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Dockerfile for this service",
                      "defaultValue": "Dockerfile"
                    },
                    "COLLABORATION_APP_PRODUCT": {
                      "isOptional": false,
                      "description": "Editor product label",
                      "defaultValue": "Collabora"
                    },
                    "COLLABORATION_APP_INSECURE": {
                      "isOptional": false,
                      "description": "Verify the editor's certificate",
                      "defaultValue": "false"
                    },
                    "FRONTEND_ARCHIVER_MAX_SIZE": {
                      "isOptional": false,
                      "description": "Max bytes per folder download",
                      "defaultValue": "10000000000"
                    },
                    "FRONTEND_CHECK_FOR_UPDATES": {
                      "isOptional": true,
                      "description": "Show upstream release notices",
                      "defaultValue": "true"
                    },
                    "PROXY_CSP_CONFIG_FILE_LOCATION": {
                      "isOptional": false,
                      "description": "Adds Collabora to the CSP",
                      "defaultValue": "/etc/opencloud-static/csp.yaml"
                    },
                    "SEARCH_EXTRACTOR_TIKA_TIKA_URL": {
                      "isOptional": false,
                      "description": "Private Tika endpoint",
                      "defaultValue": "${{tika.PRIVATE_URL}}"
                    },
                    "RAILWAY_HEALTHCHECK_TIMEOUT_SEC": {
                      "isOptional": false,
                      "description": "First-boot health check window",
                      "defaultValue": "300"
                    },
                    "COLLABORATION_APP_PROOF_DURATION": {
                      "isOptional": false,
                      "description": "WOPI proof key cache lifetime",
                      "defaultValue": "10m"
                    },
                    "FRONTEND_FULL_TEXT_SEARCH_ENABLED": {
                      "isOptional": false,
                      "description": "Offer content search in the UI",
                      "defaultValue": "true"
                    },
                    "STORAGE_USERS_DECOMPOSEDS3_BUCKET": {
                      "isOptional": false,
                      "description": "Bucket name",
                      "defaultValue": "${{opencloud-blobs.BUCKET}}"
                    },
                    "STORAGE_USERS_DECOMPOSEDS3_REGION": {
                      "isOptional": false,
                      "description": "Bucket region",
                      "defaultValue": "${{opencloud-blobs.REGION}}"
                    },
                    "STORAGE_USERS_EVENTS_NUM_CONSUMERS": {
                      "isOptional": false,
                      "description": "Postprocessing event consumers",
                      "defaultValue": "5"
                    },
                    "STORAGE_USERS_DECOMPOSEDS3_ENDPOINT": {
                      "isOptional": false,
                      "description": "Bucket endpoint",
                      "defaultValue": "${{opencloud-blobs.ENDPOINT}}"
                    },
                    "STORAGE_USERS_DECOMPOSEDS3_ACCESS_KEY": {
                      "isOptional": false,
                      "description": "Bucket access key",
                      "defaultValue": "${{opencloud-blobs.ACCESS_KEY_ID}}"
                    },
                    "STORAGE_USERS_DECOMPOSEDS3_SECRET_KEY": {
                      "isOptional": false,
                      "description": "Bucket secret key",
                      "defaultValue": "${{opencloud-blobs.SECRET_ACCESS_KEY}}"
                    },
                    "OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST": {
                      "isOptional": false,
                      "description": "Rejected link passwords",
                      "defaultValue": "/etc/opencloud-static/banned-password-list.txt"
                    },
                    "COLLABORATION_CS3API_DATAGATEWAY_INSECURE": {
                      "isOptional": false,
                      "description": "Verify the data gateway certificate",
                      "defaultValue": "false"
                    },
                    "FRONTEND_APP_HANDLER_SECURE_VIEW_APP_ADDR": {
                      "isOptional": false,
                      "description": "Secure-view provider",
                      "defaultValue": "eu.opencloud.api.collaboration"
                    },
                    "OC_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD": {
                      "isOptional": false,
                      "description": "Force a password on public links",
                      "defaultValue": "true"
                    },
                    "OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD": {
                      "isOptional": true,
                      "description": "Upload links may skip the password",
                      "defaultValue": "false"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:9200": {
                        "port": 9200
                      }
                    }
                  },
                  "volumeMounts": {
                    "5d576eac-3722-40b0-bb70-4ecea8eab51a": {
                      "mountPath": "/data"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "collabora",
      "method": "GET",
      "path": "/hosting/discovery",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 3,
    "needs_volume": true
  },
  "generated_at": "2026-09-04T17:54:19.363Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-04T17:58:48.446Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_840d06e554844223aa5d",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "healthcheck",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 204,
    "typical_build_seconds": 81,
    "typical_start_seconds": 10,
    "slowest_service": "opencloud"
  }
}
