> For the complete documentation index, see [llms.txt](https://docs.bird.com/api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bird.com/api/touchpoints-api/api-reference/projects.md).

# Projects

## GET /workspaces/{workspaceId}/projects

> List projects in workspace

```json
{"openapi":"3.0.3","info":{"title":"Touchpoints","version":"v1"},"tags":[{"name":"projects","description":"Manage projects within a workspace"}],"servers":[{"url":"https://api.bird.com","description":"Production API"}],"security":[{"accessKey":[]}],"components":{"securitySchemes":{"accessKey":{"description":"Uses the Authorization header: 'AccessKey ' followed by your access key token","scheme":"AccessKey","type":"http"}},"parameters":{"projectType":{"name":"type","required":false,"in":"query","schema":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ProjectType"}}},"projectScope":{"name":"scope","required":false,"in":"query","description":"Filter by project scope. Available scopes are:\n\n\n\n\n\n\n\n  * 0 (DEFAULT): This should indicate that the project is of our current scope (can be used across all BirdCRM services).\n  * 1 (SAVED_TEMPLATE): This should indicate that the project is a saved template, meaning that it came from extending one of BirdCRM library templates. They can be used for creating other Projects, such as inline campaigns and flows content.\n  * 2 (INLINE_MESSAGE): This should indicate that the project is an inline message, meaning that it was created from a campaign or flow using a library template or a saved template. They are linked to an specific instance of other BirdCRM services (Campaigns, Flows, etc.).\n  * 3 (PLATFORM_REVIEWED_TEMPLATE): This should indicate that the project is a platform reviewed template, meaning the template must go through a external platform review.\n","schema":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ProjectScope"}}},"projectIsActive":{"name":"isActive","description":"Deprecated. Use status instead.","required":false,"deprecated":true,"in":"query","schema":{"type":"boolean"}},"projectStatus":{"name":"status","required":false,"in":"query","schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectStatus"}}},"projectIds":{"name":"projectIds","description":"Filter projects by projectIds","required":false,"in":"query","schema":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"style":"form","explode":true},"projectSupportedPlatforms":{"name":"supportedPlatforms","description":"Filter by supported platforms","in":"query","style":"form","explode":true,"schema":{"$ref":"#/components/schemas/PlatformList"}},"projectMetadata":{"name":"metadata","description":"Filter projects by metadata","required":false,"in":"query","schema":{"type":"array","nullable":true,"items":{"type":"string"}},"style":"form","explode":true},"suitableChannelId":{"name":"suitableChannelId","required":false,"in":"query","schema":{"type":"string"}},"channelIds":{"name":"channelIds","description":"Filter projects by channelIds","required":false,"in":"query","schema":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"style":"form","explode":true},"projectTags":{"name":"tags","description":"Filter projects by tags","required":false,"in":"query","schema":{"type":"array","nullable":true,"items":{"type":"string"}},"style":"form","explode":true},"projectIncludeTagless":{"name":"includeTagless","description":"Filter projects by tagless","required":false,"in":"query","schema":{"type":"boolean"}},"directoryId":{"name":"directoryId","description":"Filter projects by directoryId","required":false,"in":"query","schema":{"type":"string","format":"uuid"}},"isInDirectory":{"name":"isInDirectory","description":"Filter by projects in a directory","required":false,"in":"query","schema":{"type":"boolean"}},"connectorIds":{"name":"connectorIds","description":"Filter projects by connectorIds","required":false,"in":"query","schema":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"style":"form","explode":true},"pagination.param.limit":{"description":"Limits the number of results to return.","in":"query","name":"limit","schema":{"default":25,"maximum":100,"type":"integer"}},"pagination.param.pageToken":{"description":"The cursor that keeps track of the current position in the results.","in":"query","name":"pageToken","schema":{"type":"string"}},"pagination.param.reverse":{"description":"Reverses the order in which the results are returned.","in":"query","name":"reverse","schema":{"default":false,"type":"boolean"}},"querySortBy":{"name":"sortBy","description":"Field that should be used to sort the results","in":"query","schema":{"type":"string","enum":["name","createdAt","updatedAt"],"default":"createdAt"}}},"schemas":{"ProjectType":{"type":"string","description":"enum for all the different project types Touchpoints API supports.","enum":["chatwidget","form","knowledgeBase","deepLink","channelTemplate","website","htmlEmail","popup","helpcenter","adCreative","preferencecenter","landingpage","inAppMessageTemplate"]},"ProjectScope":{"type":"number","enum":[0,1,2,3],"description":"dictionary:\n\n\n  * 0 DEFAULT: This should indicate that the project is of our current scope (can be used across all BirdCRM services).\n  * 1 SAVED_TEMPLATE: This should indicate that the project is a saved template, meaning that it came from extending one of BirdCRM library templates. They can be used for creating other Projects, such as inline campaigns and flows content.\n  * 2 INLINE_MESSAGE: This should indicate that the project is an inline message, meaning that it was created from a campaign or flow using a library template or a saved template. They are linked to an specific instance of other BirdCRM services (Campaigns, Flows, etc.).\n  * 3 (PLATFORM_REVIEWED_TEMPLATE): This should indicate that the project is a platform reviewed template, meaning the template must go through a external platform review."},"ProjectStatus":{"type":"string","enum":["draft","pending","active","inactive"]},"PlatformList":{"type":"array","nullable":true,"items":{"type":"string","enum":["all","apple-business-chat","sms-messagebird","facebook-messenger","google-business-messages","instagram","whatsapp","email-sparkpost","chat","push-notifications","rcs-google","linkedin","line","app-inbox","in-app-messages"]}},"standard.locale.messaging":{"description":"Curated set of BCP47 locale identifiers supported by Bird messaging products","enum":["ae-AZ","af","ar","ar-AZ","ar-EG","ar-ID","ar-UA","az","az-AZ","bg","bg-BG","bn","bn-MY","bn-SG","ca","cs","cs-CZ","da","da-DK","de","de-AT","de-CH","de-DE","de-LI","de-LU","ee-GH","el","el-CY","el-GR","en","en-AE","en-AF","en-AG","en-AL","en-AR","en-AS","en-AT","en-AU","en-AW","en-AZ","en-BA","en-BB","en-BD","en-BE","en-BF","en-BG","en-BH","en-BJ","en-BN","en-BO","en-BR","en-BS","en-BW","en-BY","en-BZ","en-CA","en-CD","en-CG","en-CH","en-CI","en-CL","en-CM","en-CN","en-CO","en-CY","en-CZ","en-DE","en-DK","en-DM","en-DO","en-EC","en-EG","en-ES","en-FI","en-FJ","en-FR","en-GB","en-GD","en-GE","en-GH","en-GI","en-GM","en-GR","en-GY","en-HK","en-HR","en-HT","en-HU","en-ID","en-IE","en-IL","en-IN","en-IQ","en-IS","en-IT","en-JM","en-JO","en-JP","en-KE","en-KH","en-KN","en-KR","en-KW","en-KY","en-KZ","en-LA","en-LB","en-LT","en-LV","en-MD","en-MK","en-MM","en-MS","en-MT","en-MV","en-MX","en-MY","en-NG","en-NL","en-NO","en-NP","en-NZ","en-OM","en-PA","en-PE","en-PG","en-PH","en-PK","en-PL","en-PS","en-PT","en-PY","en-QA","en-RO","en-RU","en-RW","en-SA","en-SB","en-SD","en-SE","en-SG","en-SI","en-SK","en-SN","en-SR","en-SS","en-TC","en-TH","en-TN","en-TO","en-TR","en-TT","en-TW","en-UG","en-US","en-UY","en-VC","en-VE","en-VG","en-VN","en-WS","en-YE","en-ZA","en-ZW","es","es-AR","es-BO","es-BR","es-CL","es-CO","es-CR","es-DO","es-EC","es-ES","es-GT","es-HN","es-MX","es-NI","es-PA","es-PE","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","fa","fi","fi-FI","fil","fr","fr-AE","fr-BE","fr-BF","fr-BJ","fr-CA","fr-CD","fr-CG","fr-CH","fr-CI","fr-CM","fr-FR","fr-GA","fr-GF","fr-LU","fr-MA","fr-MF","fr-MG","fr-ML","fr-NL","fr-PT","fr-SN","fr-TG","ga","gu","ha","he","hi","hi-MY","hi-SG","hr","hr-HR","ht-DO","hu","hu-HU","id","id-HK","id-ID","id-JP","id-SG","it","it-AE","it-BE","it-CH","it-IT","ja","ja-JP","ka","kk","kn","ko","ky-KG","lo","lt","lt-LT","lv","lv-LV","mk","ml","mr","ms","ms-MY","my-JP","my-MY","my-SG","nb","ne-JP","nl","nl-BE","nl-NL","no-NO","pa","pl","pl-PL","pt","pt-AO","pt-BR","pt-PT","ro","ro-MD","ro-RO","ru","ru-BY","ru-KZ","ru-RO","ru-RU","rw-RW","sk","sk-SK","sl","sl-SI","sq","sq-AL","sr","sr-RS","sv","sv-SE","sw","ta","ta-MY","ta-SG","te","th","th-SG","th-TH","tk-TM","tr","tr-TR","uk","uk-UA","ur","uz","uz-UZ","vi","vi-JP","vi-MY","vi-US","zh-CN","zh-HK","zh-JP","zh-SG","zh-TW","zu"],"type":"string"},"ProjectList":{"type":"object","nullable":true,"additionalProperties":false,"required":["results"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Project"}}}},"Project":{"type":"object","additionalProperties":false,"required":["id","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":0,"maxLength":100},"description":{"type":"string","minLength":0,"maxLength":300},"type":{"$ref":"#/components/schemas/ProjectType"},"scope":{"$ref":"#/components/schemas/ProjectScope"},"supportedPlatforms":{"$ref":"#/components/schemas/PlatformList"},"locales":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/standard.locale.messaging"}},"localeStatuses":{"type":"object","nullable":true,"additionalProperties":{"type":"string","enum":["draft","pending","active","inactive"]}},"platformInfo":{"type":"object","nullable":true,"additionalProperties":{"$ref":"#/components/schemas/PlatformState"},"description":"Platform-specific state information for WhatsApp templates. The key is a string in the format \"platform:wabaId:locale\" (e.g., \"whatsapp:123456789:en\"). Contains status information for each WABA/Locale combination.\n"},"activeResourceId":{"type":"string","format":"uuid","nullable":true},"draftCount":{"type":"number"},"pendingCount":{"type":"number"},"activeCount":{"type":"number"},"inactiveCount":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","nullable":true,"format":"date-time"},"approvedTemplateChannelsId":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"approvedTemplateChannelGroupIds":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"suites":{"type":"array","items":{"$ref":"#/components/schemas/common.suite.type"}},"clonedFrom":{"type":"string","nullable":true,"format":"uuid","description":"The ID of the project that this project was cloned from. This field is only present if this project was cloned from another project.\n"},"metadata":{"$ref":"#/components/schemas/Metadata"},"tags":{"$ref":"#/components/schemas/Tags"},"directoryId":{"type":"string","format":"uuid","description":"The ID of the directory that this project belongs to. This field is only present if the project is part of a directory.\n"},"experiment":{"$ref":"#/components/schemas/ProjectExperiment"}}},"PlatformState":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["draft","active","inactive","pending","pendingReview"]},"category":{"type":"string"},"qualityRating":{"type":"string","default":"UNKNOWN","description":"Quality rating for WhatsApp templates (GREEN, YELLOW, RED, UNKNOWN)"}}},"common.suite.type":{"description":"The Suite indicates a Suite that an entity belongs to","enum":["marketing","service","payments","automations","developer"],"type":"string"},"Metadata":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"Tags":{"type":"array","description":"Tags for this project","items":{"type":"string","minLength":1,"maxLength":36},"nullable":true},"ProjectExperiment":{"type":"object","additionalProperties":false,"required":["status","winningMetric"],"properties":{"status":{"$ref":"#/components/schemas/ProjectExperimentStatus"},"winningMetric":{"$ref":"#/components/schemas/ProjectExperimentWinningMetric"},"weights":{"type":"object","description":"The weights of the experiment variants.","additionalProperties":{"type":"integer","format":"int64"}},"duration":{"type":"integer","format":"int64","description":"The duration of the experiment in minutes."},"startedAt":{"type":"string","format":"date-time","description":"The time when the experiment started."},"endedAt":{"type":"string","format":"date-time","description":"The time when the experiment ended."},"scheduledEndAt":{"type":"string","format":"date-time","description":"The scheduled end time of the experiment."},"weightsUpdatedAt":{"type":"string","format":"date-time","description":"The last time the weights were updated."},"winningTemplateId":{"type":"string","format":"uuid","description":"The ID of the winning template."},"stopperType":{"type":"string","description":"The type of caller who stopped the experiment."},"stopperId":{"type":"string","format":"uuid","description":"The reference to the caller who stopped the experiment."}}},"ProjectExperimentStatus":{"type":"string","description":"The status of the experiment.","enum":["draft","running","stopped","completed"]},"ProjectExperimentWinningMetric":{"type":"string","description":"The winning metric of the experiment.","enum":["openRate","readRate","clickRate","conversionRate"]},"pagination":{"type":"object","properties":{"nextPageToken":{"type":"string","description":"The token that can be passed as pageToken in URL to retrieve the next set of results. If missing, no more results to display."}}},"error.detailed":{"additionalProperties":false,"description":"An error returned from the API that includes additional details about the error. The `details` property can contain any additional information about the error that may be helpful for debugging or understanding the error.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":true,"description":"Any additional information about the error that may be helpful for debugging or understanding the error.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"DetailedError","type":"object"}},"responses":{"error.response.not_found":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The requested resource was not found."}}},"paths":{"/workspaces/{workspaceId}/projects":{"get":{"summary":"List projects in workspace","operationId":"listProjects","tags":["projects"],"parameters":[{"$ref":"#/components/parameters/projectType"},{"$ref":"#/components/parameters/projectScope"},{"$ref":"#/components/parameters/projectIsActive"},{"$ref":"#/components/parameters/projectStatus"},{"$ref":"#/components/parameters/projectIds"},{"$ref":"#/components/parameters/projectSupportedPlatforms"},{"$ref":"#/components/parameters/projectMetadata"},{"$ref":"#/components/parameters/suitableChannelId"},{"$ref":"#/components/parameters/channelIds"},{"$ref":"#/components/parameters/projectTags"},{"$ref":"#/components/parameters/projectIncludeTagless"},{"$ref":"#/components/parameters/directoryId"},{"$ref":"#/components/parameters/isInDirectory"},{"$ref":"#/components/parameters/connectorIds"},{"$ref":"#/components/parameters/pagination.param.limit"},{"$ref":"#/components/parameters/pagination.param.pageToken"},{"$ref":"#/components/parameters/pagination.param.reverse"},{"$ref":"#/components/parameters/querySortBy"},{"name":"q","description":"Full text search on projects","in":"query","schema":{"type":"string"}},{"name":"locales","description":"Filter by locales","in":"query","style":"form","explode":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/standard.locale.messaging"}}},{"name":"useNewSearch","description":"Get results from the new search index","in":"query","schema":{"type":"boolean"}},{"name":"getOmnichannel","description":"Creates a separate query to get omnichannel projects of the specified type bypassing suitableChannelId.\nThis only works when useNewSearch is true.\n","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectList"},{"$ref":"#/components/schemas/pagination"}]}}}},"404":{"$ref":"#/components/responses/error.response.not_found"}}}}}}
```

## POST /workspaces/{workspaceId}/projects

> Create project

```json
{"openapi":"3.0.3","info":{"title":"Touchpoints","version":"v1"},"tags":[{"name":"projects","description":"Manage projects within a workspace"}],"servers":[{"url":"https://api.bird.com","description":"Production API"}],"security":[{"accessKey":[]}],"components":{"securitySchemes":{"accessKey":{"description":"Uses the Authorization header: 'AccessKey ' followed by your access key token","scheme":"AccessKey","type":"http"}},"schemas":{"CreateProject":{"type":"object","additionalProperties":false,"required":["type"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"type":{"$ref":"#/components/schemas/ProjectType"},"scope":{"$ref":"#/components/schemas/ProjectScope"},"suites":{"type":"array","items":{"$ref":"#/components/schemas/common.suite.type"}},"tags":{"$ref":"#/components/schemas/Tags"},"directoryId":{"type":"string","format":"uuid","nullable":true},"experiment":{"$ref":"#/components/schemas/ProjectExperimentInput"}}},"ProjectType":{"type":"string","description":"enum for all the different project types Touchpoints API supports.","enum":["chatwidget","form","knowledgeBase","deepLink","channelTemplate","website","htmlEmail","popup","helpcenter","adCreative","preferencecenter","landingpage","inAppMessageTemplate"]},"ProjectScope":{"type":"number","enum":[0,1,2,3],"description":"dictionary:\n\n\n  * 0 DEFAULT: This should indicate that the project is of our current scope (can be used across all BirdCRM services).\n  * 1 SAVED_TEMPLATE: This should indicate that the project is a saved template, meaning that it came from extending one of BirdCRM library templates. They can be used for creating other Projects, such as inline campaigns and flows content.\n  * 2 INLINE_MESSAGE: This should indicate that the project is an inline message, meaning that it was created from a campaign or flow using a library template or a saved template. They are linked to an specific instance of other BirdCRM services (Campaigns, Flows, etc.).\n  * 3 (PLATFORM_REVIEWED_TEMPLATE): This should indicate that the project is a platform reviewed template, meaning the template must go through a external platform review."},"common.suite.type":{"description":"The Suite indicates a Suite that an entity belongs to","enum":["marketing","service","payments","automations","developer"],"type":"string"},"Tags":{"type":"array","description":"Tags for this project","items":{"type":"string","minLength":1,"maxLength":36},"nullable":true},"ProjectExperimentInput":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"status":{"$ref":"#/components/schemas/ProjectExperimentStatus"},"winningMetric":{"description":"The winning metric of the experiment. This can only be set when the experiment is in draft status.","$ref":"#/components/schemas/ProjectExperimentWinningMetric"},"weights":{"type":"object","description":"The weights of the experiment variants. These can only be changed when the experiment is in draft status.","additionalProperties":{"type":"integer","format":"int64"}},"duration":{"type":"integer","format":"int64","minimum":1440,"maximum":525600,"description":"An optional duration for the experiment in minutes. This can only be provided when the status is being changed to running."},"winningTemplateId":{"type":"string","format":"uuid","description":"The ID of the winning template."}}},"ProjectExperimentStatus":{"type":"string","description":"The status of the experiment.","enum":["draft","running","stopped","completed"]},"ProjectExperimentWinningMetric":{"type":"string","description":"The winning metric of the experiment.","enum":["openRate","readRate","clickRate","conversionRate"]},"Project":{"type":"object","additionalProperties":false,"required":["id","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":0,"maxLength":100},"description":{"type":"string","minLength":0,"maxLength":300},"type":{"$ref":"#/components/schemas/ProjectType"},"scope":{"$ref":"#/components/schemas/ProjectScope"},"supportedPlatforms":{"$ref":"#/components/schemas/PlatformList"},"locales":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/standard.locale.messaging"}},"localeStatuses":{"type":"object","nullable":true,"additionalProperties":{"type":"string","enum":["draft","pending","active","inactive"]}},"platformInfo":{"type":"object","nullable":true,"additionalProperties":{"$ref":"#/components/schemas/PlatformState"},"description":"Platform-specific state information for WhatsApp templates. The key is a string in the format \"platform:wabaId:locale\" (e.g., \"whatsapp:123456789:en\"). Contains status information for each WABA/Locale combination.\n"},"activeResourceId":{"type":"string","format":"uuid","nullable":true},"draftCount":{"type":"number"},"pendingCount":{"type":"number"},"activeCount":{"type":"number"},"inactiveCount":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","nullable":true,"format":"date-time"},"approvedTemplateChannelsId":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"approvedTemplateChannelGroupIds":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"suites":{"type":"array","items":{"$ref":"#/components/schemas/common.suite.type"}},"clonedFrom":{"type":"string","nullable":true,"format":"uuid","description":"The ID of the project that this project was cloned from. This field is only present if this project was cloned from another project.\n"},"metadata":{"$ref":"#/components/schemas/Metadata"},"tags":{"$ref":"#/components/schemas/Tags"},"directoryId":{"type":"string","format":"uuid","description":"The ID of the directory that this project belongs to. This field is only present if the project is part of a directory.\n"},"experiment":{"$ref":"#/components/schemas/ProjectExperiment"}}},"PlatformList":{"type":"array","nullable":true,"items":{"type":"string","enum":["all","apple-business-chat","sms-messagebird","facebook-messenger","google-business-messages","instagram","whatsapp","email-sparkpost","chat","push-notifications","rcs-google","linkedin","line","app-inbox","in-app-messages"]}},"standard.locale.messaging":{"description":"Curated set of BCP47 locale identifiers supported by Bird messaging products","enum":["ae-AZ","af","ar","ar-AZ","ar-EG","ar-ID","ar-UA","az","az-AZ","bg","bg-BG","bn","bn-MY","bn-SG","ca","cs","cs-CZ","da","da-DK","de","de-AT","de-CH","de-DE","de-LI","de-LU","ee-GH","el","el-CY","el-GR","en","en-AE","en-AF","en-AG","en-AL","en-AR","en-AS","en-AT","en-AU","en-AW","en-AZ","en-BA","en-BB","en-BD","en-BE","en-BF","en-BG","en-BH","en-BJ","en-BN","en-BO","en-BR","en-BS","en-BW","en-BY","en-BZ","en-CA","en-CD","en-CG","en-CH","en-CI","en-CL","en-CM","en-CN","en-CO","en-CY","en-CZ","en-DE","en-DK","en-DM","en-DO","en-EC","en-EG","en-ES","en-FI","en-FJ","en-FR","en-GB","en-GD","en-GE","en-GH","en-GI","en-GM","en-GR","en-GY","en-HK","en-HR","en-HT","en-HU","en-ID","en-IE","en-IL","en-IN","en-IQ","en-IS","en-IT","en-JM","en-JO","en-JP","en-KE","en-KH","en-KN","en-KR","en-KW","en-KY","en-KZ","en-LA","en-LB","en-LT","en-LV","en-MD","en-MK","en-MM","en-MS","en-MT","en-MV","en-MX","en-MY","en-NG","en-NL","en-NO","en-NP","en-NZ","en-OM","en-PA","en-PE","en-PG","en-PH","en-PK","en-PL","en-PS","en-PT","en-PY","en-QA","en-RO","en-RU","en-RW","en-SA","en-SB","en-SD","en-SE","en-SG","en-SI","en-SK","en-SN","en-SR","en-SS","en-TC","en-TH","en-TN","en-TO","en-TR","en-TT","en-TW","en-UG","en-US","en-UY","en-VC","en-VE","en-VG","en-VN","en-WS","en-YE","en-ZA","en-ZW","es","es-AR","es-BO","es-BR","es-CL","es-CO","es-CR","es-DO","es-EC","es-ES","es-GT","es-HN","es-MX","es-NI","es-PA","es-PE","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","fa","fi","fi-FI","fil","fr","fr-AE","fr-BE","fr-BF","fr-BJ","fr-CA","fr-CD","fr-CG","fr-CH","fr-CI","fr-CM","fr-FR","fr-GA","fr-GF","fr-LU","fr-MA","fr-MF","fr-MG","fr-ML","fr-NL","fr-PT","fr-SN","fr-TG","ga","gu","ha","he","hi","hi-MY","hi-SG","hr","hr-HR","ht-DO","hu","hu-HU","id","id-HK","id-ID","id-JP","id-SG","it","it-AE","it-BE","it-CH","it-IT","ja","ja-JP","ka","kk","kn","ko","ky-KG","lo","lt","lt-LT","lv","lv-LV","mk","ml","mr","ms","ms-MY","my-JP","my-MY","my-SG","nb","ne-JP","nl","nl-BE","nl-NL","no-NO","pa","pl","pl-PL","pt","pt-AO","pt-BR","pt-PT","ro","ro-MD","ro-RO","ru","ru-BY","ru-KZ","ru-RO","ru-RU","rw-RW","sk","sk-SK","sl","sl-SI","sq","sq-AL","sr","sr-RS","sv","sv-SE","sw","ta","ta-MY","ta-SG","te","th","th-SG","th-TH","tk-TM","tr","tr-TR","uk","uk-UA","ur","uz","uz-UZ","vi","vi-JP","vi-MY","vi-US","zh-CN","zh-HK","zh-JP","zh-SG","zh-TW","zu"],"type":"string"},"PlatformState":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["draft","active","inactive","pending","pendingReview"]},"category":{"type":"string"},"qualityRating":{"type":"string","default":"UNKNOWN","description":"Quality rating for WhatsApp templates (GREEN, YELLOW, RED, UNKNOWN)"}}},"Metadata":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"ProjectExperiment":{"type":"object","additionalProperties":false,"required":["status","winningMetric"],"properties":{"status":{"$ref":"#/components/schemas/ProjectExperimentStatus"},"winningMetric":{"$ref":"#/components/schemas/ProjectExperimentWinningMetric"},"weights":{"type":"object","description":"The weights of the experiment variants.","additionalProperties":{"type":"integer","format":"int64"}},"duration":{"type":"integer","format":"int64","description":"The duration of the experiment in minutes."},"startedAt":{"type":"string","format":"date-time","description":"The time when the experiment started."},"endedAt":{"type":"string","format":"date-time","description":"The time when the experiment ended."},"scheduledEndAt":{"type":"string","format":"date-time","description":"The scheduled end time of the experiment."},"weightsUpdatedAt":{"type":"string","format":"date-time","description":"The last time the weights were updated."},"winningTemplateId":{"type":"string","format":"uuid","description":"The ID of the winning template."},"stopperType":{"type":"string","description":"The type of caller who stopped the experiment."},"stopperId":{"type":"string","format":"uuid","description":"The reference to the caller who stopped the experiment."}}},"error.detailed":{"additionalProperties":false,"description":"An error returned from the API that includes additional details about the error. The `details` property can contain any additional information about the error that may be helpful for debugging or understanding the error.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":true,"description":"Any additional information about the error that may be helpful for debugging or understanding the error.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"DetailedError","type":"object"},"error.validation":{"additionalProperties":false,"description":"A validation error returned from the API. The `details` map keys are JSON paths\npointing into the request body / parameters; values are arrays of human-readable\nmessages describing each problem with that path.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"description":"Per-field validation messages keyed by JSON path.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"ValidationError","type":"object"}},"responses":{"error.response.not_found":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The requested resource was not found."},"error.response.conflict":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The request conflicts with the current state of the resource."},"error.response.invalid_request":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.validation"}}},"description":"The request contains invalid parameters or body fields."}}},"paths":{"/workspaces/{workspaceId}/projects":{"post":{"summary":"Create project","operationId":"createProject","tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProject"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"$ref":"#/components/responses/error.response.not_found"},"409":{"$ref":"#/components/responses/error.response.conflict"},"422":{"$ref":"#/components/responses/error.response.invalid_request"}}}}}}
```

## GET /workspaces/{workspaceId}/projects/{projectId}

> Get Project

```json
{"openapi":"3.0.3","info":{"title":"Touchpoints","version":"v1"},"tags":[{"name":"projects","description":"Manage projects within a workspace"}],"servers":[{"url":"https://api.bird.com","description":"Production API"}],"security":[{"accessKey":[]}],"components":{"securitySchemes":{"accessKey":{"description":"Uses the Authorization header: 'AccessKey ' followed by your access key token","scheme":"AccessKey","type":"http"}},"schemas":{"Project":{"type":"object","additionalProperties":false,"required":["id","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":0,"maxLength":100},"description":{"type":"string","minLength":0,"maxLength":300},"type":{"$ref":"#/components/schemas/ProjectType"},"scope":{"$ref":"#/components/schemas/ProjectScope"},"supportedPlatforms":{"$ref":"#/components/schemas/PlatformList"},"locales":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/standard.locale.messaging"}},"localeStatuses":{"type":"object","nullable":true,"additionalProperties":{"type":"string","enum":["draft","pending","active","inactive"]}},"platformInfo":{"type":"object","nullable":true,"additionalProperties":{"$ref":"#/components/schemas/PlatformState"},"description":"Platform-specific state information for WhatsApp templates. The key is a string in the format \"platform:wabaId:locale\" (e.g., \"whatsapp:123456789:en\"). Contains status information for each WABA/Locale combination.\n"},"activeResourceId":{"type":"string","format":"uuid","nullable":true},"draftCount":{"type":"number"},"pendingCount":{"type":"number"},"activeCount":{"type":"number"},"inactiveCount":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","nullable":true,"format":"date-time"},"approvedTemplateChannelsId":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"approvedTemplateChannelGroupIds":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"suites":{"type":"array","items":{"$ref":"#/components/schemas/common.suite.type"}},"clonedFrom":{"type":"string","nullable":true,"format":"uuid","description":"The ID of the project that this project was cloned from. This field is only present if this project was cloned from another project.\n"},"metadata":{"$ref":"#/components/schemas/Metadata"},"tags":{"$ref":"#/components/schemas/Tags"},"directoryId":{"type":"string","format":"uuid","description":"The ID of the directory that this project belongs to. This field is only present if the project is part of a directory.\n"},"experiment":{"$ref":"#/components/schemas/ProjectExperiment"}}},"ProjectType":{"type":"string","description":"enum for all the different project types Touchpoints API supports.","enum":["chatwidget","form","knowledgeBase","deepLink","channelTemplate","website","htmlEmail","popup","helpcenter","adCreative","preferencecenter","landingpage","inAppMessageTemplate"]},"ProjectScope":{"type":"number","enum":[0,1,2,3],"description":"dictionary:\n\n\n  * 0 DEFAULT: This should indicate that the project is of our current scope (can be used across all BirdCRM services).\n  * 1 SAVED_TEMPLATE: This should indicate that the project is a saved template, meaning that it came from extending one of BirdCRM library templates. They can be used for creating other Projects, such as inline campaigns and flows content.\n  * 2 INLINE_MESSAGE: This should indicate that the project is an inline message, meaning that it was created from a campaign or flow using a library template or a saved template. They are linked to an specific instance of other BirdCRM services (Campaigns, Flows, etc.).\n  * 3 (PLATFORM_REVIEWED_TEMPLATE): This should indicate that the project is a platform reviewed template, meaning the template must go through a external platform review."},"PlatformList":{"type":"array","nullable":true,"items":{"type":"string","enum":["all","apple-business-chat","sms-messagebird","facebook-messenger","google-business-messages","instagram","whatsapp","email-sparkpost","chat","push-notifications","rcs-google","linkedin","line","app-inbox","in-app-messages"]}},"standard.locale.messaging":{"description":"Curated set of BCP47 locale identifiers supported by Bird messaging products","enum":["ae-AZ","af","ar","ar-AZ","ar-EG","ar-ID","ar-UA","az","az-AZ","bg","bg-BG","bn","bn-MY","bn-SG","ca","cs","cs-CZ","da","da-DK","de","de-AT","de-CH","de-DE","de-LI","de-LU","ee-GH","el","el-CY","el-GR","en","en-AE","en-AF","en-AG","en-AL","en-AR","en-AS","en-AT","en-AU","en-AW","en-AZ","en-BA","en-BB","en-BD","en-BE","en-BF","en-BG","en-BH","en-BJ","en-BN","en-BO","en-BR","en-BS","en-BW","en-BY","en-BZ","en-CA","en-CD","en-CG","en-CH","en-CI","en-CL","en-CM","en-CN","en-CO","en-CY","en-CZ","en-DE","en-DK","en-DM","en-DO","en-EC","en-EG","en-ES","en-FI","en-FJ","en-FR","en-GB","en-GD","en-GE","en-GH","en-GI","en-GM","en-GR","en-GY","en-HK","en-HR","en-HT","en-HU","en-ID","en-IE","en-IL","en-IN","en-IQ","en-IS","en-IT","en-JM","en-JO","en-JP","en-KE","en-KH","en-KN","en-KR","en-KW","en-KY","en-KZ","en-LA","en-LB","en-LT","en-LV","en-MD","en-MK","en-MM","en-MS","en-MT","en-MV","en-MX","en-MY","en-NG","en-NL","en-NO","en-NP","en-NZ","en-OM","en-PA","en-PE","en-PG","en-PH","en-PK","en-PL","en-PS","en-PT","en-PY","en-QA","en-RO","en-RU","en-RW","en-SA","en-SB","en-SD","en-SE","en-SG","en-SI","en-SK","en-SN","en-SR","en-SS","en-TC","en-TH","en-TN","en-TO","en-TR","en-TT","en-TW","en-UG","en-US","en-UY","en-VC","en-VE","en-VG","en-VN","en-WS","en-YE","en-ZA","en-ZW","es","es-AR","es-BO","es-BR","es-CL","es-CO","es-CR","es-DO","es-EC","es-ES","es-GT","es-HN","es-MX","es-NI","es-PA","es-PE","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","fa","fi","fi-FI","fil","fr","fr-AE","fr-BE","fr-BF","fr-BJ","fr-CA","fr-CD","fr-CG","fr-CH","fr-CI","fr-CM","fr-FR","fr-GA","fr-GF","fr-LU","fr-MA","fr-MF","fr-MG","fr-ML","fr-NL","fr-PT","fr-SN","fr-TG","ga","gu","ha","he","hi","hi-MY","hi-SG","hr","hr-HR","ht-DO","hu","hu-HU","id","id-HK","id-ID","id-JP","id-SG","it","it-AE","it-BE","it-CH","it-IT","ja","ja-JP","ka","kk","kn","ko","ky-KG","lo","lt","lt-LT","lv","lv-LV","mk","ml","mr","ms","ms-MY","my-JP","my-MY","my-SG","nb","ne-JP","nl","nl-BE","nl-NL","no-NO","pa","pl","pl-PL","pt","pt-AO","pt-BR","pt-PT","ro","ro-MD","ro-RO","ru","ru-BY","ru-KZ","ru-RO","ru-RU","rw-RW","sk","sk-SK","sl","sl-SI","sq","sq-AL","sr","sr-RS","sv","sv-SE","sw","ta","ta-MY","ta-SG","te","th","th-SG","th-TH","tk-TM","tr","tr-TR","uk","uk-UA","ur","uz","uz-UZ","vi","vi-JP","vi-MY","vi-US","zh-CN","zh-HK","zh-JP","zh-SG","zh-TW","zu"],"type":"string"},"PlatformState":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["draft","active","inactive","pending","pendingReview"]},"category":{"type":"string"},"qualityRating":{"type":"string","default":"UNKNOWN","description":"Quality rating for WhatsApp templates (GREEN, YELLOW, RED, UNKNOWN)"}}},"common.suite.type":{"description":"The Suite indicates a Suite that an entity belongs to","enum":["marketing","service","payments","automations","developer"],"type":"string"},"Metadata":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"Tags":{"type":"array","description":"Tags for this project","items":{"type":"string","minLength":1,"maxLength":36},"nullable":true},"ProjectExperiment":{"type":"object","additionalProperties":false,"required":["status","winningMetric"],"properties":{"status":{"$ref":"#/components/schemas/ProjectExperimentStatus"},"winningMetric":{"$ref":"#/components/schemas/ProjectExperimentWinningMetric"},"weights":{"type":"object","description":"The weights of the experiment variants.","additionalProperties":{"type":"integer","format":"int64"}},"duration":{"type":"integer","format":"int64","description":"The duration of the experiment in minutes."},"startedAt":{"type":"string","format":"date-time","description":"The time when the experiment started."},"endedAt":{"type":"string","format":"date-time","description":"The time when the experiment ended."},"scheduledEndAt":{"type":"string","format":"date-time","description":"The scheduled end time of the experiment."},"weightsUpdatedAt":{"type":"string","format":"date-time","description":"The last time the weights were updated."},"winningTemplateId":{"type":"string","format":"uuid","description":"The ID of the winning template."},"stopperType":{"type":"string","description":"The type of caller who stopped the experiment."},"stopperId":{"type":"string","format":"uuid","description":"The reference to the caller who stopped the experiment."}}},"ProjectExperimentStatus":{"type":"string","description":"The status of the experiment.","enum":["draft","running","stopped","completed"]},"ProjectExperimentWinningMetric":{"type":"string","description":"The winning metric of the experiment.","enum":["openRate","readRate","clickRate","conversionRate"]},"error.detailed":{"additionalProperties":false,"description":"An error returned from the API that includes additional details about the error. The `details` property can contain any additional information about the error that may be helpful for debugging or understanding the error.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":true,"description":"Any additional information about the error that may be helpful for debugging or understanding the error.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"DetailedError","type":"object"}},"responses":{"error.response.not_found":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The requested resource was not found."}}},"paths":{"/workspaces/{workspaceId}/projects/{projectId}":{"get":{"summary":"Get Project","operationId":"getProject","tags":["projects"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"$ref":"#/components/responses/error.response.not_found"}}}}}}
```

## PATCH /workspaces/{workspaceId}/projects/{projectId}

> Update Project

```json
{"openapi":"3.0.3","info":{"title":"Touchpoints","version":"v1"},"tags":[{"name":"projects","description":"Manage projects within a workspace"}],"servers":[{"url":"https://api.bird.com","description":"Production API"}],"security":[{"accessKey":[]}],"components":{"securitySchemes":{"accessKey":{"description":"Uses the Authorization header: 'AccessKey ' followed by your access key token","scheme":"AccessKey","type":"http"}},"schemas":{"UpdateProject":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"type":{"type":"string","nullable":true,"allOf":[{"$ref":"#/components/schemas/ProjectType"}]},"suites":{"type":"array","items":{"$ref":"#/components/schemas/common.suite.type"}},"tags":{"$ref":"#/components/schemas/Tags"},"directoryId":{"type":"string","format":"uuid","nullable":true},"experiment":{"$ref":"#/components/schemas/ProjectExperimentInput"}}},"ProjectType":{"type":"string","description":"enum for all the different project types Touchpoints API supports.","enum":["chatwidget","form","knowledgeBase","deepLink","channelTemplate","website","htmlEmail","popup","helpcenter","adCreative","preferencecenter","landingpage","inAppMessageTemplate"]},"common.suite.type":{"description":"The Suite indicates a Suite that an entity belongs to","enum":["marketing","service","payments","automations","developer"],"type":"string"},"Tags":{"type":"array","description":"Tags for this project","items":{"type":"string","minLength":1,"maxLength":36},"nullable":true},"ProjectExperimentInput":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"status":{"$ref":"#/components/schemas/ProjectExperimentStatus"},"winningMetric":{"description":"The winning metric of the experiment. This can only be set when the experiment is in draft status.","$ref":"#/components/schemas/ProjectExperimentWinningMetric"},"weights":{"type":"object","description":"The weights of the experiment variants. These can only be changed when the experiment is in draft status.","additionalProperties":{"type":"integer","format":"int64"}},"duration":{"type":"integer","format":"int64","minimum":1440,"maximum":525600,"description":"An optional duration for the experiment in minutes. This can only be provided when the status is being changed to running."},"winningTemplateId":{"type":"string","format":"uuid","description":"The ID of the winning template."}}},"ProjectExperimentStatus":{"type":"string","description":"The status of the experiment.","enum":["draft","running","stopped","completed"]},"ProjectExperimentWinningMetric":{"type":"string","description":"The winning metric of the experiment.","enum":["openRate","readRate","clickRate","conversionRate"]},"Project":{"type":"object","additionalProperties":false,"required":["id","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":0,"maxLength":100},"description":{"type":"string","minLength":0,"maxLength":300},"type":{"$ref":"#/components/schemas/ProjectType"},"scope":{"$ref":"#/components/schemas/ProjectScope"},"supportedPlatforms":{"$ref":"#/components/schemas/PlatformList"},"locales":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/standard.locale.messaging"}},"localeStatuses":{"type":"object","nullable":true,"additionalProperties":{"type":"string","enum":["draft","pending","active","inactive"]}},"platformInfo":{"type":"object","nullable":true,"additionalProperties":{"$ref":"#/components/schemas/PlatformState"},"description":"Platform-specific state information for WhatsApp templates. The key is a string in the format \"platform:wabaId:locale\" (e.g., \"whatsapp:123456789:en\"). Contains status information for each WABA/Locale combination.\n"},"activeResourceId":{"type":"string","format":"uuid","nullable":true},"draftCount":{"type":"number"},"pendingCount":{"type":"number"},"activeCount":{"type":"number"},"inactiveCount":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","nullable":true,"format":"date-time"},"approvedTemplateChannelsId":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"approvedTemplateChannelGroupIds":{"type":"array","nullable":true,"items":{"type":"string","format":"uuid"}},"suites":{"type":"array","items":{"$ref":"#/components/schemas/common.suite.type"}},"clonedFrom":{"type":"string","nullable":true,"format":"uuid","description":"The ID of the project that this project was cloned from. This field is only present if this project was cloned from another project.\n"},"metadata":{"$ref":"#/components/schemas/Metadata"},"tags":{"$ref":"#/components/schemas/Tags"},"directoryId":{"type":"string","format":"uuid","description":"The ID of the directory that this project belongs to. This field is only present if the project is part of a directory.\n"},"experiment":{"$ref":"#/components/schemas/ProjectExperiment"}}},"ProjectScope":{"type":"number","enum":[0,1,2,3],"description":"dictionary:\n\n\n  * 0 DEFAULT: This should indicate that the project is of our current scope (can be used across all BirdCRM services).\n  * 1 SAVED_TEMPLATE: This should indicate that the project is a saved template, meaning that it came from extending one of BirdCRM library templates. They can be used for creating other Projects, such as inline campaigns and flows content.\n  * 2 INLINE_MESSAGE: This should indicate that the project is an inline message, meaning that it was created from a campaign or flow using a library template or a saved template. They are linked to an specific instance of other BirdCRM services (Campaigns, Flows, etc.).\n  * 3 (PLATFORM_REVIEWED_TEMPLATE): This should indicate that the project is a platform reviewed template, meaning the template must go through a external platform review."},"PlatformList":{"type":"array","nullable":true,"items":{"type":"string","enum":["all","apple-business-chat","sms-messagebird","facebook-messenger","google-business-messages","instagram","whatsapp","email-sparkpost","chat","push-notifications","rcs-google","linkedin","line","app-inbox","in-app-messages"]}},"standard.locale.messaging":{"description":"Curated set of BCP47 locale identifiers supported by Bird messaging products","enum":["ae-AZ","af","ar","ar-AZ","ar-EG","ar-ID","ar-UA","az","az-AZ","bg","bg-BG","bn","bn-MY","bn-SG","ca","cs","cs-CZ","da","da-DK","de","de-AT","de-CH","de-DE","de-LI","de-LU","ee-GH","el","el-CY","el-GR","en","en-AE","en-AF","en-AG","en-AL","en-AR","en-AS","en-AT","en-AU","en-AW","en-AZ","en-BA","en-BB","en-BD","en-BE","en-BF","en-BG","en-BH","en-BJ","en-BN","en-BO","en-BR","en-BS","en-BW","en-BY","en-BZ","en-CA","en-CD","en-CG","en-CH","en-CI","en-CL","en-CM","en-CN","en-CO","en-CY","en-CZ","en-DE","en-DK","en-DM","en-DO","en-EC","en-EG","en-ES","en-FI","en-FJ","en-FR","en-GB","en-GD","en-GE","en-GH","en-GI","en-GM","en-GR","en-GY","en-HK","en-HR","en-HT","en-HU","en-ID","en-IE","en-IL","en-IN","en-IQ","en-IS","en-IT","en-JM","en-JO","en-JP","en-KE","en-KH","en-KN","en-KR","en-KW","en-KY","en-KZ","en-LA","en-LB","en-LT","en-LV","en-MD","en-MK","en-MM","en-MS","en-MT","en-MV","en-MX","en-MY","en-NG","en-NL","en-NO","en-NP","en-NZ","en-OM","en-PA","en-PE","en-PG","en-PH","en-PK","en-PL","en-PS","en-PT","en-PY","en-QA","en-RO","en-RU","en-RW","en-SA","en-SB","en-SD","en-SE","en-SG","en-SI","en-SK","en-SN","en-SR","en-SS","en-TC","en-TH","en-TN","en-TO","en-TR","en-TT","en-TW","en-UG","en-US","en-UY","en-VC","en-VE","en-VG","en-VN","en-WS","en-YE","en-ZA","en-ZW","es","es-AR","es-BO","es-BR","es-CL","es-CO","es-CR","es-DO","es-EC","es-ES","es-GT","es-HN","es-MX","es-NI","es-PA","es-PE","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","fa","fi","fi-FI","fil","fr","fr-AE","fr-BE","fr-BF","fr-BJ","fr-CA","fr-CD","fr-CG","fr-CH","fr-CI","fr-CM","fr-FR","fr-GA","fr-GF","fr-LU","fr-MA","fr-MF","fr-MG","fr-ML","fr-NL","fr-PT","fr-SN","fr-TG","ga","gu","ha","he","hi","hi-MY","hi-SG","hr","hr-HR","ht-DO","hu","hu-HU","id","id-HK","id-ID","id-JP","id-SG","it","it-AE","it-BE","it-CH","it-IT","ja","ja-JP","ka","kk","kn","ko","ky-KG","lo","lt","lt-LT","lv","lv-LV","mk","ml","mr","ms","ms-MY","my-JP","my-MY","my-SG","nb","ne-JP","nl","nl-BE","nl-NL","no-NO","pa","pl","pl-PL","pt","pt-AO","pt-BR","pt-PT","ro","ro-MD","ro-RO","ru","ru-BY","ru-KZ","ru-RO","ru-RU","rw-RW","sk","sk-SK","sl","sl-SI","sq","sq-AL","sr","sr-RS","sv","sv-SE","sw","ta","ta-MY","ta-SG","te","th","th-SG","th-TH","tk-TM","tr","tr-TR","uk","uk-UA","ur","uz","uz-UZ","vi","vi-JP","vi-MY","vi-US","zh-CN","zh-HK","zh-JP","zh-SG","zh-TW","zu"],"type":"string"},"PlatformState":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["draft","active","inactive","pending","pendingReview"]},"category":{"type":"string"},"qualityRating":{"type":"string","default":"UNKNOWN","description":"Quality rating for WhatsApp templates (GREEN, YELLOW, RED, UNKNOWN)"}}},"Metadata":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"ProjectExperiment":{"type":"object","additionalProperties":false,"required":["status","winningMetric"],"properties":{"status":{"$ref":"#/components/schemas/ProjectExperimentStatus"},"winningMetric":{"$ref":"#/components/schemas/ProjectExperimentWinningMetric"},"weights":{"type":"object","description":"The weights of the experiment variants.","additionalProperties":{"type":"integer","format":"int64"}},"duration":{"type":"integer","format":"int64","description":"The duration of the experiment in minutes."},"startedAt":{"type":"string","format":"date-time","description":"The time when the experiment started."},"endedAt":{"type":"string","format":"date-time","description":"The time when the experiment ended."},"scheduledEndAt":{"type":"string","format":"date-time","description":"The scheduled end time of the experiment."},"weightsUpdatedAt":{"type":"string","format":"date-time","description":"The last time the weights were updated."},"winningTemplateId":{"type":"string","format":"uuid","description":"The ID of the winning template."},"stopperType":{"type":"string","description":"The type of caller who stopped the experiment."},"stopperId":{"type":"string","format":"uuid","description":"The reference to the caller who stopped the experiment."}}},"error.detailed":{"additionalProperties":false,"description":"An error returned from the API that includes additional details about the error. The `details` property can contain any additional information about the error that may be helpful for debugging or understanding the error.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":true,"description":"Any additional information about the error that may be helpful for debugging or understanding the error.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"DetailedError","type":"object"},"error.validation":{"additionalProperties":false,"description":"A validation error returned from the API. The `details` map keys are JSON paths\npointing into the request body / parameters; values are arrays of human-readable\nmessages describing each problem with that path.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"description":"Per-field validation messages keyed by JSON path.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"ValidationError","type":"object"}},"responses":{"error.response.not_found":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The requested resource was not found."},"error.response.invalid_request":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.validation"}}},"description":"The request contains invalid parameters or body fields."}}},"paths":{"/workspaces/{workspaceId}/projects/{projectId}":{"patch":{"summary":"Update Project","operationId":"updateProject","tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"$ref":"#/components/responses/error.response.not_found"},"422":{"$ref":"#/components/responses/error.response.invalid_request"}}}}}}
```

## DELETE /workspaces/{workspaceId}/projects/{projectId}

> Delete project

```json
{"openapi":"3.0.3","info":{"title":"Touchpoints","version":"v1"},"tags":[{"name":"projects","description":"Manage projects within a workspace"}],"servers":[{"url":"https://api.bird.com","description":"Production API"}],"security":[{"accessKey":[]}],"components":{"securitySchemes":{"accessKey":{"description":"Uses the Authorization header: 'AccessKey ' followed by your access key token","scheme":"AccessKey","type":"http"}},"responses":{"error.response.not_found":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The requested resource was not found."},"error.response.conflict":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The request conflicts with the current state of the resource."}},"schemas":{"error.detailed":{"additionalProperties":false,"description":"An error returned from the API that includes additional details about the error. The `details` property can contain any additional information about the error that may be helpful for debugging or understanding the error.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":true,"description":"Any additional information about the error that may be helpful for debugging or understanding the error.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"DetailedError","type":"object"}}},"paths":{"/workspaces/{workspaceId}/projects/{projectId}":{"delete":{"summary":"Delete project","operationId":"deleteProject","tags":["projects"],"responses":{"204":{"description":"Deleted"},"404":{"$ref":"#/components/responses/error.response.not_found"},"409":{"$ref":"#/components/responses/error.response.conflict"}}}}}}
```
