def validate = ApiJsonEndpoint()

in riff-raff/app/controllers/api.scala [452:499]


  def validate = ApiJsonEndpoint("validate") { implicit request =>
    request.body.asText.fold {
      Json.obj(
        "response" -> Json.obj(
          "status" -> "error",
          "errors" -> Json.arr("No configuration provided in request body")
        )
      )
    } { body =>
      val validatedGraph =
        YamlResolver.resolveDeploymentGraph(body, deploymentTypes, All)
      validatedGraph match {
        case Valid(graph) =>
          Json.obj(
            "response" -> Json.obj(
              "status" -> "ok",
              "result" -> "passed",
              "deployments" -> graph.toList.map { deployment =>
                Json.obj(
                  "name" -> deployment.name,
                  "type" -> deployment.`type`,
                  "stacks" -> deployment.stacks.toList,
                  "regions" -> deployment.regions.toList,
                  "actions" -> deployment.actions.toList,
                  "app" -> deployment.app,
                  "contentDirectory" -> deployment.contentDirectory,
                  "dependencies" -> deployment.dependencies,
                  "parameters" -> deployment.parameters
                )
              }
            )
          )
        case Invalid(errors) =>
          Json.obj(
            "response" -> Json.obj(
              "status" -> "ok",
              "result" -> "failed",
              "errors" -> errors.errors.toList.map { err =>
                Json.obj(
                  "context" -> err.context,
                  "message" -> err.message
                )
              }
            )
          )
      }
    }
  }