Eventos de espacio de trabajo
Define eventos de espacio de trabajo y los tipos de sus propiedades, para que los eventos w: que envías se comprueben.
Crear un evento de espacio de trabajo
Define un evento de espacio de trabajo: un nombre y las propiedades que lleva cada evento de ese tipo, cada una con su tipo. Después lo envías como w:<name>, y Emailit rechaza los eventos que no coinciden con la definición. Requiere una clave de API con el permiso full.
Los eventos de espacio de trabajo están incluidos en los planes Pro, Business y Custom. Un espacio de trabajo puede definir tantos como tipos de eventos tenga su plan: 100 en Pro y 1000 en Business, sin límite en Custom. Los eventos personalizados (c:<name>) no necesitan definición. Consulta Eventos de espacio de trabajo.
/workspace/eventsParámetros del cuerpo
namestringobligatoriocustomer.type: de 1 a 100 letras, dígitos, ., - o _, empezando por una letra o un dígito. También puedes enviarlo con el prefijo (w:customer.type); el prefijo se quita. Tiene que ser único en el espacio de trabajo.titlestring | nulldescriptionstring | nullpropertiesobject[]Hasta 50 definiciones de propiedades. Por defecto, [], que significa que los eventos de este tipo no llevan propiedades. Cada una tiene:
name(obligatorio): de 1 a 64 letras, dígitos,-o_, empezando por una letra o un dígito. No se admiten puntos, porque los filtros de webhook y las plantillas usan los puntos para acceder a valores anidados. Los nombres tienen que ser únicos dentro de la definición.type(obligatorio):string,number,dateoboolean, con cualquier combinación de mayúsculas y minúsculas.title: una etiqueta, de hasta 120 caracteres.description: de hasta 1000 caracteres.required:truesi todos los eventos tienen que incluir la propiedad. Por defecto,false.
Devuelve
Devuelve 201 Created con el objeto de evento de espacio de trabajo.
| Código | Cuándo |
|---|---|
403 |
La clave de API no tiene el permiso full, o el espacio de trabajo está en Pay as you go: error es plan_required y required_plan es pro. |
409 |
Ya existe un evento de espacio de trabajo con este nombre. errors.name lo indica. |
422 |
Un campo no es válido: errors usa su ruta como clave, por ejemplo name o properties.1.type, y message repite el primer problema. También se devuelve con code: "workspace_events_limit" cuando el espacio de trabajo ya tiene tantos eventos de espacio de trabajo como permite su plan, y para un nombre que empieza por 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"]
}
}Obtener un evento de espacio de trabajo
Obtiene la definición de un evento de espacio de trabajo: su nombre, su título y las propiedades que tienen que respetar quienes lo envían. Requiere una clave de API con el permiso full.
/workspace/events/{id}Parámetros de ruta
idstringobligatorioetp_…), su nombre (customer.type) o su tipo de evento (w:customer.type). Codifica los : para URL si tu cliente no lo hace.Devuelve
Devuelve el objeto de evento de espacio de trabajo.
objectstringworkspace_event.idstringetp_.namestringtypestringw: seguido del nombre.titlestring | nulldescriptionstring | nullpropertiesobject[]Las propiedades que puede llevar un evento de este tipo, cada una con:
name: la clave en laspropertiesdel evento.type:string,number,dateoboolean. Consulta Tipos de propiedades.title,description: etiquetas opcionales, onull.required: si todos los eventos tienen que incluirla.
created_at, updated_atstringDevuelve 404 con error: "Workspace event not found" si ninguna definición coincide.
{
"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"
}Actualizar un evento de espacio de trabajo
Actualiza los campos que pasas y deja los demás sin cambios. Requiere una clave de API con el permiso full.
La definición solo comprueba los eventos nuevos. Los eventos ya guardados conservan su tipo y sus propiedades, así que, después de un cambio, los eventos anteriores pueden tener propiedades que la definición ya no incluye.
propertiessustituye la lista completa. Para añadir una propiedad, envía la lista actual más la nueva.- Cambiar el nombre cambia el tipo que hay que enviar. Los eventos guardados con el nombre anterior lo conservan, y los eventos nuevos con el nombre anterior se rechazan, salvo que vuelvas a definirlo.
/workspace/events/{id}Parámetros de ruta
idstringobligatorioetp_…), su nombre o su tipo de evento (w:…).Parámetros del cuerpo
namestringtitlestring | nullnull o una cadena vacía lo borran.descriptionstring | nullnull o una cadena vacía la borran.propertiesobject[][] elimina todas las propiedades.Devuelve
Devuelve el objeto de evento de espacio de trabajo actualizado.
| Código | Cuándo |
|---|---|
404 |
Ninguna definición coincide con id. |
409 |
Otro evento de espacio de trabajo ya tiene el nombre nuevo. |
422 |
Un campo no es válido: errors usa su ruta como clave, y message repite el primer 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 de espacio de trabajo
Devuelve las definiciones de eventos del espacio de trabajo, ordenadas por nombre. Requiere una clave de API con el permiso full.
/workspace/eventsParámetros de consulta
pageintegerpor defecto: 1limitintegerpor defecto: 100searchstringmatchstringall (por defecto) exige que se cumplan todos los filtros. or coincide con cualquier filtro. Consulta Filtrado.
orderstringClave de ordenación de esta lista. Consulta las claves de ordenación más abajo.
directionstringasc o desc.
Claves de filtro
Los filtros usan parámetros de consulta key.condition=value, por ejemplo name.starts_with=order. o created_at.after=2026-10-01. Para las condiciones de cada tipo, consulta Filtrado y ordenación.
| Clave | Tipo | Notas |
|---|---|---|
name |
string | El nombre sin el prefijo w:. |
title |
string | |
created_at |
date | |
updated_at |
date |
Claves de orden para order: name, title, created_at, updated_at. Por defecto, name, en orden ascendente.
Devuelve
dataobject[]total_recordsintegernext_page_urlstring | nullnull en la última página. Solo lleva page y limit; vuelve a añadir tu búsqueda y tus filtros cuando la sigas.previous_page_urlstring | nullnull en la primera 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
}Eliminar un evento de espacio de trabajo
Elimina la definición de un evento de espacio de trabajo. Requiere una clave de API con el permiso full.
Los eventos ya guardados con este tipo se conservan, en el registro de eventos y en los contactos. Los eventos nuevos de este tipo se rechazan con 422 hasta que vuelvas a definirlo. Los webhooks suscritos al tipo mantienen la suscripción.
/workspace/events/{id}Parámetros de ruta
idstringobligatorioetp_…), su nombre o su tipo de evento (w:…).Devuelve
objectstringworkspace_event.idstringnamestringtypestringw: seguido del nombre.deletedbooleantrue.Devuelve 404 si ninguna definición coincide.
{
"object": "workspace_event",
"id": "etp_2yHn4Kd8QwE1rT6vBx9LmZ3sPf0",
"name": "customer.type",
"type": "w:customer.type",
"deleted": true
}