Eventos do workspace
Defina eventos do workspace e os tipos das propriedades deles, para que os eventos w: que você envia sejam verificados.
Criar um evento do workspace
Define um evento do workspace: um nome e as propriedades que todo evento desse tipo leva, cada uma com um tipo. Depois, você o envia como w:<name>, e o Emailit rejeita os eventos que não correspondem à definição. Requer uma chave de API com escopo full.
Os eventos do workspace estão incluídos nos planos Pro, Business e Custom. Um workspace pode definir tantos quantos forem os tipos de evento do plano: 100 no Pro e 1.000 no Business, sem limite no Custom. Os eventos personalizados (c:<name>) não precisam de definição. Consulte Eventos do workspace.
/workspace/eventsParâmetros do corpo
namestringobrigatóriocustomer.type: de 1 a 100 letras, dígitos, ., - ou _, começando com uma letra ou um dígito. Você também pode enviá-lo com o prefixo (w:customer.type); o prefixo é removido. Deve ser único no workspace.titlestring | nulldescriptionstring | nullpropertiesobject[]Até 50 definições de propriedade. Padrão [], o que significa que os eventos desse tipo não levam propriedades. Cada uma tem:
name(obrigatório): de 1 a 64 letras, dígitos,-ou_, começando com uma letra ou um dígito. Pontos não são permitidos, porque os filtros de webhook e os templates usam pontos para acessar valores aninhados. Os nomes devem ser únicos dentro da definição.type(obrigatório):string,number,dateouboolean, em maiúsculas ou minúsculas.title: um rótulo, com até 120 caracteres.description: até 1.000 caracteres.required:truese todo evento tiver de incluir a propriedade. Padrãofalse.
Retorno
Retorna 201 Created com o objeto de evento do workspace.
| Status | Quando |
|---|---|
403 |
A chave de API não tem o escopo full, ou o workspace está no Pay as you go: error é plan_required e required_plan é pro. |
409 |
Já existe um evento do workspace com esse nome. errors.name informa isso. |
422 |
Um campo é inválido: errors é indexado pelo caminho dele, como name ou properties.1.type, e message repete o primeiro problema. Também é retornado com code: "workspace_events_limit" quando o workspace já tem tantos eventos do workspace quanto o plano permite, e para um nome que começa com c:. |
{
"object": "workspace_event",
"id": "etp_2yHn4Kd8QwE1rT6vBx9LmZ3sPf0",
"name": "customer.type",
"type": "w:customer.type",
"title": "Customer type",
"description": "Set when a customer's account type changes in the shop.",
"properties": [
{ "name": "segment", "type": "string", "title": "Segment", "description": "b2b or b2c", "required": true },
{ "name": "since", "type": "date", "title": null, "description": null, "required": false }
],
"created_at": "2026-10-19T08:00:00.000000+00:00",
"updated_at": "2026-10-19T08:00:00.000000+00:00"
}{
"error": "plan_required",
"required_plan": "pro",
"message": "Workspace and custom events are included with Pro and Business."
}{
"error": "w:customer.type is already defined",
"errors": {
"name": ["is already defined"]
}
}{
"error": "properties.1.type must be one of string, number, date, boolean",
"message": "properties.1.type must be one of string, number, date, boolean",
"errors": {
"properties.1.type": ["must be one of string, number, date, boolean"]
}
}Obter um evento do workspace
Obtém a definição de um evento do workspace: o nome, o título e as propriedades que os sistemas que enviam o evento devem seguir. Requer uma chave de API com escopo full.
/workspace/events/{id}Parâmetros de caminho
idstringobrigatórioetp_…), o nome dela (customer.type) ou o tipo de evento dela (w:customer.type). Codifique o : para URL se o seu cliente não fizer isso.Retorno
Retorna o objeto de evento do workspace.
objectstringworkspace_event.idstringetp_.namestringtypestringw: seguido do nome.titlestring | nulldescriptionstring | nullpropertiesobject[]As propriedades que um evento desse tipo pode levar, cada uma com:
name: a chave empropertiesdo evento.type:string,number,dateouboolean. Consulte Tipos de propriedade.title,description: rótulos opcionais, ounull.required: se todo evento tem de incluí-la.
created_at, updated_atstringRetorna 404 com error: "Workspace event not found" se nenhuma definição corresponder.
{
"object": "workspace_event",
"id": "etp_2yHn4Kd8QwE1rT6vBx9LmZ3sPf0",
"name": "customer.type",
"type": "w:customer.type",
"title": "Customer type",
"description": "Set when a customer's account type changes in the shop.",
"properties": [
{ "name": "segment", "type": "string", "title": "Segment", "description": "b2b or b2c", "required": true },
{ "name": "since", "type": "date", "title": null, "description": null, "required": false }
],
"created_at": "2026-10-19T08:00:00.000000+00:00",
"updated_at": "2026-10-19T08:00:00.000000+00:00"
}{
"error": "Workspace event not found"
}Atualizar um evento do workspace
Atualiza os campos que você enviar e mantém os outros inalterados. Requer uma chave de API com escopo full.
A definição só verifica os eventos novos. Os eventos já armazenados mantêm o tipo e as propriedades deles, então, depois de uma alteração, os eventos mais antigos podem ter propriedades que a definição não lista mais.
propertiessubstitui a lista inteira. Para adicionar uma propriedade, envie a lista atual mais a nova.- Renomear altera o tipo a enviar. Os eventos armazenados com o nome antigo o mantêm, e os eventos novos com o nome antigo são rejeitados, a menos que você o defina de novo.
/workspace/events/{id}Parâmetros de caminho
idstringobrigatórioetp_…), o nome dela ou o tipo de evento dela (w:…).Parâmetros do corpo
namestringtitlestring | nullnull ou uma string vazia o apaga.descriptionstring | nullnull ou uma string vazia a apaga.propertiesobject[][] remove todas as propriedades.Retorno
Retorna o objeto de evento do workspace atualizado.
| Status | Quando |
|---|---|
404 |
Nenhuma definição corresponde a id. |
409 |
Outro evento do workspace já tem o novo nome. |
422 |
Um campo é inválido: errors é indexado pelo caminho dele, e message repete o primeiro problema. |
{
"object": "workspace_event",
"id": "etp_2yHn4Kd8QwE1rT6vBx9LmZ3sPf0",
"name": "customer.type",
"type": "w:customer.type",
"title": "Customer type",
"description": "Set when a customer's account type changes in the shop.",
"properties": [
{ "name": "segment", "type": "string", "title": "Segment", "description": null, "required": true },
{ "name": "since", "type": "date", "title": null, "description": null, "required": false },
{ "name": "vat_exempt", "type": "boolean", "title": null, "description": null, "required": false }
],
"created_at": "2026-10-19T08:00:00.000000+00:00",
"updated_at": "2026-10-19T10:12:45.000000+00:00"
}{
"error": "w:customer.segment is already defined",
"errors": {
"name": ["is already defined"]
}
}Listar eventos do workspace
Retorna as definições de eventos do workspace, ordenadas por nome. Requer uma chave de API com escopo full.
/workspace/eventsParâmetros de consulta
pageintegerpadrão: 1limitintegerpadrão: 100searchstringmatchstringall (padrão) exige todos os filtros. or corresponde a qualquer filtro. Consulte Filtragem.
orderstringChave de ordenação desta lista. Consulte as chaves de ordenação abaixo.
directionstringasc ou desc.
Chaves de filtro
Os filtros usam parâmetros de consulta key.condition=value, por exemplo, name.starts_with=order. ou created_at.after=2026-10-01. Consulte Filtragem para as condições de cada tipo.
| Chave | Tipo | Observações |
|---|---|---|
name |
string | O nome sem o prefixo w:. |
title |
string | |
created_at |
date | |
updated_at |
date |
Chaves de ordenação para order: name, title, created_at, updated_at. O padrão é name, em ordem crescente.
Retorno
dataobject[]total_recordsintegernext_page_urlstring | nullnull na última página. Ele leva apenas page e limit; adicione de novo a sua busca e os seus filtros ao segui-lo.previous_page_urlstring | nullnull na primeira página.{
"data": [
{
"object": "workspace_event",
"id": "etp_2yHn4Kd8QwE1rT6vBx9LmZ3sPf0",
"name": "customer.type",
"type": "w:customer.type",
"title": "Customer type",
"description": "Set when a customer's account type changes in the shop.",
"properties": [
{ "name": "segment", "type": "string", "title": "Segment", "description": "b2b or b2c", "required": true },
{ "name": "since", "type": "date", "title": null, "description": null, "required": false }
],
"created_at": "2026-10-19T08:00:00.000000+00:00",
"updated_at": "2026-10-19T08:00:00.000000+00:00"
}
],
"total_records": 1,
"next_page_url": null,
"previous_page_url": null
}Excluir um evento do workspace
Exclui a definição de um evento do workspace. Requer uma chave de API com escopo full.
Os eventos já armazenados com esse tipo são mantidos, no log de eventos e nos contatos. Os eventos novos desse tipo são rejeitados com 422 até você defini-lo de novo. Os webhooks inscritos nesse tipo mantêm a inscrição.
/workspace/events/{id}Parâmetros de caminho
idstringobrigatórioetp_…), o nome dela ou o tipo de evento dela (w:…).Retorno
objectstringworkspace_event.idstringnamestringtypestringw: seguido do nome.deletedbooleantrue.Retorna 404 se nenhuma definição corresponder.
{
"object": "workspace_event",
"id": "etp_2yHn4Kd8QwE1rT6vBx9LmZ3sPf0",
"name": "customer.type",
"type": "w:customer.type",
"deleted": true
}