{
  "manifest_version": "1.0.0",
  "template": {
    "id": "bb3c87cc-cb18-4af4-b800-b26d62a6849e",
    "slug": "swagger-ui",
    "name": "Swagger UI",
    "description": "An interactive documentation built from an OpenAPI specification",
    "url": "https://railway.com/deploy/swagger-ui",
    "upstream": {
      "image": "swaggerapi/swagger-ui"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "Swagger UI",
      "source": {
        "image": "swaggerapi/swagger-ui"
      },
      "needs_volume": false,
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "URL",
      "service": "Swagger UI",
      "description": "The public URL pointing to API definition (normally swagger.json or swagger.yaml)",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "PORT",
      "service": "Swagger UI",
      "description": "Provide a value for PORT.",
      "secret": false,
      "strategy": "default",
      "default": "80"
    },
    {
      "key": "FILTER",
      "service": "Swagger UI",
      "description": "Either \"true\", \"false\" or a string. If set, enables filtering. The top bar will show an edit box that you can use to filter the tagged operations that are shown. Can be Boolean to enable or disable, or a string, in which case filtering will be enabled using that string as the filter expression. Filtering is case sensitive matching the filter expression anywhere inside the tag",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "DOC_EXPANSION",
      "service": "Swagger UI",
      "description": "Controls the default expansion setting for the operations and tags. It can be 'list' (expands only the tags), 'full' (expands the tags and operations) or 'none' (expands nothing)",
      "secret": false,
      "strategy": "default",
      "default": "list"
    },
    {
      "key": "SHOW_EXTENSIONS",
      "service": "Swagger UI",
      "description": "Controls the display of vendor extension (x-) fields and values for Operations, Parameters, Responses, and Schema",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "DISPLAY_OPERATION_ID",
      "service": "Swagger UI",
      "description": "Controls the display of operationId in operations list",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "PERSIST_AUTHORIZATION",
      "service": "Swagger UI",
      "description": "If set to true, it persists authorization data and it would not be lost on browser close/refresh",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "SHOW_COMMON_EXTENSIONS",
      "service": "Swagger UI",
      "description": "Controls the display of extensions (pattern, maxLength, minLength, maximum, minimum) fields and values for Parameters",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "DEFAULT_MODEL_RENDERING",
      "service": "Swagger UI",
      "description": "Either \"example\" or \"model\", controls how the model is shown when the API is first rendered. (The user can always switch the rendering for a given model by clicking the 'Model' and 'Example Value' links)",
      "secret": false,
      "strategy": "default",
      "default": "example"
    },
    {
      "key": "DISPLAY_REQUEST_DURATION",
      "service": "Swagger UI",
      "description": "Controls the display of the request duration (in milliseconds) for \"Try it out\" requests",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "SUPPORTED_SUBMIT_METHODS",
      "service": "Swagger UI",
      "description": "List of HTTP methods that have the \"Try it out\" feature enabled. An empty array disables \"Try it out\" for all operations. This does not filter the operations from the display",
      "secret": false,
      "strategy": "default",
      "default": "[\"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\", \"trace\"]"
    },
    {
      "key": "DEFAULT_MODEL_EXPAND_DEPTH",
      "service": "Swagger UI",
      "description": "The default expansion depth for the model on the model-example section",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "DEFAULT_MODELS_EXPAND_DEPTH",
      "service": "Swagger UI",
      "description": "The default expansion depth for models (set to -1 completely hide the models)",
      "secret": false,
      "strategy": "default",
      "default": "1"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "swagger-ui"
      }
    },
    "cli": "railway deploy --template swagger-ui",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "bb3c87cc-cb18-4af4-b800-b26d62a6849e",
            "serializedConfig": {
              "services": {
                "4850984c-fb86-4f4e-a230-48d23bc4068d": {
                  "name": "Swagger UI",
                  "deploy": {
                    "healthcheckPath": "/"
                  },
                  "source": {
                    "image": "swaggerapi/swagger-ui"
                  },
                  "variables": {
                    "URL": {
                      "isOptional": false,
                      "description": "The public URL pointing to API definition (normally swagger.json or swagger.yaml)",
                      "defaultValue": "{{URL}}"
                    },
                    "PORT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "80"
                    },
                    "FILTER": {
                      "isOptional": true,
                      "description": "Either \"true\", \"false\" or a string. If set, enables filtering. The top bar will show an edit box that you can use to filter the tagged operations that are shown. Can be Boolean to enable or disable, or a string, in which case filtering will be enabled using that string as the filter expression. Filtering is case sensitive matching the filter expression anywhere inside the tag",
                      "defaultValue": "false"
                    },
                    "DEEP_LINKING": {
                      "isOptional": true,
                      "description": "If set to true, enables deep linking for tags and operations which will add fragments in the URL which will link to the specific parts",
                      "defaultValue": ""
                    },
                    "DOC_EXPANSION": {
                      "isOptional": true,
                      "description": "Controls the default expansion setting for the operations and tags. It can be 'list' (expands only the tags), 'full' (expands the tags and operations) or 'none' (expands nothing)",
                      "defaultValue": "list"
                    },
                    "SHOW_EXTENSIONS": {
                      "isOptional": true,
                      "description": "Controls the display of vendor extension (x-) fields and values for Operations, Parameters, Responses, and Schema",
                      "defaultValue": "false"
                    },
                    "TRY_IT_OUT_ENABLED": {
                      "isOptional": true,
                      "description": "Either \"true\" or \"false\", controls whether the \"Try it out\" section should be enabled by default",
                      "defaultValue": ""
                    },
                    "DISPLAY_OPERATION_ID": {
                      "isOptional": true,
                      "description": "Controls the display of operationId in operations list",
                      "defaultValue": "false"
                    },
                    "PERSIST_AUTHORIZATION": {
                      "isOptional": true,
                      "description": "If set to true, it persists authorization data and it would not be lost on browser close/refresh",
                      "defaultValue": "false"
                    },
                    "SHOW_COMMON_EXTENSIONS": {
                      "isOptional": true,
                      "description": "Controls the display of extensions (pattern, maxLength, minLength, maximum, minimum) fields and values for Parameters",
                      "defaultValue": "false"
                    },
                    "DEFAULT_MODEL_RENDERING": {
                      "isOptional": true,
                      "description": "Either \"example\" or \"model\", controls how the model is shown when the API is first rendered. (The user can always switch the rendering for a given model by clicking the 'Model' and 'Example Value' links)",
                      "defaultValue": "example"
                    },
                    "DISPLAY_REQUEST_DURATION": {
                      "isOptional": true,
                      "description": "Controls the display of the request duration (in milliseconds) for \"Try it out\" requests",
                      "defaultValue": "false"
                    },
                    "SUPPORTED_SUBMIT_METHODS": {
                      "isOptional": true,
                      "description": "List of HTTP methods that have the \"Try it out\" feature enabled. An empty array disables \"Try it out\" for all operations. This does not filter the operations from the display",
                      "defaultValue": "[\"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\", \"trace\"]"
                    },
                    "DEFAULT_MODEL_EXPAND_DEPTH": {
                      "isOptional": true,
                      "description": "The default expansion depth for the model on the model-example section",
                      "defaultValue": "1"
                    },
                    "DEFAULT_MODELS_EXPAND_DEPTH": {
                      "isOptional": true,
                      "description": "The default expansion depth for models (set to -1 completely hide the models)",
                      "defaultValue": "1"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "Swagger UI",
      "method": "GET",
      "path": "/",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 1,
    "needs_volume": false
  },
  "generated_at": "2026-09-20T16:14:49.616Z",
  "generator_version": "0.1.0"
}
