{"openapi":"3.0.0","paths":{"\/projects":{"get":{"description":"The `Get all Projects` request fetches the list of all projects in your organization.","operationId":"ProjectsController_projectsV1","parameters":[{"name":"skip","required":false,"in":"query","description":"The \"skip\" parameter will skip a specific number of projects in the output. For example, if there are 20 projects and you want to skip the first 2 to get only the last 12 in the response body, you need to specify \"2\" here.","schema":{"type":"integer","minimum":0}},{"name":"limit","required":false,"in":"query","description":"The \"limit\" parameter will return a specific number of projects (in between 0-100) in your response based on the value you provide. If there are 20 projects and you want to fetch only 10 projects, set the limit as 10.","schema":{"type":"integer","minimum":0,"maximum":100}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"List of Projects","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/ProjectsResponse"}},"example":{"pagination":{"count":3,"limit":10,"skip":0},"projects":[{"uid":"68a327xxxxxxxx9d0d3","name":"Sample Project","organizationUid":"blt483xxxxxxx3589","repository":{"repositoryName":"test\/Calculator","username":"test","repositoryUrl":"https:\/\/github.com\/test\/Calculator"},"deletedAt":null,"createdBy":"blt731xxxxxdc963","updatedBy":"blt731xxxxxdc963","deletedBy":null,"createdAt":"2025-08-18T13:17:18.261Z","updatedAt":"2025-10-09T09:36:16.484Z","projectType":"GITPROVIDER"},{"uid":"68b02f0xxxxxd6461d","name":"music","organizationUid":"blt483xxxxx83589","repository":{"repositoryName":"test\/music","username":"test","repositoryUrl":"https:\/\/github.com\/test\/music"},"deletedAt":null,"createdBy":"blt731xxxxxdc963","updatedBy":"blt731xxxxxdc963","deletedBy":null,"createdAt":"2025-08-28T10:27:15.850Z","updatedAt":"2025-08-28T10:27:31.065Z","projectType":"GITPROVIDER"},{"uid":"689597axxxxxx47673","name":"nextjs-ssr-isr","organizationUid":"blt483xxxxx83589","repository":{"repositoryName":"test\/nextjs-ssr-isr","username":"test","repositoryUrl":"https:\/\/github.com\/test\/nextjs-ssr-isr"},"deletedAt":null,"createdBy":"blt7315xxxxxxdc963","updatedBy":"blt7315xxxxxxdc963","deletedBy":null,"createdAt":"2025-08-08T06:22:25.536Z","updatedAt":"2025-08-08T06:23:58.338Z","projectType":"GITPROVIDER"}]}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.GET_FAILED","message":"Project get failed."}],"status":500}}}}},"summary":"Get all Projects","tags":["Projects"]},"post":{"description":"The `Create Project` request creates a project in Launch using either a `Git Provider` or `File Upload`.\n\nThe examples below explain how to create projects using a Git Provider or the File Upload option.","operationId":"ProjectsController_createProjectV1","parameters":[{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"The examples below explain how to create projects using a Git Provider or the File Upload option.","content":{"application\/json":{"schema":{"type":"string"},"examples":{"createProjectForGitProvider":{"summary":"Create a Project Using Git Provider","value":{"name":"Sample project","environment":{"name":"Test Environment","outputDirectory":".\/_site","frameworkPreset":"OTHER","description":"It is a test environment.","gitBranch":"main","buildCommand":"npx @11ty\/eleventy","environmentVariables":[],"autoDeployOnPush":true},"repository":{"repositoryName":"TestUser20\/eleventy-base-blog","username":"TestUser20","repositoryUrl":"https:\/\/github.com\/TestUser20\/eleventy-base-blog","gitProviderMetadata":{"gitProvider":"GitHub"}},"projectType":"GITPROVIDER","description":"Sample description"},"description":"To create a Git Provider based project, complete the following prerequisites:\n1. <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/launch\/import-project-using-github\">Connect your Git Provider account<\/a> (GitHub or Bitbucket). \n2. Ensure you have access to the repository you want to connect. \n3. Enter the repository name, username, and repository URL."},"createProjectForFileUpload":{"summary":"Create a Project by FileUpload","value":{"name":"Sample file upload project","environment":{"name":"Test Environment","outputDirectory":".\/_site","frameworkPreset":"OTHER","description":"It is a test environment.","buildCommand":"npx @11ty\/eleventy","environmentVariables":[],"autoDeployOnPush":true},"projectType":"FILEUPLOAD","description":"Sample description","fileUpload":{"uploadUid":"50xxxxa8"}},"description":"To create a project using FileUpload, you must run the following APIs step-by-step:\n1. <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/apis\/launch-api#get-a-signed-upload-url-for-a-project\">Get a Signed Upload URL for a Project<\/a>. \n2. <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/launch\/upload-your-deployment-zip-file-to-launch\">Upload your ZIP file to Launch<\/a> (The signed URL is valid only for 10 minutes)."}}}}},"responses":{"200":{"description":"Project created successfully.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectResponse"},"example":{"project":{"uid":"68a327xxxxxxxx9d0d3","name":"Sample Project","organizationUid":"blt483xxxxxxx3589","repository":{"repositoryName":"TestUser20\/eleventy-base-blog","username":"TestUser20","repositoryUrl":"https:\/\/github.com\/TestUser20\/eleventy-base-blog"},"deletedAt":null,"createdBy":"blt731xxxxxdc963","updatedBy":"blt731xxxxxdc963","deletedBy":null,"createdAt":"2025-08-18T13:17:18.261Z","updatedAt":"2025-10-09T09:36:16.484Z","projectType":"GITPROVIDER"}}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"name":{"code":"launch.PROJECT.NAME.TOO_LONG","message":"Project name should be less than or equal to 200 characters."}}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.CREATE_FAILED","message":"Project create failed."}],"status":500}}}}},"summary":"Create a Project","tags":["Projects"]}},"\/projects\/{project_uid}":{"get":{"description":"The `Get a Project` request fetches a specific project in Launch using the `project_uid` path parameter.","operationId":"ProjectsController_projectV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project that you want to retrieve","schema":{"example":"663******************2"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"List a project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectResponse"},"example":{"project":{"uid":"68a327xxxxxxxx9d0d3","name":"Sample Project","organizationUid":"blt483xxxxxxx3589","repository":{"repositoryName":"TestUser20\/eleventy-base-blog","username":"TestUser20","repositoryUrl":"https:\/\/github.com\/TestUser20\/eleventy-base-blog"},"deletedAt":null,"createdBy":"blt731xxxxxdc963","updatedBy":"blt731xxxxxdc963","deletedBy":null,"createdAt":"2025-08-18T13:17:18.261Z","updatedAt":"2025-10-09T09:36:16.484Z","projectType":"GITPROVIDER"}}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Project not found.","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.NOT_FOUND","message":"Project not found."}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.GET_FAILED","message":"Project get failed."}],"status":500}}}}},"summary":"Get a Project","tags":["Projects"]},"put":{"description":"The `Update a Project` request lets you update an existing project in your organization.","operationId":"ProjectsController_updateProjectV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project that you want to update.","schema":{"example":"663******************2"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Update Project request body.","content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Updated project name.","example":"test"},"description":{"type":"string","description":"Updated project description.","example":"This is a test project."}}},"examples":{"UpdateProject":{"summary":"Update a Project","value":{"name":"test","description":"This is a test project."}}}}}},"responses":{"200":{"description":"Project updated successfully.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectResponse"},"example":{"project":{"uid":"68a327xxxxxxxx9d0d3","name":"test","organizationUid":"blt483xxxxxxx3589","repository":{"repositoryName":"TestUser20\/eleventy-base-blog","username":"TestUser20","repositoryUrl":"https:\/\/github.com\/TestUser20\/eleventy-base-blog"},"deletedAt":null,"createdBy":"blt731xxxxxdc963","updatedBy":"blt731xxxxxdc963","deletedBy":null,"createdAt":"2025-08-18T13:17:18.261Z","updatedAt":"2025-10-09T09:36:16.484Z","projectType":"GITPROVIDER","description":"This is a test project."}}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"name":{"code":"launch.PROJECT.NAME.TOO_LONG","message":"Project name should be less than or equal to 200 characters."}}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Project not found.","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.NOT_FOUND","message":"Project not found."}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.UPDATE_FAILED","message":"Project update failed."}],"status":500}}}}},"summary":"Update a Project","tags":["Projects"]},"delete":{"description":"The `Delete a Project` request lets you delete an existing project in your organization.","operationId":"ProjectsController_deleteProjectV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project that you want to delete.","schema":{"example":"662*****************0"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"204":{"description":"Project deleted successfully."},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Project not found.","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.NOT_FOUND","message":"Project not found."}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.DELETE_FAILED","message":"Project delete failed."}],"status":500}}}}},"summary":"Delete a Project","tags":["Projects"]}},"\/projects\/{project_uid}\/git-repository":{"patch":{"operationId":"ProjectsController_transferGitRepositoryV1","parameters":[{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/TransferGitRepositoryInput"}}}},"responses":{"200":{"description":""}},"tags":["Projects"]}},"\/projects\/{project_uid}\/environments":{"get":{"description":"The `Get all Environments` request fetches the list of all environments in your project.","operationId":"EnvironmentsController_environmentsV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where the environments belong.","schema":{"example":"663******************2","type":"string"}},{"name":"skip","required":false,"in":"query","description":"The \"skip\" parameter will skip a specific number of environments in the output. For example, if there are 20 environments and you want to skip the first 2 to get only the last 12 in the response body, you need to specify \"2\" here.","schema":{"type":"integer","minimum":0}},{"name":"limit","required":false,"in":"query","description":"The \"limit\" parameter will return a specific number of environments (in between 0-100) in your response based on the value you provide. If there are 20 environments and you want to fetch only 10 environments, set the limit as 10.","schema":{"type":"integer","minimum":0,"maximum":100}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"List of environments","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/EnvironmentsAPIResponse"}},"example":{"pagination":{"count":1,"limit":10,"skip":0},"environments":[{"uid":"690xxxxxxxxxxxxxx95f","name":"Test Environment","description":"It is a test environment.","project":"691xxxxxxxxxxxxx9103","gitBranch":"main","buildCommand":"npx @11ty\/eleventy","outputDirectory":".\/_site","frameworkPreset":"OTHER","environmentVariables":[{"key":"key1","value":"value1"}],"autoDeployOnPush":true,"nodeVersion":"22","organizationUid":"bltxxxxxxxxxxxx3589","createdAt":"2025-11-06T07:39:19.230Z","updatedAt":"2025-11-06T07:39:53.582Z","createdBy":"bltxxxxxxxxxxxx5783","updatedBy":"bltxxxxxxxxxxxx5783","hasLyticsEnabled":false,"isCachePrimingEnabled":false,"passwordProtection":{"isEnabled":false}}]}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.GET_FAILED","message":"Environment get failed."}],"status":500}}}}},"summary":"Get all Environments","tags":["Environments"]},"post":{"description":"The `Create Environment` request lets you create a new environment in your Launch project.\n\nThe examples below explain how to create environments using a Git Provider or the File Upload option.","operationId":"EnvironmentsController_createEnvironmentV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where you want to create the environment.","schema":{"example":"690*****************58"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"The examples below explain how to create environments using a Git Provider or the File Upload option.","content":{"application\/json":{"schema":{"type":"string"},"examples":{"createEnvironmentForGitProvider":{"summary":"Create an Environment Using Git Provider","value":{"name":"Test Environment","outputDirectory":".\/_site","frameworkPreset":"OTHER","description":"It is a test environment.","gitBranch":"main","buildCommand":"npx @11ty\/eleventy","environmentVariables":[{"key":"key1","value":"value1"}],"autoDeployOnPush":true},"description":"To create an environment for a Git Provider based project, complete the following prerequisites: \n1. Ensure your project is connected to a Git Provider account (GitHub or Bitbucket). \n2. Ensure the specified Git branch exists in your connected repository. \n3. Enter the Git branch you want to deploy for this environment."},"createEnvironmentForFileUpload":{"summary":"Create an Environment by FileUpload","value":{"name":"Test Environment","outputDirectory":".\/","frameworkPreset":"OTHER","description":"It is a test environment.","uploadUid":"8dxxxxxx00","buildCommand":"npm run build","serverCommand":"npm run start","environmentVariables":[{"key":"key1","value":"value1"}],"autoDeployOnPush":true},"description":"To create an environment using FileUpload, you must run the following APIs step-by-step: \n1. <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/apis\/launch-api#get-a-signed-upload-url-for-an-environment\">Get a Signed Upload URL for an Environment<\/a>. \n2. <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/launch\/upload-your-deployment-zip-file-to-launch\">Upload your ZIP file to Launch<\/a> (The signed URL is valid only for 10 minutes)."}}}}},"responses":{"200":{"description":"Environment created successfully","content":{"application\/json":{"example":{"environment":{"uid":"690xxxxxxxxxxxxxx95f","name":"Test Environment","description":"It is a test environment.","project":"691xxxxxxxxxxxxx9103","gitBranch":"main","buildCommand":"npx @11ty\/eleventy","outputDirectory":".\/_site","frameworkPreset":"OTHER","environmentVariables":[{"key":"key1","value":"value1"}],"autoDeployOnPush":true,"nodeVersion":"22","organizationUid":"bltxxxxxxxxxxxx3589","createdAt":"2025-11-06T07:39:19.230Z","updatedAt":"2025-11-06T07:39:53.582Z","createdBy":"bltxxxxxxxxxxxx5783","updatedBy":"bltxxxxxxxxxxxx5783","hasLyticsEnabled":false,"isCachePrimingEnabled":false,"passwordProtection":{"isEnabled":false}}}}}},"400":{"description":"Environment input is invalid","content":{"application\/json":{"example":{"errors":[{"gitBranch":{"code":"launch.ENVIRONMENT.INPUT_INVALID","message":"Environment input is invalid."}}],"status":400}}}},"403":{"description":"Environments limit reached","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.LIMIT_REACHED","message":"Environments limit reached."}],"status":403}}}},"404":{"description":"Git commit not found","content":{"application\/json":{"example":{"errors":[{"code":"launch.GIT.COMMIT_NOT_FOUND","message":"Git commit not found."}],"status":404}}}},"409":{"description":"Environment already exists","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.DUPLICATE_NAME","message":"Environment name already exists."}],"status":409}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.GET_FAILED","message":"Environment get failed."}],"status":500}}}}},"summary":"Create an Environment","tags":["Environments"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}":{"get":{"description":"The `Get an Environment` request fetches a specific environment from a project in Launch using the `project_uid` and `environment_uid` path parameters.","operationId":"EnvironmentsController_environmentV1","parameters":[{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment.","schema":{"example":"690*****************5f"}},{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where the environments belong.","schema":{"example":"690*****************58"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Environment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Environment"},"example":{"environment":{"uid":"690xxxxxxxxxxxxxx95f","name":"Test Environment","description":"It is a test environment.","project":"691xxxxxxxxxxxxx9103","gitBranch":"main","buildCommand":"npx @11ty\/eleventy","outputDirectory":".\/_site","frameworkPreset":"OTHER","environmentVariables":[{"key":"key1","value":"value1"}],"autoDeployOnPush":true,"nodeVersion":"22","organizationUid":"bltxxxxxxxxxxxx3589","createdAt":"2025-11-06T07:39:19.230Z","updatedAt":"2025-11-06T07:39:53.582Z","createdBy":"bltxxxxxxxxxxxx5783","updatedBy":"bltxxxxxxxxxxxx5783","hasLyticsEnabled":false,"isCachePrimingEnabled":false,"passwordProtection":{"isEnabled":false}}}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Environment not found","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.NOT_FOUND","message":"Environment not found."}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.GET_FAILED","message":"Environment get failed."}],"status":500}}}}},"summary":"Get an Environment","tags":["Environments"]},"put":{"description":"The `Update an Environment` request lets you update an existing environment in your project.","operationId":"EnvironmentsController_updateEnvironmentV1","parameters":[{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment that must be updated.","schema":{"example":"690*****************5f"}},{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where the environments belong.","schema":{"example":"690*****************58"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"string"},"examples":{"UpdateEnvironmentExample":{"value":{"name":"Test02","outputDirectory":".\/_site","frameworkPreset":"OTHER","description":"It is a dev environment 2.","gitBranch":"dev","buildCommand":"npx @11ty\/eleventy","autoDeployOnPush":true,"isCachePrimingEnabled":true,"hasLyticsEnabled":true,"passwordProtection":{"isEnabled":true,"username":"test-user","password":"test-password"},"environmentVariables":[{"key":"NEXT_PUBLIC_TEST_VARIABLE","value":"TEST_VALUE"}]}}}}}},"responses":{"200":{"description":"Environment updated successfully","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Environment"},"example":{"environment":{"uid":"690xxxxxxxxxxxxxx95f","name":"Test02","description":"It is a dev environment 2.","project":"691xxxxxxxxxxxxx9103","gitBranch":"main","buildCommand":"npx @11ty\/eleventy","outputDirectory":".\/_site","frameworkPreset":"OTHER","environmentVariables":[{"key":"NEXT_PUBLIC_TEST_VARIABLE","value":"TEST_VALUE"}],"autoDeployOnPush":true,"nodeVersion":"22","organizationUid":"bltxxxxxxxxxxxx3589","createdAt":"2025-11-06T07:39:19.230Z","updatedAt":"2025-11-06T07:39:53.582Z","createdBy":"bltxxxxxxxxxxxx5783","updatedBy":"bltxxxxxxxxxxxx5783","hasLyticsEnabled":true,"isCachePrimingEnabled":true,"passwordProtection":{"isEnabled":true}}}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"gitBranch":{"code":"launch.ENVIRONMENT.INPUT_INVALID","message":"Environment input is invalid."}}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Environment not found","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.NOT_FOUND","message":"Environment not found."}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.GET_FAILED","message":"Environment get failed."}],"status":500}}}}},"summary":"Update an Environment","tags":["Environments"]},"delete":{"description":"The `Delete an Environment` request lets you delete an existing environment in your project.","operationId":"EnvironmentsController_deleteEnvironmentV1","parameters":[{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment that must be deleted.","schema":{"example":"690*****************5f"}},{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where the environments belong.","schema":{"example":"690*****************58"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"204":{"description":"Environment deleted successfully."},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Environment not found","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.NOT_FOUND","message":"Environment not found."}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.GET_FAILED","message":"Environment get failed."}],"status":500}}}}},"summary":"Delete an Environment","tags":["Environments"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}\/revalidate-cdn-cache":{"post":{"description":"The `Revalidate CDN Cache` request lets you view the latest content after changes to your environment. The CDN checks for updates and fetches fresh content from the origin server if needed, without manually purging the cache. This helps maintain consistency across all domains sharing the same CDN configuration.\n\nThe examples below provide a detailed explanation on how to revalidate CDN cache with various options.","operationId":"EnvironmentsController_revalidateCDNCacheV1","parameters":[{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment.","schema":{"example":"690*****************5f"}},{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where the environments belong.","schema":{"example":"690*****************58"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"The examples below provide a detailed explanation on how to revalidate CDN cache with various options.","content":{"application\/json":{"schema":{"type":"string"},"examples":{"purgeNestedRoutes":{"summary":"Purge cache of nested routes under a specific path","value":{"cachePath":{"path":"\/blog","isPrefix":true}},"description":"Use the `cachePath` object with `isPrefix` set to `true` to purge the cache for all nested routes under a specific path (e.g., \/blog, \/blog\/article-1, \/blog\/category\/*)."},"purgeExactPath":{"summary":"Purge cache of a specific path","value":{"cachePath":{"path":"\/blog","isPrefix":false}},"description":"Use the `cachePath` object with `isPrefix` set to `false` to purge the cache for an exact path (e.g., \/blog)."},"purgeByCacheTags":{"summary":"Purge cache by cache tags","value":{"cacheTags":["blogs"]},"description":"Use `cacheTags` to purge the cache for routes tagged with specific cache tags."},"purgeByHostnames":{"summary":"Purge cache for specific hostnames","value":{"hostnames":["test.contentstackapps.com"]},"description":"Use `hostnames` to purge the cache for specific hostnames."}}}}},"responses":{"200":{"description":"The CDN cache revalidation task has been initiated.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RevalidateCDNCacheResponse"}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Environment not found","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.NOT_FOUND","message":"Environment not found."}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.GET_FAILED","message":"Environment get failed."}],"status":500}}}}},"summary":"Revalidate CDN Cache","tags":["Environments"]}},"\/projects\/upload\/signed_url":{"get":{"description":"The `Get a Signed Upload URL for a Project` request fetches the details of the signed URL where you must upload the file while creating a project.\n\nAs the next step, <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/launch\/upload-your-deployment-zip-file-to-launch\">Upload Your Deployment Zip File to the Signed URL<\/a>.","operationId":"FileRepositoryController_createSignedUploadUrlForProjectV1","parameters":[{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Contains signed upload URL details (method, URL, fields, and headers) for uploading the ZIP file to Launch when creating a project. The response format may vary by cloud provider.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SignedUploadUrl"},"example":{"uploadUrl":"https:\/\/test-upload-url.com","expiresIn":900,"uploadUid":"50xxxxa8","method":"POST","fields":[{"formFieldKey":"bucket","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Algorithm","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Credential","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Date","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Security-Token","formFieldValue":"<value>"},{"formFieldKey":"key","formFieldValue":"<value>"},{"formFieldKey":"Policy","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Signature","formFieldValue":"<value>"}],"headers":[{"key":"x-example-header","value":"x-example-value"}]}}}},"403":{"description":"Forbidden resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.PROJECT.FILE_UPLOAD_SIGNED_URL.GET_FAILED","message":"Get file upload signed url for a project failed."}],"status":500}}}}},"summary":"Get a Signed Upload URL for a Project","tags":["File Upload"]}},"\/projects\/{project_uid}\/environments\/upload\/signed_url":{"get":{"description":"The `Get a Signed Upload URL for an Environment` request fetches the details of the signed URL where you must upload the file when creating an environment.\n\nAs the next step, <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/launch\/upload-your-deployment-zip-file-to-launch\">Upload Your Deployment Zip File to the Signed URL<\/a>.","operationId":"FileRepositoryController_createSignedUploadUrlForEnvironmentV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the FILEUPLOAD project where the environments belong.","schema":{"example":"690*****************58","type":"string"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Contains signed upload URL details (method, URL, fields, and headers) for uploading the ZIP file to Launch when creating an environment. The response format may vary by cloud provider.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SignedUploadUrl"},"example":{"uploadUrl":"https:\/\/test-upload-url.com","expiresIn":900,"uploadUid":"50xxxxa8","method":"POST","fields":[{"formFieldKey":"bucket","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Algorithm","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Credential","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Date","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Security-Token","formFieldValue":"<value>"},{"formFieldKey":"key","formFieldValue":"<value>"},{"formFieldKey":"Policy","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Signature","formFieldValue":"<value>"}],"headers":[{"key":"x-example-header","value":"x-example-value"}]}}}},"403":{"description":"Forbidden resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.ENVIRONMENT.FILE_UPLOAD_SIGNED_URL.GET_FAILED","message":"Get file upload signed url for an environment failed."}],"status":500}}}}},"summary":"Get a Signed Upload URL for an Environment","tags":["File Upload"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}\/deployments\/upload\/signed_url":{"get":{"description":"The `Get a Signed Upload URL for a Deployment` request retrieves the details of the signed URL where you must upload the file when creating or redeploying a deployment.\n\nAs the next step, <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/launch\/upload-your-deployment-zip-file-to-launch\">Upload Your Deployment Zip File to the Signed URL<\/a>.","operationId":"FileRepositoryController_createSignedUploadUrlForDeploymentV1","parameters":[{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment where you want to create the deployment.","schema":{"example":"690*****************5f"}},{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the FILEUPLOAD project where the environments belong.","schema":{"example":"690*****************58"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Contains signed upload URL details (method, URL, fields, and headers) for uploading the ZIP file to Launch when creating a deployment. The response format may vary by cloud provider.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SignedUploadUrl"},"example":{"uploadUrl":"https:\/\/test-upload-url.com","expiresIn":900,"uploadUid":"50xxxxa8","method":"POST","fields":[{"formFieldKey":"bucket","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Algorithm","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Credential","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Date","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Security-Token","formFieldValue":"<value>"},{"formFieldKey":"key","formFieldValue":"<value>"},{"formFieldKey":"Policy","formFieldValue":"<value>"},{"formFieldKey":"X-Amz-Signature","formFieldValue":"<value>"}],"headers":[{"key":"x-example-header","value":"x-example-value"}]}}}},"403":{"description":"Forbidden resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT.FILE_UPLOAD_SIGNED_URL.GET_FAILED","message":"Get file upload signed url for a deployment failed."}],"status":500}}}}},"summary":"Get a Signed Upload URL for a Deployment","tags":["File Upload"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}\/deployments\/{deployment_uid}\/download\/signed_url":{"get":{"description":"The `Get a Download URL for the Uploaded File` request returns the signed URL to download the uploaded file from the latest deployment.","operationId":"FileRepositoryController_createSignedDownloadUrlV1","parameters":[{"name":"deployment_uid","required":true,"in":"path","description":"Deployment unique identifier of the latest deployment of an environment for which you want to fetch the download URL.","schema":{"example":"691c6261353331f76eb7c25e"}},{"name":"environment_uid","required":true,"in":"path","description":"Environment unique identifier associated with the deployment.","schema":{"example":"690*****************5f"}},{"name":"project_uid","required":true,"in":"path","description":"Project unique identifier of the FILEUPLOAD project where the environments belong.","schema":{"example":"690*****************58"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Signed download URL details for downloading the latest deployment's ZIP file.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SignedDownloadUrl"},"example":{"downloadUrl":"https:\/\/test-download-url.com","expiresIn":900}}}},"403":{"description":"Forbidden resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT.FILE_DOWNLOAD_SIGNED_URL.GET_FAILED","message":"Get file download signed url for a deployment failed."}],"status":500}}}}},"summary":"Get a Download URL for a Deployment","tags":["File Upload"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}\/deployments":{"get":{"description":"The `Get all Deployments` request fetches the list of all deployments within a specific environment of your project.","operationId":"DeploymentsController_deploymentsV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of your project.","schema":{"example":"690*****************58","type":"string"}},{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment where the deployments belong.","schema":{"example":"690*****************5f","type":"string"}},{"name":"skip","required":false,"in":"query","description":"The \"skip\" parameter will skip a specific number of deployments in the output. For example, if there are 20 deployments and you want to skip the first 2 to get only the last 12 in the response body, you need to specify \"2\" here.","schema":{"type":"integer","minimum":0}},{"name":"limit","required":false,"in":"query","description":"The \"limit\" parameter will return a specific number of deployments (in between 0-100) in your response based on the value you provide. If there are 20 deployments and you want to fetch only 10 deployments, set the limit as 10.","schema":{"type":"integer","minimum":0,"maximum":100}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"List of deployments","content":{"application\/json":{"example":{"pagination":{"count":1},"deployments":[{"uid":"690cxxxxxxxxxxxxx96a","environment":"691xxxxxxxxxxxxxxx1315","project":"691xxxxxxxxxxxxxxxx1316","gitBranch":"main","deploymentUrl":"sample-project.contentstackapps.com","repositoryUrl":"https:\/\/github.com\/Vaxxxxxxxx20\/eleventy-base-blog","commitHash":"4f0axxxxxxxxxxxxb75ea","commitMessage":"Merge pull request #151 from DougReeder\/style-src-self\n\nRefactors style bundling so it's easy to avoid an insecure CSP","commitUrl":"https:\/\/github.com\/Vaxxxxxxxx20\/eleventy-base-blog\/commit\/4f0a64d7xxxxxxxxxxxxxxx2b75ea","buildCommand":"npx @11ty\/eleventy","outputDirectory":".\/_site","frameworkPreset":"OTHER","isCSRFramework":false,"environmentVariables":[],"status":"LIVE","isCancellable":false,"latest":true,"deploymentNumber":1,"createdAt":"2025-11-06T07:39:20.071Z","createdBy":"bltxxxxxxxx5783","previewUrl":"https:\/\/images.contentstack.io\/v3\/assets\/bltxxxxxxxxx7b34\/bltxxxxxxxx45f\/690xxxxxxxxxxxx193\/690xxxxxxxxxxc96a-preview.png","updatedAt":"2025-11-06T07:39:58.426Z","durationInSeconds":25.032954443,"nodeVersion":"22"}]}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"code":"launch.BAD_REQUEST","message":"Bad request"}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT.GET_FAILED"}],"status":500}}}}},"summary":"Get all Deployments","tags":["Deployments"]},"post":{"description":"The `Create Deployment` request lets you create a new deployment in your Launch project.\n\nThe examples below explain how to create deployments using a Git Provider, Newly Uploaded File, or the Previously File Upload option.","operationId":"DeploymentsController_createDeploymentV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of your project.","schema":{"example":"690*****************58","type":"string"}},{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment where you want to create the deployment.","schema":{"example":"690*****************5f","type":"string"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"requestBody":{"required":false,"description":"nThe examples below explain how to create deployments using a Git Provider, Newly Uploaded File, or the Previously File Upload option.","content":{"application\/json":{"schema":{"type":"string"},"examples":{"createDeploymentForGitProvider":{"summary":"Create a Deployment Using Git Provider","value":{"commitHash":"4f0xxxxxxxxxxxxxxxxxxxxxxxxxxxx75ea"},"description":"To create a deployment for a Git Provider based project, enter the commit hash you want to deploy. The commit hash should correspond to a valid commit in your connected Git repository."},"createDeploymentWithPreviouslyUploadedFile":{"summary":"Create a Deployment Using a Previously Uploaded File","value":{},"description":"To create a deployment using a previously uploaded file, the system uses the most recent file uploaded to your project."},"createDeploymentWithNewFileUpload":{"summary":"Create a Deployment Using a Newly Uploaded File","value":{"uploadUid":"133xxxxbe8"},"description":"To create a deployment using FileUpload, you must run the following APIs step-by-step:\n1. <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/apis\/launch-api#get-a-signed-upload-url-for-a-deployment\">Get a Signed Upload URL for a Deployment<\/a>. \n2. <a href=\"https:\/\/www.contentstack.com\/docs\/developers\/launch\/upload-your-deployment-zip-file-to-launch\">Upload your ZIP file to Launch<\/a> (The signed URL is valid only for 10 minutes).\n"}}}}},"responses":{"200":{"description":"Deployment created successfully","content":{"application\/json":{"example":{"deployment":{"uid":"690cxxxxxxxxxxxxx96a","environment":"691xxxxxxxxxxxxxxx1315","project":"691xxxxxxxxxxxxxxxx1316","gitBranch":"main","deploymentUrl":"sample-project.contentstackapps.com","repositoryUrl":"https:\/\/github.com\/Vaxxxxxxxx20\/eleventy-base-blog","commitHash":"4f0axxxxxxxxxxxxb75ea","commitMessage":"Merge pull request #151 from DougReeder\/style-src-self\n\nRefactors style bundling so it's easy to avoid an insecure CSP","commitUrl":"https:\/\/github.com\/Vaxxxxxxxx20\/eleventy-base-blog\/commit\/4f0a64d7xxxxxxxxxxxxxxx2b75ea","buildCommand":"npx @11ty\/eleventy","outputDirectory":".\/_site","frameworkPreset":"OTHER","isCSRFramework":false,"environmentVariables":[],"status":"LIVE","isCancellable":false,"latest":true,"deploymentNumber":1,"createdAt":"2025-11-06T07:39:20.071Z","createdBy":"bltxxxxxxxx5783","previewUrl":"https:\/\/images.contentstack.io\/v3\/assets\/bltxxxxxxxxx7b34\/bltxxxxxxxx45f\/690xxxxxxxxxxxx193\/690xxxxxxxxxxc96a-preview.png","updatedAt":"2025-11-06T07:39:58.426Z","durationInSeconds":25.032954443,"nodeVersion":"22"}}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"code":"launch.BAD_REQUEST","message":"Bad request"}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT.CREATE_FAILED"}],"status":500}}}}},"summary":"Create a Deployment","tags":["Deployments"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}\/deployments\/{deployment_uid}":{"get":{"description":"The `Get a Deployment` request retrieves a specific deployment from an environment of your project in Launch using the `project_uid`, `environment_uid`, and `deployment_uid` path parameters.","operationId":"DeploymentsController_deploymentV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of your project.","schema":{"example":"690*****************58","type":"string"}},{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment where the deployments belong.","schema":{"example":"690*****************5f","type":"string"}},{"name":"deployment_uid","required":true,"in":"path","description":"Enter the `deployment_uid` of the deployment that must be retrieved.","schema":{"example":"690*****************6a","type":"string"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Single deployment","content":{"application\/json":{"example":{"deployment":{"uid":"690cxxxxxxxxxxxxx96a","environment":"691xxxxxxxxxxxxxxx1315","project":"691xxxxxxxxxxxxxxxx1316","gitBranch":"main","deploymentUrl":"sample-project.contentstackapps.com","repositoryUrl":"https:\/\/github.com\/Vaxxxxxxxx20\/eleventy-base-blog","commitHash":"4f0axxxxxxxxxxxxb75ea","commitMessage":"Merge pull request #151 from DougReeder\/style-src-self\n\nRefactors style bundling so it's easy to avoid an insecure CSP","commitUrl":"https:\/\/github.com\/Vaxxxxxxxx20\/eleventy-base-blog\/commit\/4f0a64d7xxxxxxxxxxxxxxx2b75ea","buildCommand":"npx @11ty\/eleventy","outputDirectory":".\/_site","frameworkPreset":"OTHER","isCSRFramework":false,"environmentVariables":[],"status":"LIVE","isCancellable":false,"latest":true,"deploymentNumber":1,"createdAt":"2025-11-06T07:39:20.071Z","createdBy":"bltxxxxxxxx5783","previewUrl":"https:\/\/images.contentstack.io\/v3\/assets\/bltxxxxxxxxx7b34\/bltxxxxxxxx45f\/690xxxxxxxxxxxx193\/690xxxxxxxxxxc96a-preview.png","updatedAt":"2025-11-06T07:39:58.426Z","durationInSeconds":25.032954443,"nodeVersion":"22"}}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"code":"launch.BAD_REQUEST","message":"Bad request"}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT.GET_FAILED"}],"status":500}}}}},"summary":"Get a Deployment","tags":["Deployments"]}},"\/usage-analytics\/revalidate-cdn-cache":{"get":{"description":"Returns the current cache revalidation count, maximum limit and reset time for the organization.","operationId":"LaunchProductAnalyticsController_getCacheRevalidationUsage","parameters":[{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Cache revalidation usage data","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CacheRevalidationUsageResponse"}}}},"403":{"description":"Forbidden Resource"},"500":{"description":"Internal Server Error"}},"summary":"Get cache revalidation usage","tags":["Launch Product Analytics"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}\/deployments\/{deployment_uid}\/logs\/deployment-logs":{"get":{"description":"The `Get Deployment Logs` request fetches the deployment logs of a specific deployment of an environment of your project in Launch using the `project_uid`, `environment_uid`, and `deployment_uid` path parameters.","operationId":"DeploymentLogsController_getDeploymentLogsV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where the environments belong.","schema":{"example":"690*******************58","type":"string"}},{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment associated with your deployment.","schema":{"example":"690*******************5f","type":"string"}},{"name":"deployment_uid","required":true,"in":"path","description":"Enter the `deployment_uid` for the deployment whose deployment logs you want to retrieve.","schema":{"example":"691*******************e9","type":"string"}},{"name":"timestamp","required":false,"in":"query","description":"Provide the timestamp value in string (for example, `2025-11-17T11:03:06.89Z`). The timestamp must be UTC Zulu.","schema":{"example":"2023-01-01T00:00:00Z","type":"string"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Deployment logs retrieved successfully","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeploymentLogsAPIResponse"},"example":{"deploymentLogs":[{"deploymentUid":"690cxxxxxxxxxxxxx96a","message":"Installing dependencies...","timestamp":"2025-11-18T12:11:28.647Z","stage":"INSTALLING_DEPENDENCIES"},{"deploymentUid":"690cxxxxxxxxxxxxx96a","message":"==========================================================","timestamp":"2025-11-18T12:11:33.041Z","stage":"INSTALLING_DEPENDENCIES"},{"deploymentUid":"690cxxxxxxxxxxxxx96a","message":"Current Node.js Version: v22.20.0","timestamp":"2025-11-18T12:11:33.051Z","stage":"INSTALLING_DEPENDENCIES"}]}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"code":"launch.BAD_REQUEST","message":"Bad request"}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Not Found","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT.NOT_FOUND","message":"Deployment not found"}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT_LOGS.INTERNAL_SERVER_ERROR","message":"Internal server error while fetching deployment logs"}],"status":500}}}},"504":{"description":"Gateway Timeout","content":{"application\/json":{"example":{"errors":[{"code":"launch.LOGS.QUERY_TIMEOUT","message":"Fetching logs took too long. Try narrowing the time range or retry."}],"status":504}}}}},"summary":"Get Deployment Logs","tags":["Deployment Logs"]}},"\/projects\/{project_uid}\/environments\/{environment_uid}\/deployments\/{deployment_uid}\/logs\/server-logs":{"get":{"description":"The `Get Server Logs` request fetches the server logs of a specific deployment of an environment of your project in Launch using the `project_uid`, `environment_uid`, and `deployment_uid` path parameters.","operationId":"ServerLogsController_getServerLogsV1","parameters":[{"name":"project_uid","required":true,"in":"path","description":"Enter the `project_uid` of the project where the environments belong.","schema":{"example":"690*******************58","type":"string"}},{"name":"environment_uid","required":true,"in":"path","description":"Enter the `environment_uid` of the environment associated with your deployment.","schema":{"example":"690*******************5f","type":"string"}},{"name":"deployment_uid","required":true,"in":"path","description":"Enter the `deployment_uid` for the deployment whose server logs you want to retrieve.","schema":{"example":"691*******************e9","type":"string"}},{"name":"endTime","required":true,"in":"query","description":"Provide the ending time value in numeric string","schema":{"example":1763977024960,"type":"number"}},{"name":"startTime","required":true,"in":"query","description":"Provide the starting time value in numeric string","schema":{"example":1763890624854,"type":"number"}},{"name":"x-cs-api-version","in":"header","required":false,"description":"Enter the API version. Default is 1.0","schema":{"type":"string","default":"1.0"}},{"name":"organization_uid","in":"header","required":false,"description":"\u26a0\ufe0f **REQUIRED when using authtoken authentication** - you must explicitly provide this header. Optional with Authorization Bearer token (organization_uid can be derived from the token).","schema":{"type":"string"}}],"responses":{"200":{"description":"Server logs retrieved successfully","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ServerLogsAPIResponse"},"example":{"serverLogs":[{"message":" \u2713 Ready in 239ms\n","timestamp":"2025-12-03T10:44:36.645Z","source":"server-logs"},{"message":"   \u25b2 Next.js 15.3.1\n","timestamp":"2025-12-03T10:44:43.181Z","source":"server-logs"}]}}}},"400":{"description":"Bad Request","content":{"application\/json":{"example":{"errors":[{"code":"launch.BAD_REQUEST","message":"Bad request"}],"status":400}}}},"403":{"description":"Forbidden Resource","content":{"application\/json":{"example":{"errors":[{"code":"launch.FORBIDDEN_RESOURCE","message":"Forbidden resource"}],"status":403}}}},"404":{"description":"Not Found","content":{"application\/json":{"example":{"errors":[{"code":"launch.DEPLOYMENT.NOT_FOUND","message":"Deployment not found"}],"status":404}}}},"500":{"description":"Internal Server Error","content":{"application\/json":{"example":{"errors":[{"code":"launch.SERVER_LOGS.INTERNAL_SERVER_ERROR","message":"Internal server error while fetching server logs"}],"status":500}}}},"504":{"description":"Gateway Timeout","content":{"application\/json":{"example":{"errors":[{"code":"launch.LOGS.QUERY_TIMEOUT","message":"Fetching logs took too long. Try narrowing the time range or retry."}],"status":504}}}}},"summary":"Get Server Logs","tags":["Server Logs"]}}},"info":{"title":"Contentstack Launch API","description":"API documentation for Contentstack Launch\n\nThis specification includes APIs from both management-service and logs-service.","version":"1.0","contact":{}},"tags":[{"name":"Projects","description":"Launch Projects provide a fully managed front-end hosting and deployment solution within Contentstack. It enables you to connect your Git repository, configure build settings, and automatically deploy web projects with seamless integration, scalability, and minimal downtime."},{"name":"Environments","description":"Launch environments help you deploy and manage different versions of your project independently. Each environment is auto-deployed to a unique URL and can be customized to match your development workflow."},{"name":"Deployments","description":"Launch Deployments let you build, preview, and manage your project deployments seamlessly in real time. Whether you are importing code from a Git repository or uploading a ZIP file, each deployment provides detailed insights into build status, logs, and redeployment options\u2014helping you track and manage every release with confidence."},{"name":"File Upload","description":"The File Upload URL APIs provide secure, pre-signed URLs for uploading ZIP files to Launch."},{"name":"Deployment Logs","description":"Deployment logs provide detailed build and deployment information for your Launch deployments. These logs help you track the build process, identify issues during deployment, and monitor the status of your deployments in real time."},{"name":"Server Logs","description":"Server logs capture runtime information from your deployed apps. These logs help you monitor app performance, debug runtime issues, and track server-side events for your Launch deployments."}],"servers":[],"components":{"securitySchemes":{"authorization":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Use a bearer token to authenticate if you're not using the authtoken header. Format: Bearer <token>. If provided, the organization_uid header isn't required."},"authtoken":{"type":"apiKey","in":"header","name":"authtoken","description":"Use an authentication token if the Authorization header isn't provided. **Requires the organization_uid header.** When using authtoken authentication, you must explicitly provide the organization_uid header. The organization_uid cannot be derived from project_uid for Launch REST APIs."}},"schemas":{"Pagination":{"type":"object","properties":{"count":{"type":"number","example":1},"limit":{"type":"number","example":10},"skip":{"type":"number","example":0}},"required":["count","limit","skip"]},"Repository":{"type":"object","properties":{"repositoryName":{"type":"string","description":"Repository name","example":"test-repo"},"username":{"type":"string","description":"Repository username","example":"test-user"},"repositoryUrl":{"type":"string","description":"Repository URL","example":"https:\/\/github.com\/test-user\/test-repo"},"gitProvider":{"type":"string","enum":["GitHub","ExternalGitProvider"],"description":"Git provider type","example":"GitHub"}},"required":["repositoryName","username","repositoryUrl","gitProvider"]},"ProjectType":{"type":"string","enum":["GITPROVIDER","FILEUPLOAD"],"description":"Project type"},"Project":{"type":"object","properties":{"uid":{"type":"string","description":"Project unique identifier","example":"68f28379e4be0baf8087a665"},"name":{"type":"string","description":"Project name","example":"Sample project"},"description":{"type":"string","description":"Project description","example":"Sample description"},"organizationUid":{"type":"string","description":"Organization UID","example":"68f28379e4be0baf8087a665"},"repository":{"description":"Repository","example":{"repositoryName":"test-repo","username":"test-user","repositoryUrl":"https:\/\/github.com\/test-user\/test-repo","gitProvider":"GitHub"},"allOf":[{"$ref":"#\/components\/schemas\/Repository"}]},"deletedAt":{"type":"string","nullable":true,"description":"Deleted at","example":"2025-09-11T05:49:08.739Z"},"createdBy":{"type":"string","description":"Created by","example":"user1"},"updatedBy":{"type":"string","description":"Updated by","example":"user1"},"deletedBy":{"type":"string","nullable":true,"description":"Deleted by","example":"user1"},"createdAt":{"type":"string","description":"Created at","example":"2025-09-11T05:49:08.739Z"},"updatedAt":{"type":"string","description":"Updated at","example":"2025-09-11T05:49:08.739Z"},"projectType":{"description":"Project type","example":"GITPROVIDER | FILEUPLOAD","allOf":[{"$ref":"#\/components\/schemas\/ProjectType"}]},"cmsStackApiKey":{"type":"string","nullable":true,"description":"CMS Stack API key","example":"cs_api_key_123"}},"required":["uid","name","organizationUid","repository","createdBy","updatedBy","createdAt","updatedAt","projectType"]},"ProjectsResponse":{"type":"object","properties":{"pagination":{"$ref":"#\/components\/schemas\/Pagination"},"projects":{"type":"array","items":{"$ref":"#\/components\/schemas\/Project"}}},"required":["pagination","projects"]},"ProjectResponse":{"type":"object","properties":{"project":{"$ref":"#\/components\/schemas\/Project"}},"required":["project"]},"TransferGitRepositoryInput":{"type":"object","properties":{"repositoryName":{"type":"string","description":"Repository name","example":"new-owner\/new-repo"},"username":{"type":"string","description":"Repository username","example":"new-owner"},"repositoryUrl":{"type":"string","description":"Repository URL (required if repositoryName and username are not both provided)","example":"https:\/\/github.com\/new-owner\/new-repo"}}},"EnvVariables":{"type":"object","properties":{"key":{"type":"string","description":"Environment variable key","example":"key1"},"value":{"type":"string","description":"Environment variable value","example":"value1"}},"required":["key","value"]},"Domain":{"type":"object","properties":{"url":{"type":"string","description":"Domain URL","example":"test-project.contentstackapps.com"},"createdAt":{"type":"string","description":"Domain created at","example":"2025-09-11T05:49:08.739Z"},"updatedAt":{"type":"string","description":"Domain updated at","example":"2025-09-11T05:49:08.739Z"}},"required":["url","createdAt","updatedAt"]},"PasswordProtection":{"type":"object","properties":{"isEnabled":{"type":"boolean","description":"Password protection is enabled","example":true}},"required":["isEnabled"]},"Environment":{"type":"object","properties":{"uid":{"type":"string","description":"Environment unique identifier","example":"68f28379e4be0baf8087a044"},"name":{"type":"string","description":"Environment name","example":"test-env"},"description":{"type":"string","description":"Environment description","example":"This a test environment."},"project":{"type":"string","description":"Environment project UID","example":"68f28379e4be0baf8087a665"},"gitBranch":{"type":"string","description":"Environment git branch","example":"main"},"buildCommand":{"type":"string","description":"Environment build command","example":"npm run build"},"outputDirectory":{"type":"string","description":"Environment output directory","example":".\/"},"serverCommand":{"type":"string","description":"Environment server command","example":"npm run start"},"frameworkPreset":{"type":"string","description":"Environment framework preset","example":"OTHER"},"environmentVariables":{"description":"Environment environment variables","example":[{"key":"key1","value":"value1"}],"type":"array","items":{"$ref":"#\/components\/schemas\/EnvVariables"}},"autoDeployOnPush":{"type":"boolean","description":"Environment auto deploy on push","example":true},"nodeVersion":{"type":"string","description":"Environment node version","example":"20"},"organizationUid":{"type":"string","description":"Environment organization UID","example":"68f28379e4be0baf8087a665"},"createdAt":{"type":"string","description":"Environment created at","example":"2025-09-11T05:49:08.739Z"},"updatedAt":{"type":"string","description":"Environment updated at","example":"2025-09-11T05:49:08.739Z"},"createdBy":{"type":"string","description":"Environment created by","example":"user1"},"updatedBy":{"type":"string","description":"Environment updated by","example":"user1"},"hasLyticsEnabled":{"type":"boolean","description":"Environment has lytics enabled","example":false},"isCachePrimingEnabled":{"type":"boolean","description":"Environment is cache priming enabled","example":false},"domains":{"description":"Environment domains","example":[{"url":"test-project.contentstackapps.com","isCustomDomain":false,"createdAt":"2025-09-11T05:49:08.739Z","updatedAt":"2025-09-11T05:49:08.739Z"}],"type":"array","items":{"$ref":"#\/components\/schemas\/Domain"}},"passwordProtection":{"description":"Environment password protection","example":{"isEnabled":true},"allOf":[{"$ref":"#\/components\/schemas\/PasswordProtection"}]}},"required":["uid","name","description","project","gitBranch","buildCommand","outputDirectory","serverCommand","frameworkPreset","environmentVariables","autoDeployOnPush","nodeVersion","organizationUid","createdAt","updatedAt","createdBy","updatedBy","hasLyticsEnabled","isCachePrimingEnabled","domains","passwordProtection"]},"EnvironmentsAPIResponse":{"type":"object","properties":{"pagination":{"type":"object","example":{"count":1,"limit":10,"skip":0}},"environments":{"type":"array","items":{"$ref":"#\/components\/schemas\/Environment"}}},"required":["pagination","environments"]},"RevalidateCDNCacheResponse":{"type":"object","properties":{"message":{"type":"string","example":"The CDN cache revalidation task has been initiated."}},"required":["message"]},"FormFields":{"type":"object","properties":{"formFieldKey":{"type":"string","description":"Key"},"formFieldValue":{"type":"string","description":"Value"}},"required":["formFieldKey","formFieldValue"]},"Headers":{"type":"object","properties":{"key":{"type":"string","description":"Header Key"},"value":{"type":"string","description":"Header Value"}},"required":["key","value"]},"SignedUploadUrl":{"type":"object","properties":{"uploadUrl":{"type":"string","description":"Upload URL where the file can be uploaded."},"expiresIn":{"type":"string","description":"Expiration time (in seconds) for the generated upload URL."},"uploadUid":{"type":"string","description":"Id against which your zip file is uploaded."},"method":{"type":"string","description":"Method type of the upload API."},"fields":{"description":"Data to include in the request body when uploading the ZIP file to the provided upload URL.","nullable":true,"type":"array","items":{"$ref":"#\/components\/schemas\/FormFields"}},"headers":{"description":"Headers to include when uploading the ZIP file to the provided upload URL.","nullable":true,"type":"array","items":{"$ref":"#\/components\/schemas\/Headers"}}},"required":["uploadUrl","expiresIn","uploadUid","method","fields","headers"]},"SignedDownloadUrl":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL from where the uploaded file can be downloaded."},"expiresIn":{"type":"string","description":"Expiration time (in seconds) for the generated download URL."}},"required":["downloadUrl","expiresIn"]},"CacheRevalidationUsage":{"type":"object","properties":{"currentCacheRevalidations":{"type":"number","example":42},"maxCacheRevalidations":{"type":"number","example":1000,"nullable":true},"usageReset":{"type":"object","example":{"resetAt":"2026-03-24T00:00:00.000Z","timeToResetSeconds":36300}}},"required":["currentCacheRevalidations","maxCacheRevalidations","usageReset"]},"CacheRevalidationUsageResponse":{"type":"object","properties":{"revalidateCdnCache":{"$ref":"#\/components\/schemas\/CacheRevalidationUsage"}},"required":["revalidateCdnCache"]},"DeploymentLog":{"type":"object","properties":{"deploymentUid":{"type":"string","example":"1234567890"},"message":{"type":"string","example":"Deployment started"},"timestamp":{"type":"string","example":"2021-01-01T00:00:00.000Z"},"stage":{"type":"string","example":"build"}},"required":["deploymentUid","message","timestamp","stage"]},"DeploymentLogsAPIResponse":{"type":"object","properties":{"deploymentLogs":{"type":"array","items":{"$ref":"#\/components\/schemas\/DeploymentLog"}}},"required":["deploymentLogs"]},"ServerLog":{"type":"object","properties":{"timestamp":{"type":"string","example":"2021-01-01T00:00:00.000Z","nullable":true},"message":{"type":"string","example":"Server started successfully"},"source":{"type":"string","example":"server","nullable":true}},"required":["timestamp","message","source"]},"ServerLogsAPIResponse":{"type":"object","properties":{"serverLogs":{"type":"array","items":{"$ref":"#\/components\/schemas\/ServerLog"}}},"required":["serverLogs"]}},"parameters":{},"responses":{},"requestBodies":{},"headers":{},"examples":{},"links":{},"callbacks":{}},"security":[{"authorization":[]},{"authtoken":[]},{"Authorization":[]},{"authtoken":[]}]}