# 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"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bird.com/api/touchpoints-api/api-reference/projects.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
