# Create project POST https://app.unleash-instance.example.com/api/admin/projects Content-Type: application/json **Enterprise feature** Create a new [Unleash project](https://docs.getunleash.io/concepts/projects). Reference: https://docs.getunleash.io/api/create-project ## OpenAPI Specification ```yaml openapi: 3.1.1 info: title: Create project version: endpoint_projects.createProject paths: /api/admin/projects: post: operationId: create-project summary: Create project description: >- **Enterprise feature** Create a new [Unleash project](https://docs.getunleash.io/concepts/projects). tags: - - subpackage_projects parameters: - name: Authorization in: header description: Header authentication of the form `undefined ` required: true schema: type: string responses: '201': description: The resource was successfully created. content: application/json: schema: $ref: '#/components/schemas/projectCreatedSchema' '400': description: The request data does not match what we expect. content: {} '401': description: >- Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`. content: {} '403': description: >- The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation content: {} '415': description: >- The operation does not support request payloads of the provided type. Please ensure that you're using one of the listed payload types and that you have specified the right content type in the "content-type" header. content: {} requestBody: description: createProjectSchema content: application/json: schema: $ref: '#/components/schemas/createProjectSchema' components: schemas: CreateProjectSchemaMode: type: string enum: - value: open - value: protected - value: private default: open CreateProjectSchemaChangeRequestEnvironmentsItems: type: object properties: name: type: string description: The name of the environment to configure change requests for. requiredApprovals: type: integer default: 1 description: >- The number of approvals required for a change request to be fully approved and ready to applied in this environment. If no value is provided, it will be set to the default number, which is 1. Values will be clamped to between 1 and 10 inclusive. required: - name createProjectSchema: type: object properties: id: type: string description: >- The project's identifier. If this property is not present or is an empty string, Unleash will generate the project id automatically. This property is deprecated. name: type: string description: >- The project's name. The name must contain at least one non-whitespace character. description: type: - string - 'null' description: The project's description. mode: $ref: '#/components/schemas/CreateProjectSchemaMode' description: >- A mode of the project affecting what actions are possible in this project defaultStickiness: type: string default: default description: >- A default stickiness for the project affecting the default stickiness value for variants and Gradual Rollout strategy environments: type: array items: type: string description: >- A list of environments that should be enabled for this project. If this property is missing, Unleash will default to enabling all non-deprecated environments for the project. An empty list will result in no environment enabled for the project. changeRequestEnvironments: type: array items: $ref: >- #/components/schemas/CreateProjectSchemaChangeRequestEnvironmentsItems description: >- A list of environments that should have change requests enabled. If the list includes environments not in the `environments` list, they will still have change requests enabled. required: - name ProjectCreatedSchemaMode: type: string enum: - value: open - value: protected - value: private ProjectCreatedSchemaChangeRequestEnvironmentsItems: type: object properties: name: type: string description: >- The name of the environment this change request configuration applies to. requiredApprovals: type: integer default: 1 description: >- The number of approvals required for a change request to be fully approved and ready to applied in this environment. If no value is provided, it will be set to the default number, which is 1. The value must be greater than or equal to 1. required: - name - requiredApprovals projectCreatedSchema: type: object properties: id: type: string description: The project's identifier. name: type: string description: The project's name. description: type: - string - 'null' description: The project's description. featureLimit: type: - integer - 'null' description: >- A limit on the number of features allowed in the project. `null` if no limit. mode: $ref: '#/components/schemas/ProjectCreatedSchemaMode' description: >- A mode of the project affecting what actions are possible in this project defaultStickiness: type: string description: >- A default stickiness for the project affecting the default stickiness value for variants and Gradual Rollout strategy environments: type: array items: type: string description: The environments enabled for the project. changeRequestEnvironments: type: array items: $ref: >- #/components/schemas/ProjectCreatedSchemaChangeRequestEnvironmentsItems description: The list of environments that have change requests enabled. required: - id - name ``` ## SDK Code Examples ```python import requests url = "https://app.unleash-instance.example.com/api/admin/projects" payload = { "name": "Pet shop" } headers = { "Authorization": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.unleash-instance.example.com/api/admin/projects'; const options = { method: 'POST', headers: {Authorization: '', 'Content-Type': 'application/json'}, body: '{"name":"Pet shop"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://app.unleash-instance.example.com/api/admin/projects" payload := strings.NewReader("{\n \"name\": \"Pet shop\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://app.unleash-instance.example.com/api/admin/projects") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"name\": \"Pet shop\"\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://app.unleash-instance.example.com/api/admin/projects") .header("Authorization", "") .header("Content-Type", "application/json") .body("{\n \"name\": \"Pet shop\"\n}") .asString(); ``` ```php request('POST', 'https://app.unleash-instance.example.com/api/admin/projects', [ 'body' => '{ "name": "Pet shop" }', 'headers' => [ 'Authorization' => '', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.unleash-instance.example.com/api/admin/projects"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"name\": \"Pet shop\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "", "Content-Type": "application/json" ] let parameters = ["name": "Pet shop"] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.unleash-instance.example.com/api/admin/projects")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```