Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-front
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-front` to build the library.

View File

@@ -0,0 +1,10 @@
{
"name": "@activepieces/piece-front",
"version": "0.0.2",
"type": "commonjs",
"main": "./src/index.js",
"types": "./src/index.d.ts",
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-front",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/front/src",
"projectType": "library",
"release": {
"version": {
"manifestRootsToUpdate": [
"dist/{projectRoot}"
],
"currentVersionResolver": "git-tag",
"fallbackCurrentVersionResolver": "disk"
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/front",
"tsConfig": "packages/pieces/community/front/tsconfig.lib.json",
"packageJson": "packages/pieces/community/front/package.json",
"main": "packages/pieces/community/front/src/index.ts",
"assets": [
"packages/pieces/community/front/*.md",
{
"input": "packages/pieces/community/front/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/front",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "Ihr Front-API-Token. Sie können einen von Ihren Front-Einstellungen unter \"Entwickler\" erstellen. Stellen Sie sicher, dass das Token die notwendigen Bereiche hat.",
"Add Comment": "Kommentar hinzufügen",
"Add Contact Handle": "Kontakt hinzufügen",
"Add Conversation Links": "Unterhaltslinks hinzufügen",
"Add Conversation Tags": "Unterhaltung-Tags hinzufügen",
"Assign/Unassign Conversation": "Konversation zuweisen/aufheben",
"Create Account": "Konto erstellen",
"Create Contact": "Kontakt erstellen",
"Create Draft": "Entwurf erstellen",
"Create Draft Reply": "Entwurf Antwort erstellen",
"Create Link": "Link erstellen",
"Find Account": "Konto finden",
"Find Contact": "Kontakt finden",
"Find Conversation": "Unterhaltung finden",
"Remove Contact Handle": "Kontakt-Handle entfernen",
"Remove Conversation Links": "Unterhaltslinks entfernen",
"Send Message": "Nachricht senden",
"Send Reply": "Antwort senden",
"Update Account": "Konto aktualisieren",
"Update Contact": "Kontakt aktualisieren",
"Update Conversation": "Unterhaltung aktualisieren",
"Update Link": "Link aktualisieren",
"Add a comment (internal note) to a conversation in Front.": "Füge einen Kommentar (interne Notiz) zu einer Unterhaltung in Front hinzu.",
"Add a handle (email, phone number, etc.) to an existing Contact.": "Fügen Sie einem bestehenden Kontakt einen Handle (E-Mail, Telefonnummer, etc.) hinzu.",
"Link external references (URLs) to a conversation.": "Verknüpfen Sie externe Verweise (URLs) auf eine Unterhaltung.",
"Add one or more tags to a conversation.": "Füge einem oder mehreren Tags zu einer Unterhaltung hinzu.",
"Assign a conversation to a teammate or remove assignment.": "Weisen Sie einem Teamkollegen eine Unterhaltung oder entfernen Sie die Zuweisung.",
"Create a new account in Front.": "Erstellen Sie ein neues Konto in Front.",
"Create a new contact in Front.": "Erstellen Sie einen neuen Kontakt in Front.",
"Create a draft message in Front.": "Erstellen Sie einen Entwurf Nachricht in der Front.",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "Erstellen Sie einen Entwurf einer Antwort auf eine bestehende Konversation (Betreff/Zitat etc.) ohne sofort zu senden.",
"Create a Link in Front (name, external URL).": "Erstellen Sie einen Link in Front (Name, externe URL).",
"List company accounts and optionally filter by email domain or external ID.": "Firmenkonten auflisten und wahlweise nach E-Mail-Domäne oder externer ID filtern.",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "Suchen Sie einen Kontakt per Handle (E-Mail, Telefon, usw.) oder einem anderen Identifikationsfeld.",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "Finden Sie ein Gespräch durch Suchfilter wie Thema, Teilnehmer, Tags, Posteingang, etc.",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "Entfernen Sie ein Handle (E-Mail, Telefonnummer, usw.) aus einem bestehenden Kontakt.",
"Remove external links from a conversation in Front.": "Entferne externe Links von einer Unterhaltung in der Front.",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "Senden Sie eine neue Nachricht (beginnt eine Unterhaltung) mit dem Thema, Empfänger, Körper, Anhänge, Tags usw.",
"Send a reply to a conversation in Front.": "Sende eine Antwort auf ein Gespräch in der Front.",
"Update an existing account in Front.": "Aktualisiere ein bestehendes Konto in Front.",
"Update an existing contact in Front.": "Aktualisiere einen bestehenden Kontakt in Front.",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "Konversationseigenschaften ändern: Status, Zuweiser, Posteingang, Tags, etc.",
"Update the name or external URL of a Link in Front.": "Aktualisieren Sie den Namen oder die externe URL eines Links in der Front.",
"Conversation ID": "Konversations-ID",
"Teammate ID": "Teamkollege ID",
"Comment Body": "Kommentar-Text",
"Contact ID": "Kontakt-ID",
"Handle Type": "Handle Typ",
"Handle Value": "Handle Wert",
"Link IDs": "Link IDs",
"Tag IDs": "Tag-IDs",
"Account Name": "Kontoname",
"Description": "Beschreibung",
"Domains": "Domänen",
"External ID": "Externe ID",
"Custom Fields": "Eigene Felder",
"Name": "Name",
"Handles": "Handles",
"Avatar URL": "Avatar-URL",
"Links": "Links",
"Group Names": "Gruppennamen",
"Contact Lists": "Kontaktlisten",
"Channel ID": "Kanal-ID",
"To": "An",
"CC": "CC",
"BCC": "BCC",
"Subject": "Betreff",
"Body": "Körper",
"Attachments": "Anhänge",
"Mode": "Modus",
"Signature ID": "Signatur-ID",
"Add Default Signature": "Standardsignatur hinzufügen",
"Message Body": "Nachrichtentext",
"External URL": "Externe URL",
"Pattern": "Muster",
"Email Domain": "E-Mail-Domäne",
"Limit": "Limit",
"Page Token": "Seiten-Token",
"Sort By": "Sortieren nach",
"Sort Order": "Sortierung",
"Email": "E-Mail",
"Phone": "Telefon",
"Custom Query": "Eigene Abfrage",
"Query": "Abfrage",
"Handle": "Handle",
"Source": "Quelle",
"Delete Contact if Last Handle": "Kontakt löschen, wenn Letztes Handle",
"Account ID": "Konto-ID",
"Status": "Status",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "Konversation auswählen",
"Select the teammate": "Teamkollege auswählen",
"The content of the comment.": "Der Inhalt des Kommentars.",
"Select the contact": "Kontakt auswählen",
"Type of handle to add.": "Typ des zu addierenden Handels.",
"The value of the handle (e.g., email address, phone number).": "Der Wert des Handles (z.B. E-Mail-Adresse, Telefonnummer).",
"Select one or more links": "Wählen Sie einen oder mehrere Links",
"Select one or more tags": "Wählen Sie einen oder mehrere Tags",
"The name of the account to create.": "Der Name des zu erstellenden Kontos.",
"A description for the account.": "Eine Beschreibung für das Konto.",
"List of domains associated with the account.": "Liste der dem Konto zugeordneten Domänen.",
"An external identifier for the account.": "Ein externer Bezeichner für das Konto.",
"Custom fields for this account, as a JSON object.": "Benutzerdefinierte Felder für dieses Konto, als JSON-Objekt.",
"The name of the contact.": "Der Name des Kontakts.",
"A description for the contact.": "Eine Beschreibung für den Kontakt.",
"List of contact handles (e.g., email, phone).": "Liste der Kontakthandles (z.B. E-Mail, Telefon).",
"URL of the contacts avatar image.": "URL des Avatar-Bildes des Kontakts.",
"List of URLs associated with the contact.": "Liste der dem Kontakt zugeordneten URLs.",
"List of group names to associate with the contact.": "Liste der Gruppennamen, die dem Kontakt zugeordnet werden sollen.",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "Liste der Namen der Kontaktliste, zu denen dieser Kontakt gehört. Front wird alle anlegen, die nicht existieren.",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "Benutzerdefinierte Felder für diesen Kontakt, als JSON-Objekt (z.B. {\"CRM-ID\": \"12345\"}).",
"Select the channel": "Kanal auswählen",
"List of recipient handles (email addresses, etc.).": "Liste der Empfängerhandles (E-Mail-Adressen, etc.).",
"List of CC recipient handles.": "Liste der CC-Empfängerhandles.",
"List of BCC recipient handles.": "Liste der BCC-Empfängerhandlungen.",
"The subject of the draft.": "Das Thema des Entwurfs.",
"The body of the draft message.": "Der Wortlaut des Entwurfs.",
"List of attachment URLs.": "Liste der Anhang-URLs.",
"Mode of the draft reply": "Modus des Entwurfs der Antwort",
"The ID of the signature to use for the draft reply (if applicable).": "Die ID der Unterschrift, die für den Antwortentwurf verwendet werden soll (falls zutreffend).",
"Whether to append the default signature to the draft reply (if applicable).": "Gibt an, ob die Standardsignatur dem Entwurf der Antwort angefügt werden soll (falls zutreffend).",
"The content of the draft reply.": "Der Inhalt des Antwortentwurfs.",
"The subject of the draft reply (for email channels).": "Der Betreff des Entwurfs der Antwort (für E-Mail-Kanäle).",
"The name of the link.": "Der Name des Links.",
"The external URL for the link.": "Die externe URL für den Link.",
"Optional pattern to match URLs (regex).": "Optionales Muster für URLs (Regex).",
"Filter accounts by email domain ": "Konten nach E-Mail-Domain filtern ",
"Filter accounts by external ID": "Konten nach externer ID filtern",
"Maximum number of accounts to return (max 100).": "Maximale Anzahl der zurückzusenden Konten (max. 100).",
"Token for pagination.": "Token für Seitenumbruch.",
"Field used to sort the accounts.": "Feld zum Sortieren der Konten.",
"Order by which results should be sorted.": "Reihenfolge nach der Ergebnisse sortiert werden sollen.",
"Email address to search for.": "Zu suchende E-Mail-Adresse.",
"Phone number to search for.": "Zu suchende Telefonnummer",
"Custom Front query string (advanced).": "Eigener Front-Abfrage-String (fortgeschritten).",
"Maximum number of contacts to return.": "Maximale Anzahl der zurückzugebenden Kontakte.",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "Front query string (z.B. subject:\"Bestellung\", tag_ids:tag_123, inbox_id:inb_456, etc.). Siehe https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "Maximale Anzahl der zurückzugebenden Unterhaltungen.",
"The handle to remove.": "Der Handle zu entfernen.",
"The type of the handle to remove.": "Der Typ des zu entfernenden Handels.",
"If true, the entire contact will be deleted if this is their last handle.": "Falls aktiviert, wird der gesamte Kontakt gelöscht, wenn dies ihr letzter Kontakt ist.",
"List of external URLs to remove from the conversation.": "Liste der externen URLs, die aus der Unterhaltung entfernt werden sollen.",
"The subject of the message.": "Der Gegenstand der Nachricht.",
"The body of the message.": "Der Inhalt der Nachricht.",
"The content of the reply message.": "Der Inhalt der Antwort-Nachricht.",
"The subject of the reply (for email channels).": "Der Betreff der Antwort (für E-Mail-Kanäle).",
"Select the account": "Wählen Sie das Konto",
"The new name for the account.": "Der neue Name für das Konto.",
"The new description for the account.": "Die neue Beschreibung für das Konto.",
"Custom fields to add or update. Existing fields will be preserved.": "Benutzerdefinierte Felder, die hinzugefügt oder aktualisiert werden sollen. Vorhandene Felder werden beibehalten.",
"The new name for the contact.": "Der neue Name für den Kontakt.",
"A new description for the contact.": "Eine neue Beschreibung für den Kontakt.",
"The new status for the conversation.": "Der neue Status für die Unterhaltung.",
"Select the inbox": "Posteingang auswählen",
"Select the link": "Link auswählen",
"The new name for the link.": "Der neue Name für den Link.",
"The new external URL for the link.": "Die neue externe URL für den Link.",
"Twitter": "Twitter",
"Facebook": "Facebook",
"Intercom": "Intercom",
"front_chat": "front_chat",
"custom": "benutzerdefiniert",
"Private": "Privat",
"Shared": "Geteilt",
"Created At": "Erstellt am",
"Updated At": "Aktualisiert am",
"Ascending": "Aufsteigend",
"Descending": "Absteigend",
"Front Chat": "Front-Chat",
"Custom": "Eigene",
"Open": "Öffnen",
"Archived": "Archiviert",
"Deleted": "Gelöscht",
"New Comment": "Neuer Kommentar",
"New Inbound Message": "Neue eingehende Nachricht",
"New Outbound Message": "Neue ausgehende Nachricht",
"New Tag Added to Message": "Neuer Tag zur Nachricht hinzugefügt",
"New Conversation State Change": "Neue Konversationsstatus ändern",
"Fires when a new comment is posted on a conversation in Front.": "Feuert ab, wenn ein neuer Kommentar auf eine Unterhaltung in Front veröffentlicht wird.",
"Fires when a new message is received in a shared inbox.": "Feuert ab, wenn eine neue Nachricht in einem gemeinsamen Posteingang empfangen wird.",
"Fires when a message is sent or replied to in Front.": "Feuert ab, wenn eine Nachricht in der Front gesendet oder beantwortet wird.",
"Fires when a tag is applied to a conversation.": "Feuert ab, wenn ein Tag auf eine Unterhaltung angewendet wird.",
"Triggers when a conversation changes to a specified state.": "Wird ausgelöst, wenn eine Unterhaltung in einen bestimmten Zustand wechselt.",
"Desired State": "Gewünschter Status",
"The ID of the inbox to monitor for new inbound messages.": "Die ID des Posteingangs, der auf neue eingehende Nachrichten überwacht werden soll.",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "Der zu startende Status (z.B. offen, archiviert, gelöscht, zugewiesen, etc.).",
"Assigned": "Zugewiesen",
"Unassigned": "Nicht zugeordnet"
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "Tu token de Front API. Puedes crear uno desde tu Front Settings bajo \"Developopers\". Asegúrate de que el token tiene los alcances necesarios.",
"Add Comment": "Añadir comentario",
"Add Contact Handle": "Añadir Manejo de Contacto",
"Add Conversation Links": "Añadir enlaces de conversación",
"Add Conversation Tags": "Añadir etiquetas de conversación",
"Assign/Unassign Conversation": "Asignar/Desasignar conversación",
"Create Account": "Crear cuenta",
"Create Contact": "Crear contacto",
"Create Draft": "Crear borrador",
"Create Draft Reply": "Crear respuesta borrador",
"Create Link": "Crear enlace",
"Find Account": "Buscar cuenta",
"Find Contact": "Encontrar contacto",
"Find Conversation": "Encontrar conversación",
"Remove Contact Handle": "Remover Manejo de Contacto",
"Remove Conversation Links": "Eliminar enlaces de conversación",
"Send Message": "Enviar mensaje",
"Send Reply": "Enviar respuesta",
"Update Account": "Actualizar cuenta",
"Update Contact": "Actualizar contacto",
"Update Conversation": "Actualizar conversación",
"Update Link": "Actualizar enlace",
"Add a comment (internal note) to a conversation in Front.": "Añade un comentario (nota interna) a una conversación en el frente.",
"Add a handle (email, phone number, etc.) to an existing Contact.": "Añadir un nombre de usuario (correo electrónico, número de teléfono, etc.) a un contacto existente.",
"Link external references (URLs) to a conversation.": "Enlazar referencias externas (URLs) a una conversación.",
"Add one or more tags to a conversation.": "Añadir una o más etiquetas a una conversación.",
"Assign a conversation to a teammate or remove assignment.": "Asignar una conversación a un compañero o eliminar la asignación.",
"Create a new account in Front.": "Crear una nueva cuenta en el Front.",
"Create a new contact in Front.": "Crear un nuevo contacto en el frente.",
"Create a draft message in Front.": "Crear un borrador de mensaje en el frente.",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "Crear un borrador de respuesta a una conversación existente (tema/cita, etc.) sin enviar inmediatamente.",
"Create a Link in Front (name, external URL).": "Crear un enlace en la parte frontal (nombre, URL externa).",
"List company accounts and optionally filter by email domain or external ID.": "Listar las cuentas de la empresa y opcionalmente filtrar por dominio de correo electrónico o ID externa.",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "Busque un contacto por correo electrónico (email, teléfono, etc.) u otro campo de identificación.",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "Encuentra una conversación por filtros de búsqueda como tema, participantes, etiquetas, bandeja de entrada, etc.",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "Eliminar un identificador (correo electrónico, número de teléfono, etc.) de un contacto existente.",
"Remove external links from a conversation in Front.": "Elimina enlaces externos de una conversación en el Front.",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "Enviar un nuevo mensaje (inicia una conversación) con temas, destinatarios, cuerpo, adjuntos, etiquetas, etc.",
"Send a reply to a conversation in Front.": "Enviar una respuesta a una conversación en el frente.",
"Update an existing account in Front.": "Actualizar una cuenta existente en el Front.",
"Update an existing contact in Front.": "Actualizar un contacto existente en el Front.",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "Modificar propiedades de conversación: estado, asignado, entrada, etiquetas, etc.",
"Update the name or external URL of a Link in Front.": "Actualizar el nombre o la URL externa de un Enlace en el Front.",
"Conversation ID": "ID de conversación",
"Teammate ID": "ID de compañero",
"Comment Body": "Comentar cuerpo",
"Contact ID": "ID de contacto",
"Handle Type": "Tipo de Manejo",
"Handle Value": "Valor del Manejo",
"Link IDs": "Link IDs",
"Tag IDs": "ID de etiqueta",
"Account Name": "Nombre de cuenta",
"Description": "Descripción",
"Domains": "Dominios",
"External ID": "ID Externo",
"Custom Fields": "Campos personalizados",
"Name": "Nombre",
"Handles": "Handles",
"Avatar URL": "URL del avatar",
"Links": "Enlaces",
"Group Names": "Nombres de grupo",
"Contact Lists": "Listas de contactos",
"Channel ID": "ID del canal",
"To": "A",
"CC": "CC",
"BCC": "CCO",
"Subject": "Asunto",
"Body": "Cuerpo",
"Attachments": "Adjuntos",
"Mode": "Modo",
"Signature ID": "Firma ID",
"Add Default Signature": "Añadir firma predeterminada",
"Message Body": "Cuerpo",
"External URL": "URL externa",
"Pattern": "Patrón",
"Email Domain": "Dominio de Email",
"Limit": "Límite",
"Page Token": "Ficha de página",
"Sort By": "Ordenar por",
"Sort Order": "Ordenar",
"Email": "E-mail",
"Phone": "Teléfono",
"Custom Query": "Consulta personalizada",
"Query": "Consulta",
"Handle": "Manejo",
"Source": "Fuente",
"Delete Contact if Last Handle": "Eliminar Contacto si el último Manejo",
"Account ID": "ID de cuenta",
"Status": "Estado",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "Seleccione la conversación",
"Select the teammate": "Seleccione el compañero",
"The content of the comment.": "El contenido del comentario.",
"Select the contact": "Seleccione el contacto",
"Type of handle to add.": "Tipo de asa a añadir.",
"The value of the handle (e.g., email address, phone number).": "El valor del identificador (por ejemplo, dirección de correo electrónico, número de teléfono).",
"Select one or more links": "Seleccione uno o más enlaces",
"Select one or more tags": "Seleccione una o más etiquetas",
"The name of the account to create.": "El nombre de la cuenta a crear.",
"A description for the account.": "Una descripción para la cuenta.",
"List of domains associated with the account.": "Lista de dominios asociados con la cuenta.",
"An external identifier for the account.": "Un identificador externo para la cuenta.",
"Custom fields for this account, as a JSON object.": "Campos personalizados para esta cuenta, como objeto JSON.",
"The name of the contact.": "El nombre del contacto.",
"A description for the contact.": "Una descripción para el contacto.",
"List of contact handles (e.g., email, phone).": "Lista de manejadores de contactos (por ejemplo, correo electrónico, teléfono).",
"URL of the contacts avatar image.": "URL de la imagen del avatar del contacto.",
"List of URLs associated with the contact.": "Lista de URLs asociadas al contacto.",
"List of group names to associate with the contact.": "Lista de nombres de grupo a asociar con el contacto.",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "Lista de nombres de lista de contactos a los que pertenece este contacto. Front creará cualquier que no existe.",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "Campos personalizados para este contacto, como un objeto JSON (por ejemplo, {\"CRM ID\": \"12345\"}).",
"Select the channel": "Seleccione el canal",
"List of recipient handles (email addresses, etc.).": "Lista de handles del destinatario (direcciones de correo electrónico, etc.).",
"List of CC recipient handles.": "Lista del destinatario de CC maneja.",
"List of BCC recipient handles.": "Lista del destinatario de BCC.",
"The subject of the draft.": "El tema del borrador.",
"The body of the draft message.": "El cuerpo del mensaje del borrador.",
"List of attachment URLs.": "Lista de URLs adjuntas.",
"Mode of the draft reply": "Modo del borrador de respuesta",
"The ID of the signature to use for the draft reply (if applicable).": "El ID de la firma a utilizar para el borrador de respuesta (si corresponde).",
"Whether to append the default signature to the draft reply (if applicable).": "Si añadir la firma por defecto al borrador de respuesta (si corresponde).",
"The content of the draft reply.": "El contenido del proyecto responde.",
"The subject of the draft reply (for email channels).": "El asunto del borrador de respuesta (para los canales de correo electrónico).",
"The name of the link.": "El nombre del enlace.",
"The external URL for the link.": "La URL externa para el enlace.",
"Optional pattern to match URLs (regex).": "Patrón opcional para que coincida con URLs (regex).",
"Filter accounts by email domain ": "Filtrar cuentas por dominio de correo ",
"Filter accounts by external ID": "Filtrar cuentas por ID externa",
"Maximum number of accounts to return (max 100).": "Número máximo de cuentas a devolver (máximo 100).",
"Token for pagination.": "Token para la paginación.",
"Field used to sort the accounts.": "Campo usado para ordenar las cuentas.",
"Order by which results should be sorted.": "Orden por el que deben ordenarse los resultados.",
"Email address to search for.": "Dirección de correo a buscar.",
"Phone number to search for.": "Número de teléfono para buscar.",
"Custom Front query string (advanced).": "Cadena de consulta frontal personalizada (avanzada).",
"Maximum number of contacts to return.": "Número máximo de contactos a regresar.",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "Cadena de consulta frontal (por ejemplo: subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). Vea https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "Número máximo de conversaciones a regresar.",
"The handle to remove.": "El asa a eliminar.",
"The type of the handle to remove.": "El tipo de asa a eliminar.",
"If true, the entire contact will be deleted if this is their last handle.": "Si es verdadero, todo el contacto será borrado si este es su último manejador.",
"List of external URLs to remove from the conversation.": "Lista de URLs externas a eliminar de la conversación.",
"The subject of the message.": "El tema del mensaje.",
"The body of the message.": "El cuerpo del mensaje.",
"The content of the reply message.": "El contenido del mensaje de respuesta.",
"The subject of the reply (for email channels).": "El asunto de la respuesta (para los canales de correo electrónico).",
"Select the account": "Seleccione la cuenta",
"The new name for the account.": "El nuevo nombre para la cuenta.",
"The new description for the account.": "La nueva descripción para la cuenta.",
"Custom fields to add or update. Existing fields will be preserved.": "Campos personalizados para añadir o actualizar. Los campos existentes se conservarán.",
"The new name for the contact.": "El nuevo nombre para el contacto.",
"A new description for the contact.": "Una nueva descripción para el contacto.",
"The new status for the conversation.": "El nuevo estado de la conversación.",
"Select the inbox": "Seleccione la bandeja de entrada",
"Select the link": "Seleccione el enlace",
"The new name for the link.": "El nuevo nombre para el enlace.",
"The new external URL for the link.": "La nueva URL externa para el enlace.",
"Twitter": "Twitter",
"Facebook": "Facebook",
"Intercom": "Intercom",
"front_chat": "charla_frontal",
"custom": "costumbre",
"Private": "Privado",
"Shared": "Compartido",
"Created At": "Creado el",
"Updated At": "Actualizado el",
"Ascending": "Ascendiente",
"Descending": "Descendiente",
"Front Chat": "Chat frontal",
"Custom": "Personalizado",
"Open": "Abrir",
"Archived": "Archivado",
"Deleted": "Eliminado",
"New Comment": "Nuevo comentario",
"New Inbound Message": "Nuevo mensaje entrante",
"New Outbound Message": "Nuevo mensaje saliente",
"New Tag Added to Message": "Nueva etiqueta añadida al mensaje",
"New Conversation State Change": "Nuevo cambio de estado de conversación",
"Fires when a new comment is posted on a conversation in Front.": "Dispara cuando se publica un nuevo comentario en una conversación en el frente.",
"Fires when a new message is received in a shared inbox.": "Dispara cuando un nuevo mensaje es recibido en una bandeja de entrada compartida.",
"Fires when a message is sent or replied to in Front.": "Dispara cuando un mensaje es enviado o contestado en el frente.",
"Fires when a tag is applied to a conversation.": "Dispara cuando se aplica una etiqueta a una conversación.",
"Triggers when a conversation changes to a specified state.": "Dispara cuando una conversación cambia a un estado especificado.",
"Desired State": "Estado deseado",
"The ID of the inbox to monitor for new inbound messages.": "El ID de la bandeja de entrada para monitorizar nuevos mensajes entrantes.",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "El estado en el que se activará (por ejemplo, abierto, archivado, eliminado, asignado, etc.).",
"Assigned": "Asignado",
"Unassigned": "Sin asignar"
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "Votre jeton de l'API frontale. Vous pouvez en créer un à partir de vos paramètres frontaux sous \"Développeurs\". Assurez-vous que le jeton a les portées nécessaires.",
"Add Comment": "Ajouter un commentaire",
"Add Contact Handle": "Ajouter un identifiant de contact",
"Add Conversation Links": "Ajouter des liens de conversation",
"Add Conversation Tags": "Ajouter des mots clés de conversation",
"Assign/Unassign Conversation": "Affecter/Annuler la conversation",
"Create Account": "Créer un compte",
"Create Contact": "Créer un contact",
"Create Draft": "Créer un brouillon",
"Create Draft Reply": "Créer un brouillon de réponse",
"Create Link": "Créer un lien",
"Find Account": "Trouver un compte",
"Find Contact": "Trouver un contact",
"Find Conversation": "Trouver une conversation",
"Remove Contact Handle": "Supprimer le gestionnaire de contact",
"Remove Conversation Links": "Supprimer les liens de conversation",
"Send Message": "Envoyer un message",
"Send Reply": "Envoyer la réponse",
"Update Account": "Mettre à jour le compte",
"Update Contact": "Mettre à jour le contact",
"Update Conversation": "Mettre à jour la conversation",
"Update Link": "Lien de mise à jour",
"Add a comment (internal note) to a conversation in Front.": "Ajouter un commentaire (note interne) à une conversation au Front.",
"Add a handle (email, phone number, etc.) to an existing Contact.": "Ajouter un identifiant (e-mail, numéro de téléphone, etc.) à un contact existant.",
"Link external references (URLs) to a conversation.": "Lier des références externes (URLs) à une conversation.",
"Add one or more tags to a conversation.": "Ajouter un ou plusieurs tags à une conversation.",
"Assign a conversation to a teammate or remove assignment.": "Assigner une conversation à un coéquipier ou supprimer l'affectation.",
"Create a new account in Front.": "Créer un nouveau compte Front.",
"Create a new contact in Front.": "Créer un nouveau contact au front.",
"Create a draft message in Front.": "Créer un brouillon de message au Front.",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "Créer une ébauche de réponse à une conversation existante (sujet/devis, etc.) sans envoyer immédiatement.",
"Create a Link in Front (name, external URL).": "Créer un lien au premier plan (nom, URL externe).",
"List company accounts and optionally filter by email domain or external ID.": "Lister les comptes de la société et éventuellement filtrer par domaine de messagerie ou ID externe.",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "Recherchez un contact par adresse (courriel, téléphone, etc.) ou par autre champ didentification.",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "Trouver une conversation par des filtres de recherche tels que le sujet, les participants, les tags, la boîte de réception, etc.",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "Supprimer un identifiant (e-mail, numéro de téléphone, etc.) d'un contact existant.",
"Remove external links from a conversation in Front.": "Supprimer les liens externes d'une conversation en front.",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "Envoyer un nouveau message (commence une conversation) avec le sujet, les destinataires, le corps, les pièces jointes, les tags, etc.",
"Send a reply to a conversation in Front.": "Envoyer une réponse à une conversation en front.",
"Update an existing account in Front.": "Mettre à jour un compte existant dans le front.",
"Update an existing contact in Front.": "Mettre à jour un contact existant au front.",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "Modifier les propriétés de la conversation : statut, cessionnaire, boîte de réception, tags, etc.",
"Update the name or external URL of a Link in Front.": "Mettre à jour le nom ou l'URL externe d'un lien dans le Front.",
"Conversation ID": "ID de la conversation",
"Teammate ID": "ID de coéquipier",
"Comment Body": "Corps du commentaire",
"Contact ID": "ID du contact",
"Handle Type": "Type de poignée",
"Handle Value": "Gérer la valeur",
"Link IDs": "Link IDs",
"Tag IDs": "ID du tag",
"Account Name": "Nom du compte",
"Description": "Libellé",
"Domains": "Domaines",
"External ID": "ID externe",
"Custom Fields": "Champs personnalisés",
"Name": "Nom",
"Handles": "Handles",
"Avatar URL": "URL de l'avatar",
"Links": "Liens",
"Group Names": "Noms des groupes",
"Contact Lists": "Carnets d'adresses",
"Channel ID": "ID du canal",
"To": "À",
"CC": "CC",
"BCC": "Cci",
"Subject": "Sujet",
"Body": "Body",
"Attachments": "Pièces jointes",
"Mode": "Mode",
"Signature ID": "ID de la signature",
"Add Default Signature": "Ajouter une signature par défaut",
"Message Body": "Corps du message",
"External URL": "URL externe",
"Pattern": "Schéma",
"Email Domain": "Domaine des E-mails",
"Limit": "Limite",
"Page Token": "Jeton de la page",
"Sort By": "Trier par",
"Sort Order": "Ordre de tri",
"Email": "Courriel",
"Phone": "Téléphone",
"Custom Query": "Requête personnalisée",
"Query": "Requête",
"Handle": "Poignée",
"Source": "Source",
"Delete Contact if Last Handle": "Supprimer le contact si dernier identifiant",
"Account ID": "ID du compte client",
"Status": "Statut",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "Sélectionnez la conversation",
"Select the teammate": "Sélectionnez le coéquipier",
"The content of the comment.": "Le contenu du commentaire.",
"Select the contact": "Sélectionnez le contact",
"Type of handle to add.": "Type de handle à ajouter.",
"The value of the handle (e.g., email address, phone number).": "La valeur de l'identifiant (par exemple, adresse e-mail, numéro de téléphone).",
"Select one or more links": "Sélectionnez un ou plusieurs liens",
"Select one or more tags": "Sélectionnez un ou plusieurs tags",
"The name of the account to create.": "Le nom du compte à créer.",
"A description for the account.": "Une description pour le compte.",
"List of domains associated with the account.": "Liste des domaines associés au compte.",
"An external identifier for the account.": "Un identifiant externe pour le compte.",
"Custom fields for this account, as a JSON object.": "Champs personnalisés pour ce compte, en tant qu'objet JSON.",
"The name of the contact.": "Le nom du contact.",
"A description for the contact.": "Une description pour le contact.",
"List of contact handles (e.g., email, phone).": "Liste des contacts (courriel, téléphone).",
"URL of the contacts avatar image.": "URL de l'image d'avatar du contact.",
"List of URLs associated with the contact.": "Liste des URLs associées au contact.",
"List of group names to associate with the contact.": "Liste des noms de groupes à associer avec le contact.",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "Liste des noms de la liste de contacts auxquels appartient ce contact. Le front va créer ceux qui n'existent pas.",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "Champs personnalisés pour ce contact, en tant qu'objet JSON (par exemple, {\"CRM ID\": \"12345\"}).",
"Select the channel": "Sélectionnez le canal",
"List of recipient handles (email addresses, etc.).": "Liste des destinataires (adresses e-mail, etc.).",
"List of CC recipient handles.": "Liste des gestionnaires de destinataires CC.",
"List of BCC recipient handles.": "Liste des gestionnaires de destinataires BCC.",
"The subject of the draft.": "Le sujet du projet.",
"The body of the draft message.": "Le corps du message brouillon.",
"List of attachment URLs.": "Liste des URL des pièces jointes.",
"Mode of the draft reply": "Mode de la réponse du brouillon",
"The ID of the signature to use for the draft reply (if applicable).": "L'ID de la signature à utiliser pour le brouillon de réponse (le cas échéant).",
"Whether to append the default signature to the draft reply (if applicable).": "S'il faut ajouter la signature par défaut à la réponse brouillon (le cas échéant).",
"The content of the draft reply.": "Le contenu du projet de réponse.",
"The subject of the draft reply (for email channels).": "Le sujet de la réponse du brouillon (pour les canaux de messagerie).",
"The name of the link.": "Le nom du lien.",
"The external URL for the link.": "L'URL externe du lien.",
"Optional pattern to match URLs (regex).": "Modèle optionnel pour faire correspondre les URLs (regex).",
"Filter accounts by email domain ": "Filtrer les comptes par domaine de messagerie ",
"Filter accounts by external ID": "Filtrer les comptes par ID externe",
"Maximum number of accounts to return (max 100).": "Nombre maximum de comptes à retourner (max 100).",
"Token for pagination.": "Jeton pour la pagination.",
"Field used to sort the accounts.": "Champ utilisé pour trier les comptes.",
"Order by which results should be sorted.": "Ordre par lequel les résultats doivent être triés.",
"Email address to search for.": "Adresse e-mail à rechercher.",
"Phone number to search for.": "Numéro de téléphone à rechercher.",
"Custom Front query string (advanced).": "Chaîne de requête frontale personnalisée (avancée).",
"Maximum number of contacts to return.": "Nombre maximum de contacts à renvoyer.",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "Chaîne de requête frontale (ex. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). Voir https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "Nombre maximum de conversations à renvoyer.",
"The handle to remove.": "La poignée à supprimer.",
"The type of the handle to remove.": "Le type de la poignée à supprimer.",
"If true, the entire contact will be deleted if this is their last handle.": "Si vrai, l'ensemble du contact sera supprimé si c'est leur dernier identifiant.",
"List of external URLs to remove from the conversation.": "Liste des URL externes à supprimer de la conversation.",
"The subject of the message.": "Le sujet du message.",
"The body of the message.": "Le corps du message.",
"The content of the reply message.": "Le contenu du message de réponse.",
"The subject of the reply (for email channels).": "Le sujet de la réponse (pour les canaux de messagerie).",
"Select the account": "Sélectionnez le compte",
"The new name for the account.": "Le nouveau nom pour le compte.",
"The new description for the account.": "La nouvelle description du compte.",
"Custom fields to add or update. Existing fields will be preserved.": "Champs personnalisés à ajouter ou à mettre à jour. Les champs existants seront préservés.",
"The new name for the contact.": "Le nouveau nom pour le contact.",
"A new description for the contact.": "Une nouvelle description pour le contact.",
"The new status for the conversation.": "Le nouveau statut de la conversation.",
"Select the inbox": "Sélectionnez la boîte de réception",
"Select the link": "Sélectionnez le lien",
"The new name for the link.": "Le nouveau nom du lien.",
"The new external URL for the link.": "La nouvelle URL externe pour le lien.",
"Twitter": "Twitter",
"Facebook": "Facebook",
"Intercom": "Intercom",
"front_chat": "chat frontal",
"custom": "personnalisé",
"Private": "Privé",
"Shared": "Partagé",
"Created At": "Créé le",
"Updated At": "Mis à jour le",
"Ascending": "Ascendant",
"Descending": "Descendant",
"Front Chat": "Chat frontal",
"Custom": "Personnalisé",
"Open": "Ouvert",
"Archived": "Archivé",
"Deleted": "Supprimé",
"New Comment": "Nouveau commentaire",
"New Inbound Message": "Nouveau message entrant",
"New Outbound Message": "Nouveau message sortant",
"New Tag Added to Message": "Nouveau tag ajouté au message",
"New Conversation State Change": "Nouveau changement d'état de la conversation",
"Fires when a new comment is posted on a conversation in Front.": "Se déclenche lorsqu'un nouveau commentaire est posté sur une conversation en front.",
"Fires when a new message is received in a shared inbox.": "Déclenche lorsqu'un nouveau message est reçu dans une boîte de réception partagée.",
"Fires when a message is sent or replied to in Front.": "Se déclenche lorsqu'un message est envoyé ou répondu au front.",
"Fires when a tag is applied to a conversation.": "Tire quand un tag est appliqué à une conversation.",
"Triggers when a conversation changes to a specified state.": "Déclenche lorsqu'une conversation passe à un état spécifié.",
"Desired State": "État désiré",
"The ID of the inbox to monitor for new inbound messages.": "L'ID de la boîte de réception à surveiller pour les nouveaux messages entrants.",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "L'état sur lequel se déclencher (par exemple, ouvert, archivé, supprimé, assigné, etc.).",
"Assigned": "Assigné",
"Unassigned": "Non assigné"
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "フロントAPIトークン 「開発者」のフロント設定から、フロントAPIトークンを作成できます。トークンに必要なスコープがあることを確認してください。",
"Add Comment": "コメントを追加",
"Add Contact Handle": "連絡先ハンドルを追加",
"Add Conversation Links": "会話リンクを追加",
"Add Conversation Tags": "会話タグを追加",
"Assign/Unassign Conversation": "会話の割り当て/解除",
"Create Account": "アカウントを作成",
"Create Contact": "連絡先を作成",
"Create Draft": "下書きを作成",
"Create Draft Reply": "ドラフトの返信を作成",
"Create Link": "リンクを作成",
"Find Account": "アカウントを検索",
"Find Contact": "連絡先を探す",
"Find Conversation": "会話を検索",
"Remove Contact Handle": "連絡先ハンドルを削除",
"Remove Conversation Links": "会話リンクを削除",
"Send Message": "メッセージを送信",
"Send Reply": "返信を送信",
"Update Account": "アカウントを更新",
"Update Contact": "連絡先を更新",
"Update Conversation": "会話を更新",
"Update Link": "リンクを更新",
"Add a comment (internal note) to a conversation in Front.": "フロントで会話にコメント(内部メモ)を追加します。",
"Add a handle (email, phone number, etc.) to an existing Contact.": "既存の取引先責任者(メール、電話番号など)に取引先責任者を追加します。",
"Link external references (URLs) to a conversation.": "外部参照(URL)を会話にリンクします。",
"Add one or more tags to a conversation.": "1 つ以上のタグを会話に追加します。",
"Assign a conversation to a teammate or remove assignment.": "会話をチームメイトに割り当てるか、課題を削除します。",
"Create a new account in Front.": "フロントで新しいアカウントを作成します。",
"Create a new contact in Front.": "フロントで新しい連絡先を作成します。",
"Create a draft message in Front.": "フロントで下書きメッセージを作成します。",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "すぐに送信せずに、既存の会話(件名/見積もりなど)へのドラフト返信を作成します。",
"Create a Link in Front (name, external URL).": "フロントにリンク(名前、外部 URL )を作成します。",
"List company accounts and optionally filter by email domain or external ID.": "会社アカウントを一覧表示し、必要に応じてメールドメインまたは外部 ID でフィルタリングします。",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "担当者(メール、電話など)やその他の識別フィールドで連絡先を検索します。",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "件名、参加者、タグ、受信トレイなどの検索フィルタで会話を検索します。",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "既存の連絡先からハンドル(メール、電話番号など)を削除します。",
"Remove external links from a conversation in Front.": "フロントの会話から外部リンクを削除します。",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "件名、受信者、本文、添付ファイル、タグなどの新しいメッセージを送信します。",
"Send a reply to a conversation in Front.": "フロントで会話に返信を送信します。",
"Update an existing account in Front.": "フロントで既存のアカウントを更新します。",
"Update an existing contact in Front.": "フロントで既存の連絡先を更新します。",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "会話プロパティの変更:ステータス、担当者、受信トレイ、タグなど。",
"Update the name or external URL of a Link in Front.": "フロントでリンクの名前または外部URLを更新します。",
"Conversation ID": "会話ID",
"Teammate ID": "チームメイトID",
"Comment Body": "コメント本文",
"Contact ID": "連絡先ID",
"Handle Type": "ハンドルの種類",
"Handle Value": "ハンドル値",
"Link IDs": "Link IDs",
"Tag IDs": "タグID",
"Account Name": "口座名",
"Description": "説明",
"Domains": "ドメイン",
"External ID": "外部 ID",
"Custom Fields": "カスタムフィールド",
"Name": "Name",
"Handles": "Handles",
"Avatar URL": "アバター URL",
"Links": "リンク",
"Group Names": "グループ名",
"Contact Lists": "連絡先リスト",
"Channel ID": "チャンネル ID",
"To": "終了日",
"CC": "CC",
"BCC": "BCC",
"Subject": "件名",
"Body": "本文",
"Attachments": "添付ファイル",
"Mode": "モード",
"Signature ID": "署名 ID",
"Add Default Signature": "デフォルトの署名を追加",
"Message Body": "メッセージ本文",
"External URL": "外部 URL",
"Pattern": "パターン",
"Email Domain": "メールドメイン",
"Limit": "制限",
"Page Token": "ページ トークン",
"Sort By": "並び替え",
"Sort Order": "並び順",
"Email": "Eメールアドレス",
"Phone": "電話番号",
"Custom Query": "カスタムクエリ",
"Query": "クエリ",
"Handle": "取扱先",
"Source": "ソース",
"Delete Contact if Last Handle": "最後に処理した場合に連絡先を削除",
"Account ID": "アカウントID",
"Status": "Status",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "会話を選択",
"Select the teammate": "チームメイトを選択",
"The content of the comment.": "コメントの内容.",
"Select the contact": "連絡先を選択",
"Type of handle to add.": "追加するハンドルのタイプ。",
"The value of the handle (e.g., email address, phone number).": "ハンドルの値 (例: 電子メールアドレス、電話番号)。",
"Select one or more links": "1つ以上のリンクを選択してください",
"Select one or more tags": "1つ以上のタグを選択してください",
"The name of the account to create.": "作成するアカウントの名前",
"A description for the account.": "アカウントの説明",
"List of domains associated with the account.": "アカウントに関連付けられているドメインのリストです。",
"An external identifier for the account.": "口座の外部識別子。",
"Custom fields for this account, as a JSON object.": "このアカウントのカスタムフィールドを JSON オブジェクトとして使用します。",
"The name of the contact.": "連絡先の名前",
"A description for the contact.": "連絡先の説明",
"List of contact handles (e.g., email, phone).": "連絡先ハンドルの一覧(例:電子メール、電話)。",
"URL of the contacts avatar image.": "連絡先のアバター画像のURL。",
"List of URLs associated with the contact.": "連絡先に関連付けられているURLの一覧",
"List of group names to associate with the contact.": "連絡先に関連付けるグループ名の一覧です。",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "この連絡先が属する連絡先リストの一覧です。Front は存在しない連絡先を作成します。",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "この連絡先のカスタムフィールドは、JSON オブジェクトとして使用されます (例: {\"CRM ID\": \"12345\"})。",
"Select the channel": "チャンネルを選択",
"List of recipient handles (email addresses, etc.).": "受信者のハンドルのリスト (メールアドレスなど)。",
"List of CC recipient handles.": "CC受信者ハンドルの一覧です。",
"List of BCC recipient handles.": "BCC受信者ハンドルのリスト。",
"The subject of the draft.": "草案の件名。",
"The body of the draft message.": "下書きメッセージの本文。",
"List of attachment URLs.": "添付ファイル URL の一覧です。",
"Mode of the draft reply": "下書き返信のモード",
"The ID of the signature to use for the draft reply (if applicable).": "ドラフト返信に使用する署名の ID (該当する場合)。",
"Whether to append the default signature to the draft reply (if applicable).": "デフォルトの署名をドラフト返信に追加するかどうか(該当する場合)。",
"The content of the draft reply.": "下書き返信の内容。",
"The subject of the draft reply (for email channels).": "下書き返信の件名 (Eメールチャンネル用)",
"The name of the link.": "リンクの名前",
"The external URL for the link.": "リンクの外部 URL",
"Optional pattern to match URLs (regex).": "URLに一致するオプションのパターン正規表現。",
"Filter accounts by email domain ": "メールドメインでアカウントをフィルター ",
"Filter accounts by external ID": "外部 ID でアカウントをフィルター",
"Maximum number of accounts to return (max 100).": "返品するアカウントの最大数最大100",
"Token for pagination.": "ページネーション用のトークン",
"Field used to sort the accounts.": "口座の並べ替えに使用される項目。",
"Order by which results should be sorted.": "結果を並べ替える順序です。",
"Email address to search for.": "検索するメールアドレス。",
"Phone number to search for.": "検索する電話番号",
"Custom Front query string (advanced).": "カスタムフロントクエリ文字列(高度)",
"Maximum number of contacts to return.": "返す連絡先の最大数。",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "フロントクエリ文字列 (例: subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.)。https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "返信する会話の最大数。",
"The handle to remove.": "削除するハンドル。",
"The type of the handle to remove.": "削除するハンドルのタイプ。",
"If true, the entire contact will be deleted if this is their last handle.": "true の場合、これが最後のハンドルの場合、連絡先全体が削除されます。",
"List of external URLs to remove from the conversation.": "会話から削除する外部 URL のリストです。",
"The subject of the message.": "メッセージの件名。",
"The body of the message.": "メッセージの本文",
"The content of the reply message.": "返信メッセージの内容。",
"The subject of the reply (for email channels).": "返信の件名 (Eメールチャンネル用)",
"Select the account": "アカウントを選択",
"The new name for the account.": "アカウントの新しい名前。",
"The new description for the account.": "アカウントの新しい説明。",
"Custom fields to add or update. Existing fields will be preserved.": "カスタムフィールドを追加または更新します。既存のフィールドは保存されます。",
"The new name for the contact.": "連絡先の新しい名前。",
"A new description for the contact.": "連絡先の新しい説明。",
"The new status for the conversation.": "会話の新しいステータス。",
"Select the inbox": "受信トレイを選択",
"Select the link": "リンクを選択してください",
"The new name for the link.": "リンクの新しい名前。",
"The new external URL for the link.": "リンクの新しい外部 URL",
"Twitter": "Twitter",
"Facebook": "Facebook",
"Intercom": "インターホン(Intercom)",
"front_chat": "front_chat",
"custom": "カスタム",
"Private": "非公開",
"Shared": "共有",
"Created At": "作成日時",
"Updated At": "更新日時",
"Ascending": "昇順",
"Descending": "降順",
"Front Chat": "フロントチャット",
"Custom": "カスタム",
"Open": "開く",
"Archived": "アーカイブ済み",
"Deleted": "削除しました",
"New Comment": "新しいコメント",
"New Inbound Message": "新しい受信メッセージ",
"New Outbound Message": "新しい送信メッセージ",
"New Tag Added to Message": "新しいタグがメッセージに追加されました",
"New Conversation State Change": "新しい会話の状態変更",
"Fires when a new comment is posted on a conversation in Front.": "Frontで新しいコメントが投稿されたときに発行されます。",
"Fires when a new message is received in a shared inbox.": "共有の受信トレイに新しいメッセージが受信されたときに発生します。",
"Fires when a message is sent or replied to in Front.": "メッセージが送信またはフロントで返信されたときに発生します。",
"Fires when a tag is applied to a conversation.": "タグが会話に適用されたときに発生します。",
"Triggers when a conversation changes to a specified state.": "会話が指定された状態に変化したときにトリガーします。",
"Desired State": "希望の状態",
"The ID of the inbox to monitor for new inbound messages.": "新しい受信メッセージを監視する受信トレイのID。",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "起動する状態 (例: open, archived, deleted, assigned, etc.)",
"Assigned": "割り当て",
"Unassigned": "未割り当て"
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "Uw Front API token. U kunt er een maken onder \"Ontwikkelaars\". Zorg ervoor dat de token de nodige reikwijdte heeft.",
"Add Comment": "Opmerking toevoegen",
"Add Contact Handle": "Contacthandeling toevoegen",
"Add Conversation Links": "Conversatielink toevoegen",
"Add Conversation Tags": "Voeg conversatielabel toe",
"Assign/Unassign Conversation": "Conversatie toewijzen/ongedaan maken",
"Create Account": "Account Aanmaken",
"Create Contact": "Contactpersoon aanmaken",
"Create Draft": "Concept maken",
"Create Draft Reply": "Maak concept antwoord",
"Create Link": "Koppeling aanmaken",
"Find Account": "Account zoeken",
"Find Contact": "Contactpersoon zoeken",
"Find Conversation": "Gesprek zoeken",
"Remove Contact Handle": "Contact Handel verwijderen",
"Remove Conversation Links": "Verwijder conversatielinks",
"Send Message": "Verstuur bericht",
"Send Reply": "Stuur antwoord",
"Update Account": "Account bijwerken",
"Update Contact": "Contactpersoon bijwerken",
"Update Conversation": "Gesprek bijwerken",
"Update Link": "Koppeling bijwerken",
"Add a comment (internal note) to a conversation in Front.": "Voeg een opmerking (interne notitie) toe aan een gesprek aan de voorkant.",
"Add a handle (email, phone number, etc.) to an existing Contact.": "Voeg een handvat toe (e-mail, telefoonnummer, etc.) aan een bestaande contact.",
"Link external references (URLs) to a conversation.": "Link externe verwijzingen (URL's) naar een gesprek.",
"Add one or more tags to a conversation.": "Voeg een of meer tags toe aan een gesprek.",
"Assign a conversation to a teammate or remove assignment.": "Wijs een gesprek toe aan een teamgenoot of verwijder de toewijzing.",
"Create a new account in Front.": "Maak een nieuw account aan de voorkant.",
"Create a new contact in Front.": "Maak een nieuw contact aan het front.",
"Create a draft message in Front.": "Maak een conceptboodschap aan de linkerkant.",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "Creëer direct een conceptantwoord op een bestaand gesprek (onderwerp/citaat etc.) zonder verzending.",
"Create a Link in Front (name, external URL).": "Maak een link in de voorgrond (naam, externe URL).",
"List company accounts and optionally filter by email domain or external ID.": "Bedrijfsaccounts weergeven en optioneel filteren op e-maildomein of extern ID.",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "Een contact opzoeken via handvat (e-mail, telefoon, etc.) of andere identificatieveld.",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "Zoek een gesprek door zoekfilters zoals onderwerp, deelnemers, tags, inbox, enz.",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "Verwijder een handvat (e-mail, telefoonnummer, etc.) uit een bestaande contact.",
"Remove external links from a conversation in Front.": "Externe links uit een gesprek aan het front verwijderen.",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "Stuur een nieuw bericht (begint een gesprek) met onderwerp, geadresseerden, lichaam, bijlagen, labels, etc.",
"Send a reply to a conversation in Front.": "Stuur een antwoord naar een gesprek aan de linkerzijde.",
"Update an existing account in Front.": "Een bestaand account aan voorzijde bijwerken.",
"Update an existing contact in Front.": "Een bestaand contact aan het front bijwerken.",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "Gesprekseigenschappen wijzigen: status, taakontvanger, inbox, tags, enz.",
"Update the name or external URL of a Link in Front.": "Update de naam of externe URL van een link aan de linkerkant.",
"Conversation ID": "Conversatie ID",
"Teammate ID": "Teamgenoot ID",
"Comment Body": "Commentaar inhoud",
"Contact ID": "Contact ID",
"Handle Type": "Type afhandeling",
"Handle Value": "Afhandeling waarde",
"Link IDs": "Link IDs",
"Tag IDs": "Tag ID's",
"Account Name": "Klant naam",
"Description": "Beschrijving",
"Domains": "Domeinen",
"External ID": "Extern ID",
"Custom Fields": "Aangepaste velden",
"Name": "Naam",
"Handles": "Handles",
"Avatar URL": "Avatar URL",
"Links": "Koppelingen",
"Group Names": "Groepsnaam",
"Contact Lists": "Lijst met contactpersonen",
"Channel ID": "Kanaal ID",
"To": "tot",
"CC": "CC",
"BCC": "Bcc",
"Subject": "Onderwerp",
"Body": "Lichaam",
"Attachments": "Bijlagen",
"Mode": "Modus",
"Signature ID": "Handtekening ID",
"Add Default Signature": "Standaard Handtekening toevoegen",
"Message Body": "Bericht Body",
"External URL": "Externe URL",
"Pattern": "Patroon",
"Email Domain": "E-mail domein",
"Limit": "Limiet",
"Page Token": "Pagina Token",
"Sort By": "Sorteren op",
"Sort Order": "Sorteren bestelling",
"Email": "E-mail",
"Phone": "Telefoonnummer",
"Custom Query": "Aangepaste zoekopdracht",
"Query": "Zoekopdracht",
"Handle": "Handgreep",
"Source": "Bron",
"Delete Contact if Last Handle": "Contact verwijderen als laatste handeling",
"Account ID": "ID klant",
"Status": "status",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "Selecteer het gesprek",
"Select the teammate": "Selecteer de teamgenoot",
"The content of the comment.": "De inhoud van de opmerking.",
"Select the contact": "Selecteer de contactpersoon",
"Type of handle to add.": "Type handvat om toe te voegen.",
"The value of the handle (e.g., email address, phone number).": "De waarde van de handgreep (bijv. e-mailadres, telefoonnummer).",
"Select one or more links": "Selecteer een of meer koppelingen",
"Select one or more tags": "Selecteer een of meer tags",
"The name of the account to create.": "De naam van het aan te maken account",
"A description for the account.": "Een beschrijving van de rekening.",
"List of domains associated with the account.": "Lijst van domeinen die gekoppeld zijn aan het account.",
"An external identifier for the account.": "Externe identificatie voor deze rekening",
"Custom fields for this account, as a JSON object.": "Aangepaste velden voor deze rekening, als JSON-object.",
"The name of the contact.": "De naam van de contactpersoon",
"A description for the contact.": "Een beschrijving van de contactpersoon",
"List of contact handles (e.g., email, phone).": "Lijst van contactpunten (bijv. e-mail, telefoon).",
"URL of the contacts avatar image.": "URL van de avatar afbeelding van de contactpersoon.",
"List of URLs associated with the contact.": "Lijst met URL's gekoppeld aan de contactpersoon",
"List of group names to associate with the contact.": "Lijst van groepsnamen die aan de contactpersoon gekoppeld worden.",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "Lijst met namen van contactpersonen waartoe dit contact behoort. Voorkant zal een naam maken die niet bestaat.",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "Aangepaste velden voor deze contactpersoon, als een JSON-object (bijv. {\"CRM ID\": \"12345\"}).",
"Select the channel": "Selecteer het kanaal",
"List of recipient handles (email addresses, etc.).": "Lijst van ontvangerhandleidingen (e-mailadressen, enz.).",
"List of CC recipient handles.": "Lijst van CC geadresseerde handleidingen.",
"List of BCC recipient handles.": "Lijst van BCC ontvangerhandleidingen.",
"The subject of the draft.": "Het onderwerp van het voorstel.",
"The body of the draft message.": "De inhoud van het ontwerpbericht.",
"List of attachment URLs.": "Lijst van bijlage-URL's.",
"Mode of the draft reply": "Modus van het ontwerpantwoord",
"The ID of the signature to use for the draft reply (if applicable).": "Het ID van de handtekening die wordt gebruikt voor het conceptantwoord (indien van toepassing).",
"Whether to append the default signature to the draft reply (if applicable).": "Of de standaard handtekening moet worden toegevoegd aan het ontwerpantwoord (indien van toepassing).",
"The content of the draft reply.": "De inhoud van het ontwerpantwoord.",
"The subject of the draft reply (for email channels).": "Het onderwerp van het ontwerp antwoord (voor e-mailkanalen).",
"The name of the link.": "De naam van de link.",
"The external URL for the link.": "De externe URL voor de link.",
"Optional pattern to match URLs (regex).": "Optioneel patroon dat overeenkomt met URL's (regex).",
"Filter accounts by email domain ": "Filter accounts op e-mail domein ",
"Filter accounts by external ID": "Filter accounts op extern ID",
"Maximum number of accounts to return (max 100).": "Maximum aantal te retourneren klanten (max 100).",
"Token for pagination.": "Token voor paginering.",
"Field used to sort the accounts.": "Veld gebruikt voor het sorteren van rekeningen.",
"Order by which results should be sorted.": "Sorteer op welke resultaten moeten worden gesorteerd.",
"Email address to search for.": "E-mailadres om naar te zoeken.",
"Phone number to search for.": "Telefoonnummer om naar te zoeken.",
"Custom Front query string (advanced).": "Eigen winkel query string (geavanceerd).",
"Maximum number of contacts to return.": "Maximum aantal contactpersonen om terug te zenden.",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "Winkel string (bijv. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). Zie https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "Maximum aantal gesprekken om weer te geven.",
"The handle to remove.": "Het te verwijderen handvat",
"The type of the handle to remove.": "Het type van de hendel om te verwijderen.",
"If true, the entire contact will be deleted if this is their last handle.": "Als het waar is, wordt de hele contactpersoon verwijderd als dit hun laatste handvat is.",
"List of external URLs to remove from the conversation.": "Lijst van externe URL's om te verwijderen uit het gesprek.",
"The subject of the message.": "Het onderwerp van het bericht.",
"The body of the message.": "De hoofdtekst van het bericht.",
"The content of the reply message.": "De inhoud van het antwoord bericht.",
"The subject of the reply (for email channels).": "Het onderwerp van het antwoord (voor e-mailkanalen).",
"Select the account": "Selecteer het account",
"The new name for the account.": "De nieuwe naam voor het account.",
"The new description for the account.": "De nieuwe beschrijving voor de account.",
"Custom fields to add or update. Existing fields will be preserved.": "Aangepaste velden om toe te voegen of bij te werken. Bestaande velden worden behouden.",
"The new name for the contact.": "De nieuwe naam van de contactpersoon",
"A new description for the contact.": "Een nieuwe beschrijving van de contactpersoon",
"The new status for the conversation.": "De nieuwe status van het gesprek.",
"Select the inbox": "Selecteer de inbox",
"Select the link": "Selecteer de link",
"The new name for the link.": "De nieuwe naam voor de link.",
"The new external URL for the link.": "De nieuwe externe URL voor de link.",
"Twitter": "Twitter",
"Facebook": "Facebook",
"Intercom": "Intercom",
"front_chat": "voor_chat",
"custom": "Aangepast",
"Private": "Privé",
"Shared": "Gedeeld",
"Created At": "Aangemaakt op",
"Updated At": "Bijgewerkt op",
"Ascending": "Oplopend",
"Descending": "Aflopend",
"Front Chat": "Voorzijde chat",
"Custom": "Aangepaste",
"Open": "Open",
"Archived": "Gearchiveerd",
"Deleted": "Verwijderd",
"New Comment": "Nieuwe reactie",
"New Inbound Message": "Nieuw inkomende bericht",
"New Outbound Message": "Nieuw uitgaande bericht",
"New Tag Added to Message": "Nieuwe tag toegevoegd aan bericht",
"New Conversation State Change": "Nieuwe verandering van gespreksstatus",
"Fires when a new comment is posted on a conversation in Front.": "Vuurt wanneer een nieuwe reactie is geplaatst op een gesprek aan het front.",
"Fires when a new message is received in a shared inbox.": "Vuurt wanneer een nieuw bericht wordt ontvangen in een gedeeld postvak in.",
"Fires when a message is sent or replied to in Front.": "Vuurt af wanneer een bericht naar het front wordt gestuurd of beantwoord.",
"Fires when a tag is applied to a conversation.": "Vuurt wanneer een tag wordt toegepast op een gesprek.",
"Triggers when a conversation changes to a specified state.": "Activeert wanneer een gesprek verandert in een opgegeven staat.",
"Desired State": "Gewenste staat",
"The ID of the inbox to monitor for new inbound messages.": "Het ID van de inbox om te monitoren voor nieuwe inkomende berichten.",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "De staat die moet worden geactiveerd op (bijv. open, gearchiveerd, verwijderd, etc.).",
"Assigned": "Toegewezen",
"Unassigned": "Niet-toegewezen"
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "Seu token de API frontal. Você pode criar um a partir das suas configurações iniciais em \"Desenvolvedores\". Certifique-se de que o token tenha os escopos necessários.",
"Add Comment": "Adicionar comentário",
"Add Contact Handle": "Adicionar Identificador de Contato",
"Add Conversation Links": "Adicionar Links da Conversa",
"Add Conversation Tags": "Adicionar Tags de Conversa",
"Assign/Unassign Conversation": "Atribuir/Desatribuir Conversa",
"Create Account": "Criar conta",
"Create Contact": "Criar contato",
"Create Draft": "Criar rascunho",
"Create Draft Reply": "Criar Resposta Rascunha",
"Create Link": "Criar Link",
"Find Account": "Encontrar uma conta",
"Find Contact": "Localizar contato",
"Find Conversation": "Localizar Conversa",
"Remove Contact Handle": "Remover Identificador de Contato",
"Remove Conversation Links": "Remover Links da Conversa",
"Send Message": "Enviar mensagem",
"Send Reply": "Enviar resposta",
"Update Account": "Atualizar conta",
"Update Contact": "Atualizar contato",
"Update Conversation": "Atualizar conversa",
"Update Link": "Atualizar Link",
"Add a comment (internal note) to a conversation in Front.": "Adicionar um comentário (nota interna) a uma conversa no Front.",
"Add a handle (email, phone number, etc.) to an existing Contact.": "Adicione um identificador (e-mail, número de telefone, etc.) a um contato existente.",
"Link external references (URLs) to a conversation.": "Vincular referências externas (URLs) a uma conversação.",
"Add one or more tags to a conversation.": "Adicionar uma ou mais tags a uma conversa.",
"Assign a conversation to a teammate or remove assignment.": "Atribua uma conversa a um colega de equipe ou remova a atribuição.",
"Create a new account in Front.": "Criar uma nova conta no Front.",
"Create a new contact in Front.": "Criar um novo contato em Front.",
"Create a draft message in Front.": "Criar um rascunho de mensagem no Front.",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "Crie uma resposta de rascunho para uma conversa existente (assunto/citação, etc.) sem enviar imediatamente.",
"Create a Link in Front (name, external URL).": "Crie um Link na Frente (nome, URL externa).",
"List company accounts and optionally filter by email domain or external ID.": "Lista contas da empresa e, opcionalmente, filtrar por domínio de e-mail ou ID externo.",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "Procure um contato pelo manipulador (e-mail, telefone, etc.) ou outro campo de identificação.",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "Encontre uma conversa por filtros como assunto, participantes, etiquetas, caixa de entrada, etc.",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "Remove um identificador (e-mail, número de telefone, etc.) de um contato existente.",
"Remove external links from a conversation in Front.": "Remover links externos de uma conversa no Front.",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "Enviar uma nova mensagem (inicia uma conversa) com o assunto, destinatários, corpo, anexos, etiquetas, etc.",
"Send a reply to a conversation in Front.": "Enviar resposta para uma conversa em Front.",
"Update an existing account in Front.": "Atualizar uma conta existente no Front.",
"Update an existing contact in Front.": "Atualizar um contato existente no Front.",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "Modificar propriedades da conversa: status, atribuído, caixa de entrada, tags, etc.",
"Update the name or external URL of a Link in Front.": "Atualize o nome ou a URL externa de um Link no Front.",
"Conversation ID": "ID da conversa",
"Teammate ID": "ID da equipe",
"Comment Body": "Corpo do Comentário",
"Contact ID": "ID do contato",
"Handle Type": "Tipo de Manipulação",
"Handle Value": "Manipular Valor",
"Link IDs": "Link IDs",
"Tag IDs": "IDs de tags",
"Account Name": "Nome da Conta",
"Description": "Descrição",
"Domains": "Domínios",
"External ID": "ID Externo",
"Custom Fields": "Campos Personalizados",
"Name": "Nome",
"Handles": "Handles",
"Avatar URL": "URL do avatar",
"Links": "Links",
"Group Names": "Nomes dos Grupos",
"Contact Lists": "Listas de Contatos",
"Channel ID": "ID do canal",
"To": "Para",
"CC": "CC",
"BCC": "Cco",
"Subject": "Cargo",
"Body": "Conteúdo",
"Attachments": "Anexos",
"Mode": "Modo",
"Signature ID": "ID da assinatura",
"Add Default Signature": "Adicionar assinatura padrão",
"Message Body": "Corpo da Mensagem",
"External URL": "URL externa",
"Pattern": "Padrão",
"Email Domain": "Domínio de e-mail",
"Limit": "Limitar",
"Page Token": "Token da Página",
"Sort By": "Classificar por",
"Sort Order": "Ordem de classificação",
"Email": "e-mail",
"Phone": "Smartphone",
"Custom Query": "Consulta personalizada",
"Query": "Requisição",
"Handle": "Tratar",
"Source": "fonte",
"Delete Contact if Last Handle": "Excluir Contato se o Último Identificador",
"Account ID": "ID da Conta",
"Status": "Estado",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "Selecione a conversa",
"Select the teammate": "Selecione a colega de equipe",
"The content of the comment.": "O conteúdo do comentário.",
"Select the contact": "Selecione o contato",
"Type of handle to add.": "Tipo de identificador para adicionar.",
"The value of the handle (e.g., email address, phone number).": "O valor do identificador (por exemplo, endereço de e-mail, número de telefone)",
"Select one or more links": "Selecione um ou mais links",
"Select one or more tags": "Selecione uma ou mais tags",
"The name of the account to create.": "O nome da conta a criar.",
"A description for the account.": "Uma descrição para a conta.",
"List of domains associated with the account.": "Lista de domínios associados à conta.",
"An external identifier for the account.": "Um identificador externo para a conta.",
"Custom fields for this account, as a JSON object.": "Campos personalizados para esta conta, como um objeto JSON.",
"The name of the contact.": "O nome do contato.",
"A description for the contact.": "Uma descrição para o contato.",
"List of contact handles (e.g., email, phone).": "Lista de manipulações de contatos (por exemplo, e-mail, telefone).",
"URL of the contacts avatar image.": "URL da imagem do avatar do contato.",
"List of URLs associated with the contact.": "Lista de links associados com o contato.",
"List of group names to associate with the contact.": "Lista de nomes de grupos para associar com o contato.",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "Lista de nomes de contatos aos quais este contato pertence. Frente irá criar quaisquer que não existem.",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "Campos personalizados para este contato, como um objeto JSON (por exemplo, {\"CRM ID\": \"12345\"}).",
"Select the channel": "Selecione o canal",
"List of recipient handles (email addresses, etc.).": "Lista de destinatários (endereços de e-mail, etc.).",
"List of CC recipient handles.": "Lista de manipulações do destinatário CC.",
"List of BCC recipient handles.": "Lista de manipulações de beneficiários BCC.",
"The subject of the draft.": "O assunto do rascunho.",
"The body of the draft message.": "O corpo da mensagem de rascunho.",
"List of attachment URLs.": "Lista de URLs de anexo.",
"Mode of the draft reply": "Modo da resposta de rascunho",
"The ID of the signature to use for the draft reply (if applicable).": "A identificação da assinatura a ser usada na resposta do rascunho (se aplicável).",
"Whether to append the default signature to the draft reply (if applicable).": "Se deseja acrescentar a assinatura padrão à resposta de rascunho (se aplicável).",
"The content of the draft reply.": "O conteúdo do projecto de resposta.",
"The subject of the draft reply (for email channels).": "O assunto da resposta em rascunho (para canais de e-mail).",
"The name of the link.": "O nome do link.",
"The external URL for the link.": "A URL externa para o link.",
"Optional pattern to match URLs (regex).": "Padrão opcional para combinar URLs (regex).",
"Filter accounts by email domain ": "Filtrar contas por domínio de e-mail ",
"Filter accounts by external ID": "Filtrar contas por ID externo",
"Maximum number of accounts to return (max 100).": "Número máximo de contas a retornar (máximo 100).",
"Token for pagination.": "Token para paginação.",
"Field used to sort the accounts.": "Campo usado para ordenar as contas.",
"Order by which results should be sorted.": "Ordenação pela qual os resultados devem ser ordenados.",
"Email address to search for.": "Endereço de e-mail para procurar.",
"Phone number to search for.": "Número de telefone para pesquisar.",
"Custom Front query string (advanced).": "String de consulta personalizada (avançada).",
"Maximum number of contacts to return.": "Número máximo de contatos para retornar.",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "Frase de consulta frontal (por exemplo, subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). Veja https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "Número máximo de conversas para retornar.",
"The handle to remove.": "A alça a remover.",
"The type of the handle to remove.": "O tipo do identificador para remover.",
"If true, the entire contact will be deleted if this is their last handle.": "Se verdadeiro, todo o contato será excluído se essa for a sua última alça.",
"List of external URLs to remove from the conversation.": "Lista de URLs externas para remover da conversa.",
"The subject of the message.": "O assunto da mensagem.",
"The body of the message.": "O corpo da mensagem.",
"The content of the reply message.": "O conteúdo da mensagem de resposta.",
"The subject of the reply (for email channels).": "O assunto da resposta (para canais de e-mail).",
"Select the account": "Selecione a conta",
"The new name for the account.": "O novo nome para a conta.",
"The new description for the account.": "A nova descrição para a conta.",
"Custom fields to add or update. Existing fields will be preserved.": "Campos personalizados para adicionar ou atualizar. Campos existentes serão preservados.",
"The new name for the contact.": "O novo nome para o contato.",
"A new description for the contact.": "Uma nova descrição para o contato.",
"The new status for the conversation.": "O novo status da conversa.",
"Select the inbox": "Selecione a caixa de entrada",
"Select the link": "Selecione o link",
"The new name for the link.": "O novo nome para o link.",
"The new external URL for the link.": "A nova URL externa para o link.",
"Twitter": "Twitter",
"Facebook": "Siga-nos",
"Intercom": "Intercom",
"front_chat": "chat_frontal",
"custom": "personalizado",
"Private": "Privado",
"Shared": "Compartilhado",
"Created At": "Criado em",
"Updated At": "Atualizado em",
"Ascending": "Crescente",
"Descending": "Decrescente",
"Front Chat": "Bate-Papo Frontal",
"Custom": "Personalizado",
"Open": "Abertas",
"Archived": "Arquivado",
"Deleted": "Excluído",
"New Comment": "Novo Comentário",
"New Inbound Message": "Nova mensagem de entrada",
"New Outbound Message": "Nova Mensagem de Saída",
"New Tag Added to Message": "Nova Tag Adicionada à Mensagem",
"New Conversation State Change": "Nova Mudança de Estado de Conversação",
"Fires when a new comment is posted on a conversation in Front.": "Atira quando um novo comentário é postado em uma conversa em Front.",
"Fires when a new message is received in a shared inbox.": "Realiza quando uma nova mensagem é recebida em uma caixa de entrada compartilhada.",
"Fires when a message is sent or replied to in Front.": "Efetua quando uma mensagem é enviada ou respondida em Frente.",
"Fires when a tag is applied to a conversation.": "Atira quando uma etiqueta é aplicada a uma conversa.",
"Triggers when a conversation changes to a specified state.": "Dispara quando uma conversa muda para um estado especificado.",
"Desired State": "Estado desejado",
"The ID of the inbox to monitor for new inbound messages.": "O ID da caixa de entrada para monitorar novas mensagens de entrada.",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "O estado a ser acionado (por exemplo, aberto, arquivado, excluído, atribuído, etc.).",
"Assigned": "Atribuído",
"Unassigned": "Não atribuído"
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.",
"Add Comment": "Add Comment",
"Add Contact Handle": "Add Contact Handle",
"Add Conversation Links": "Add Conversation Links",
"Add Conversation Tags": "Add Conversation Tags",
"Assign/Unassign Conversation": "Assign/Unassign Conversation",
"Create Account": "Create Account",
"Create Contact": "Create Contact",
"Create Draft": "Create Draft",
"Create Draft Reply": "Create Draft Reply",
"Create Link": "Create Link",
"Find Account": "Find Account",
"Find Contact": "Find Contact",
"Find Conversation": "Find Conversation",
"Remove Contact Handle": "Remove Contact Handle",
"Remove Conversation Links": "Remove Conversation Links",
"Send Message": "Send Message",
"Send Reply": "Send Reply",
"Update Account": "Update Account",
"Update Contact": "Update Contact",
"Update Conversation": "Update Conversation",
"Update Link": "Update Link",
"Add a comment (internal note) to a conversation in Front.": "Add a comment (internal note) to a conversation in Front.",
"Add a handle (email, phone number, etc.) to an existing Contact.": "Add a handle (email, phone number, etc.) to an existing Contact.",
"Link external references (URLs) to a conversation.": "Link external references (URLs) to a conversation.",
"Add one or more tags to a conversation.": "Add one or more tags to a conversation.",
"Assign a conversation to a teammate or remove assignment.": "Assign a conversation to a teammate or remove assignment.",
"Create a new account in Front.": "Create a new account in Front.",
"Create a new contact in Front.": "Create a new contact in Front.",
"Create a draft message in Front.": "Create a draft message in Front.",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.",
"Create a Link in Front (name, external URL).": "Create a Link in Front (name, external URL).",
"List company accounts and optionally filter by email domain or external ID.": "List company accounts and optionally filter by email domain or external ID.",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "Look up a contact by handle (email, phone, etc.) or other identifying field.",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "Find a conversation by search filters such as subject, participants, tags, inbox, etc.",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "Remove a handle (email, phone number, etc.) from an existing Contact.",
"Remove external links from a conversation in Front.": "Remove external links from a conversation in Front.",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.",
"Send a reply to a conversation in Front.": "Send a reply to a conversation in Front.",
"Update an existing account in Front.": "Update an existing account in Front.",
"Update an existing contact in Front.": "Update an existing contact in Front.",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "Modify conversation properties: status, assignee, inbox, tags, etc.",
"Update the name or external URL of a Link in Front.": "Update the name or external URL of a Link in Front.",
"Conversation ID": "Conversation ID",
"Teammate ID": "Teammate ID",
"Comment Body": "Comment Body",
"Contact ID": "Contact ID",
"Handle Type": "Handle Type",
"Handle Value": "Handle Value",
"Link IDs": "Link IDs",
"Tag IDs": "Tag IDs",
"Account Name": "Account Name",
"Description": "Description",
"Domains": "Domains",
"External ID": "External ID",
"Custom Fields": "Custom Fields",
"Name": "Name",
"Handles": "Handles",
"Avatar URL": "Avatar URL",
"Links": "Links",
"Group Names": "Group Names",
"Contact Lists": "Contact Lists",
"Channel ID": "Channel ID",
"To": "To",
"CC": "CC",
"BCC": "BCC",
"Subject": "Subject",
"Body": "Body",
"Attachments": "Attachments",
"Mode": "Mode",
"Signature ID": "Signature ID",
"Add Default Signature": "Add Default Signature",
"Message Body": "Message Body",
"External URL": "External URL",
"Pattern": "Pattern",
"Email Domain": "Email Domain",
"Limit": "Limit",
"Page Token": "Page Token",
"Sort By": "Sort By",
"Sort Order": "Sort Order",
"Email": "Email",
"Phone": "Phone",
"Custom Query": "Custom Query",
"Query": "Query",
"Handle": "Handle",
"Source": "Source",
"Delete Contact if Last Handle": "Delete Contact if Last Handle",
"Account ID": "Account ID",
"Status": "Status",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "Select the conversation",
"Select the teammate": "Select the teammate",
"The content of the comment.": "The content of the comment.",
"Select the contact": "Select the contact",
"Type of handle to add.": "Type of handle to add.",
"The value of the handle (e.g., email address, phone number).": "The value of the handle (e.g., email address, phone number).",
"Select one or more links": "Select one or more links",
"Select one or more tags": "Select one or more tags",
"The name of the account to create.": "The name of the account to create.",
"A description for the account.": "A description for the account.",
"List of domains associated with the account.": "List of domains associated with the account.",
"An external identifier for the account.": "An external identifier for the account.",
"Custom fields for this account, as a JSON object.": "Custom fields for this account, as a JSON object.",
"The name of the contact.": "The name of the contact.",
"A description for the contact.": "A description for the contact.",
"List of contact handles (e.g., email, phone).": "List of contact handles (e.g., email, phone).",
"URL of the contacts avatar image.": "URL of the contacts avatar image.",
"List of URLs associated with the contact.": "List of URLs associated with the contact.",
"List of group names to associate with the contact.": "List of group names to associate with the contact.",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "List of contact list names this contact belongs to. Front will create any that do not exist.",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).",
"Select the channel": "Select the channel",
"List of recipient handles (email addresses, etc.).": "List of recipient handles (email addresses, etc.).",
"List of CC recipient handles.": "List of CC recipient handles.",
"List of BCC recipient handles.": "List of BCC recipient handles.",
"The subject of the draft.": "The subject of the draft.",
"The body of the draft message.": "The body of the draft message.",
"List of attachment URLs.": "List of attachment URLs.",
"Mode of the draft reply": "Mode of the draft reply",
"The ID of the signature to use for the draft reply (if applicable).": "The ID of the signature to use for the draft reply (if applicable).",
"Whether to append the default signature to the draft reply (if applicable).": "Whether to append the default signature to the draft reply (if applicable).",
"The content of the draft reply.": "The content of the draft reply.",
"The subject of the draft reply (for email channels).": "The subject of the draft reply (for email channels).",
"The name of the link.": "The name of the link.",
"The external URL for the link.": "The external URL for the link.",
"Optional pattern to match URLs (regex).": "Optional pattern to match URLs (regex).",
"Filter accounts by email domain ": "Filter accounts by email domain ",
"Filter accounts by external ID": "Filter accounts by external ID",
"Maximum number of accounts to return (max 100).": "Maximum number of accounts to return (max 100).",
"Token for pagination.": "Token for pagination.",
"Field used to sort the accounts.": "Field used to sort the accounts.",
"Order by which results should be sorted.": "Order by which results should be sorted.",
"Email address to search for.": "Email address to search for.",
"Phone number to search for.": "Phone number to search for.",
"Custom Front query string (advanced).": "Custom Front query string (advanced).",
"Maximum number of contacts to return.": "Maximum number of contacts to return.",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "Maximum number of conversations to return.",
"The handle to remove.": "The handle to remove.",
"The type of the handle to remove.": "The type of the handle to remove.",
"If true, the entire contact will be deleted if this is their last handle.": "If true, the entire contact will be deleted if this is their last handle.",
"List of external URLs to remove from the conversation.": "List of external URLs to remove from the conversation.",
"The subject of the message.": "The subject of the message.",
"The body of the message.": "The body of the message.",
"The content of the reply message.": "The content of the reply message.",
"The subject of the reply (for email channels).": "The subject of the reply (for email channels).",
"Select the account": "Select the account",
"The new name for the account.": "The new name for the account.",
"The new description for the account.": "The new description for the account.",
"Custom fields to add or update. Existing fields will be preserved.": "Custom fields to add or update. Existing fields will be preserved.",
"The new name for the contact.": "The new name for the contact.",
"A new description for the contact.": "A new description for the contact.",
"The new status for the conversation.": "The new status for the conversation.",
"Select the inbox": "Select the inbox",
"Select the link": "Select the link",
"The new name for the link.": "The new name for the link.",
"The new external URL for the link.": "The new external URL for the link.",
"Twitter": "Twitter",
"Facebook": "Facebook",
"Intercom": "Intercom",
"front_chat": "front_chat",
"custom": "custom",
"Private": "Private",
"Shared": "Shared",
"Created At": "Created At",
"Updated At": "Updated At",
"Ascending": "Ascending",
"Descending": "Descending",
"Front Chat": "Front Chat",
"Custom": "Custom",
"Open": "Open",
"Archived": "Archived",
"Deleted": "Deleted",
"New Comment": "New Comment",
"New Inbound Message": "New Inbound Message",
"New Outbound Message": "New Outbound Message",
"New Tag Added to Message": "New Tag Added to Message",
"New Conversation State Change": "New Conversation State Change",
"Fires when a new comment is posted on a conversation in Front.": "Fires when a new comment is posted on a conversation in Front.",
"Fires when a new message is received in a shared inbox.": "Fires when a new message is received in a shared inbox.",
"Fires when a message is sent or replied to in Front.": "Fires when a message is sent or replied to in Front.",
"Fires when a tag is applied to a conversation.": "Fires when a tag is applied to a conversation.",
"Triggers when a conversation changes to a specified state.": "Triggers when a conversation changes to a specified state.",
"Desired State": "Desired State",
"The ID of the inbox to monitor for new inbound messages.": "The ID of the inbox to monitor for new inbound messages.",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "The state to trigger on (e.g., open, archived, deleted, assigned, etc.).",
"Assigned": "Assigned",
"Unassigned": "Unassigned"
}

View File

@@ -0,0 +1,191 @@
{
"Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.": "Your Front API token. You can create one from your Front settings under \"Developers\". Ensure the token has the necessary scopes.",
"Add Comment": "Add Comment",
"Add Contact Handle": "Add Contact Handle",
"Add Conversation Links": "Add Conversation Links",
"Add Conversation Tags": "Add Conversation Tags",
"Assign/Unassign Conversation": "Assign/Unassign Conversation",
"Create Account": "Create Account",
"Create Contact": "Create Contact",
"Create Draft": "Create Draft",
"Create Draft Reply": "Create Draft Reply",
"Create Link": "Create Link",
"Find Account": "Find Account",
"Find Contact": "Find Contact",
"Find Conversation": "Find Conversation",
"Remove Contact Handle": "Remove Contact Handle",
"Remove Conversation Links": "Remove Conversation Links",
"Send Message": "Send Message",
"Send Reply": "Send Reply",
"Update Account": "Update Account",
"Update Contact": "Update Contact",
"Update Conversation": "Update Conversation",
"Update Link": "Update Link",
"Add a comment (internal note) to a conversation in Front.": "Add a comment (internal note) to a conversation in Front.",
"Add a handle (email, phone number, etc.) to an existing Contact.": "Add a handle (email, phone number, etc.) to an existing Contact.",
"Link external references (URLs) to a conversation.": "Link external references (URLs) to a conversation.",
"Add one or more tags to a conversation.": "Add one or more tags to a conversation.",
"Assign a conversation to a teammate or remove assignment.": "Assign a conversation to a teammate or remove assignment.",
"Create a new account in Front.": "Create a new account in Front.",
"Create a new contact in Front.": "Create a new contact in Front.",
"Create a draft message in Front.": "Create a draft message in Front.",
"Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.": "Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.",
"Create a Link in Front (name, external URL).": "Create a Link in Front (name, external URL).",
"List company accounts and optionally filter by email domain or external ID.": "List company accounts and optionally filter by email domain or external ID.",
"Look up a contact by handle (email, phone, etc.) or other identifying field.": "Look up a contact by handle (email, phone, etc.) or other identifying field.",
"Find a conversation by search filters such as subject, participants, tags, inbox, etc.": "Find a conversation by search filters such as subject, participants, tags, inbox, etc.",
"Remove a handle (email, phone number, etc.) from an existing Contact.": "Remove a handle (email, phone number, etc.) from an existing Contact.",
"Remove external links from a conversation in Front.": "Remove external links from a conversation in Front.",
"Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.": "Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.",
"Send a reply to a conversation in Front.": "Send a reply to a conversation in Front.",
"Update an existing account in Front.": "Update an existing account in Front.",
"Update an existing contact in Front.": "Update an existing contact in Front.",
"Modify conversation properties: status, assignee, inbox, tags, etc.": "Modify conversation properties: status, assignee, inbox, tags, etc.",
"Update the name or external URL of a Link in Front.": "Update the name or external URL of a Link in Front.",
"Conversation ID": "Conversation ID",
"Teammate ID": "Teammate ID",
"Comment Body": "Comment Body",
"Contact ID": "Contact ID",
"Handle Type": "Handle Type",
"Handle Value": "Handle Value",
"Link IDs": "Link IDs",
"Tag IDs": "Tag IDs",
"Account Name": "Account Name",
"Description": "描述",
"Domains": "Domains",
"External ID": "外部ID",
"Custom Fields": "Custom Fields",
"Name": "名称",
"Handles": "Handles",
"Avatar URL": "Avatar URL",
"Links": "Links",
"Group Names": "Group Names",
"Contact Lists": "Contact Lists",
"Channel ID": "Channel ID",
"To": "To",
"CC": "CC",
"BCC": "BCC",
"Subject": "Subject",
"Body": "正文内容",
"Attachments": "Attachments",
"Mode": "Mode",
"Signature ID": "Signature ID",
"Add Default Signature": "Add Default Signature",
"Message Body": "Message Body",
"External URL": "External URL",
"Pattern": "Pattern",
"Email Domain": "Email Domain",
"Limit": "Limit",
"Page Token": "Page Token",
"Sort By": "Sort By",
"Sort Order": "Sort Order",
"Email": "电子邮件地址",
"Phone": "Phone",
"Custom Query": "Custom Query",
"Query": "Query",
"Handle": "Handle",
"Source": "来源",
"Delete Contact if Last Handle": "Delete Contact if Last Handle",
"Account ID": "Account ID",
"Status": "状态",
"Inbox ID": "Inbox ID",
"Link ID": "Link ID",
"Select the conversation": "Select the conversation",
"Select the teammate": "Select the teammate",
"The content of the comment.": "The content of the comment.",
"Select the contact": "Select the contact",
"Type of handle to add.": "Type of handle to add.",
"The value of the handle (e.g., email address, phone number).": "The value of the handle (e.g., email address, phone number).",
"Select one or more links": "Select one or more links",
"Select one or more tags": "Select one or more tags",
"The name of the account to create.": "The name of the account to create.",
"A description for the account.": "A description for the account.",
"List of domains associated with the account.": "List of domains associated with the account.",
"An external identifier for the account.": "An external identifier for the account.",
"Custom fields for this account, as a JSON object.": "Custom fields for this account, as a JSON object.",
"The name of the contact.": "The name of the contact.",
"A description for the contact.": "A description for the contact.",
"List of contact handles (e.g., email, phone).": "List of contact handles (e.g., email, phone).",
"URL of the contacts avatar image.": "URL of the contacts avatar image.",
"List of URLs associated with the contact.": "List of URLs associated with the contact.",
"List of group names to associate with the contact.": "List of group names to associate with the contact.",
"List of contact list names this contact belongs to. Front will create any that do not exist.": "List of contact list names this contact belongs to. Front will create any that do not exist.",
"Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).": "Custom fields for this contact, as a JSON object (e.g., {\"CRM ID\": \"12345\"}).",
"Select the channel": "Select the channel",
"List of recipient handles (email addresses, etc.).": "List of recipient handles (email addresses, etc.).",
"List of CC recipient handles.": "List of CC recipient handles.",
"List of BCC recipient handles.": "List of BCC recipient handles.",
"The subject of the draft.": "The subject of the draft.",
"The body of the draft message.": "The body of the draft message.",
"List of attachment URLs.": "List of attachment URLs.",
"Mode of the draft reply": "Mode of the draft reply",
"The ID of the signature to use for the draft reply (if applicable).": "The ID of the signature to use for the draft reply (if applicable).",
"Whether to append the default signature to the draft reply (if applicable).": "Whether to append the default signature to the draft reply (if applicable).",
"The content of the draft reply.": "The content of the draft reply.",
"The subject of the draft reply (for email channels).": "The subject of the draft reply (for email channels).",
"The name of the link.": "The name of the link.",
"The external URL for the link.": "The external URL for the link.",
"Optional pattern to match URLs (regex).": "Optional pattern to match URLs (regex).",
"Filter accounts by email domain ": "Filter accounts by email domain ",
"Filter accounts by external ID": "Filter accounts by external ID",
"Maximum number of accounts to return (max 100).": "Maximum number of accounts to return (max 100).",
"Token for pagination.": "Token for pagination.",
"Field used to sort the accounts.": "Field used to sort the accounts.",
"Order by which results should be sorted.": "Order by which results should be sorted.",
"Email address to search for.": "Email address to search for.",
"Phone number to search for.": "Phone number to search for.",
"Custom Front query string (advanced).": "Custom Front query string (advanced).",
"Maximum number of contacts to return.": "Maximum number of contacts to return.",
"Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1": "Front query string (e.g. subject:\"Order\", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1",
"Maximum number of conversations to return.": "Maximum number of conversations to return.",
"The handle to remove.": "The handle to remove.",
"The type of the handle to remove.": "The type of the handle to remove.",
"If true, the entire contact will be deleted if this is their last handle.": "If true, the entire contact will be deleted if this is their last handle.",
"List of external URLs to remove from the conversation.": "List of external URLs to remove from the conversation.",
"The subject of the message.": "The subject of the message.",
"The body of the message.": "The body of the message.",
"The content of the reply message.": "The content of the reply message.",
"The subject of the reply (for email channels).": "The subject of the reply (for email channels).",
"Select the account": "Select the account",
"The new name for the account.": "The new name for the account.",
"The new description for the account.": "The new description for the account.",
"Custom fields to add or update. Existing fields will be preserved.": "Custom fields to add or update. Existing fields will be preserved.",
"The new name for the contact.": "The new name for the contact.",
"A new description for the contact.": "A new description for the contact.",
"The new status for the conversation.": "The new status for the conversation.",
"Select the inbox": "Select the inbox",
"Select the link": "Select the link",
"The new name for the link.": "The new name for the link.",
"The new external URL for the link.": "The new external URL for the link.",
"Twitter": "Twitter",
"Facebook": "Facebook",
"Intercom": "Intercom",
"front_chat": "front_chat",
"custom": "custom",
"Private": "Private",
"Shared": "Shared",
"Created At": "Created At",
"Updated At": "Updated At",
"Ascending": "升序",
"Descending": "降序",
"Front Chat": "Front Chat",
"Custom": "Custom",
"Open": "Open",
"Archived": "Archived",
"Deleted": "Deleted",
"New Comment": "New Comment",
"New Inbound Message": "New Inbound Message",
"New Outbound Message": "New Outbound Message",
"New Tag Added to Message": "New Tag Added to Message",
"New Conversation State Change": "New Conversation State Change",
"Fires when a new comment is posted on a conversation in Front.": "Fires when a new comment is posted on a conversation in Front.",
"Fires when a new message is received in a shared inbox.": "Fires when a new message is received in a shared inbox.",
"Fires when a message is sent or replied to in Front.": "Fires when a message is sent or replied to in Front.",
"Fires when a tag is applied to a conversation.": "Fires when a tag is applied to a conversation.",
"Triggers when a conversation changes to a specified state.": "Triggers when a conversation changes to a specified state.",
"Desired State": "Desired State",
"The ID of the inbox to monitor for new inbound messages.": "The ID of the inbox to monitor for new inbound messages.",
"The state to trigger on (e.g., open, archived, deleted, assigned, etc.).": "The state to trigger on (e.g., open, archived, deleted, assigned, etc.).",
"Assigned": "Assigned",
"Unassigned": "Unassigned"
}

View File

@@ -0,0 +1,70 @@
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
import { addComment } from "./lib/actions/add-comment";
import { addContactHandle } from "./lib/actions/add-contact-handle";
import { addConversationLinks } from "./lib/actions/add-conversation-links";
import { addConversationTags } from "./lib/actions/add-conversation-tags";
import { assignUnassignConversation } from "./lib/actions/assign-unassign-conversation";
import { createAccount } from "./lib/actions/create-account";
import { createContact } from "./lib/actions/create-contact";
import { createDraft } from "./lib/actions/create-draft";
import { createDraftReply } from "./lib/actions/create-draft-reply";
import { createLink } from "./lib/actions/create-link";
import { removeContactHandle } from "./lib/actions/remove-contact-handle";
import { removeConversationLinks } from "./lib/actions/remove-conversation-links";
import { sendMessage } from "./lib/actions/send-message";
import { sendReply } from "./lib/actions/send-reply";
import { updateAccount } from "./lib/actions/update-account";
import { updateContact } from "./lib/actions/update-contact";
import { updateConversation } from "./lib/actions/update-conversation";
import { updateLink } from "./lib/actions/update-link";
import { newComment } from "./lib/triggers/new-comment";
import { newInboundMessage } from "./lib/triggers/new-inbound-message";
import { newOutboundMessage } from "./lib/triggers/new-outbound-message";
import { newTagAddedToMessage } from "./lib/triggers/new-tag-added-to-message";
import { findAccount } from "./lib/actions/find-account";
import { findContact } from "./lib/actions/find-contact";
import { findConversation } from "./lib/actions/find-conversation";
import { newConversationStateChange } from "./lib/triggers/new-conversation-state-change";
import { frontAuth } from "./lib/common/auth";
import { PieceCategory } from "@activepieces/shared";
export const front = createPiece({
displayName: "Front",
auth: frontAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: "https://cdn.activepieces.com/pieces/front.jpg",
authors: ['Niket2035'],
categories:[PieceCategory.CUSTOMER_SUPPORT],
actions: [
addComment,
addContactHandle,
addConversationLinks,
addConversationTags,
assignUnassignConversation,
createAccount,
createContact,
createDraft,
createDraftReply,
createLink,
findAccount,
findContact,
findConversation,
removeContactHandle,
removeConversationLinks,
removeContactHandle,
sendMessage,
sendReply,
updateAccount,
updateContact,
updateConversation,
updateLink
],
triggers: [
newComment,
newInboundMessage,
newOutboundMessage,
newTagAddedToMessage,
newConversationStateChange
],
});

View File

@@ -0,0 +1,28 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { conversationIdDropdown, teammateIdDropdown } from '../common/dropdown';
export const addComment = createAction({
auth: frontAuth,
name: 'addComment',
displayName: 'Add Comment',
description: 'Add a comment (internal note) to a conversation in Front.',
props: {
conversation_id: conversationIdDropdown,
author_id: teammateIdDropdown,
body: Property.LongText({
displayName: 'Comment Body',
description: 'The content of the comment.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { conversation_id, author_id, body } = propsValue;
const path = `/conversations/${conversation_id}/comments`;
const requestBody: Record<string, unknown> = { body };
if (author_id) requestBody['author_id'] = author_id;
return await makeRequest(auth, HttpMethod.POST, path, requestBody);
},
});

View File

@@ -0,0 +1,52 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { contactIdDropdown } from '../common/dropdown';
export const addContactHandle = createAction({
auth: frontAuth,
name: 'addContactHandle',
displayName: 'Add Contact Handle',
description:
'Add a handle (email, phone number, etc.) to an existing Contact.',
props: {
contact_id: contactIdDropdown,
handle_type: Property.StaticDropdown({
displayName: 'Handle Type',
description: 'Type of handle to add.',
required: true,
options: {
options: [
{ label: 'Email', value: 'email' },
{ label: 'Phone', value: 'phone' },
{ label: 'Twitter', value: 'twitter' },
{ label: 'Facebook', value: 'facebook' },
{ label: 'Intercom', value: 'intercom' },
{ label: 'front_chat', value: 'front_chat' },
{ label: 'custom', value: 'custom' },
],
},
}),
handle_value: Property.ShortText({
displayName: 'Handle Value',
description:
'The value of the handle (e.g., email address, phone number).',
required: true,
}),
},
async run({ auth, propsValue }) {
const { contact_id, handle_type, handle_value } = propsValue;
const path = `/contacts/${contact_id}/handles`;
const body = {
source: handle_type,
handle: handle_value,
};
await makeRequest(auth, HttpMethod.POST, path, body);
return {
success: true,
message: `Handle added successfully to ${contact_id}`,
};
},
});

View File

@@ -0,0 +1,26 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { conversationIdDropdown, linkidsDropdown } from '../common/dropdown';
export const addConversationLinks = createAction({
auth: frontAuth,
name: 'addConversationLinks',
displayName: 'Add Conversation Links',
description: 'Link external references (URLs) to a conversation.',
props: {
conversation_id: conversationIdDropdown,
link_ids: linkidsDropdown,
},
async run({ auth, propsValue }) {
const { conversation_id, link_ids } = propsValue;
const path = `/conversations/${conversation_id}/links`;
const body = { link_ids };
await makeRequest(auth, HttpMethod.POST, path, body);
return {
success: true,
message: `Links added to conversation ${conversation_id} successfully`,
};
},
});

View File

@@ -0,0 +1,26 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { conversationIdDropdown, tagIdsDropdown } from '../common/dropdown';
export const addConversationTags = createAction({
auth: frontAuth,
name: 'addConversationTags',
displayName: 'Add Conversation Tags',
description: 'Add one or more tags to a conversation.',
props: {
conversation_id: conversationIdDropdown,
tag_ids: tagIdsDropdown,
},
async run({ auth, propsValue }) {
const { conversation_id, tag_ids } = propsValue;
const path = `/conversations/${conversation_id}/tags`;
const body = { tag_ids };
await makeRequest(auth, HttpMethod.POST, path, body);
return {
success: true,
message: `Tags added to conversation ${conversation_id} successfully`,
};
},
});

View File

@@ -0,0 +1,30 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { conversationIdDropdown, teammateIdDropdown } from '../common/dropdown';
export const assignUnassignConversation = createAction({
auth: frontAuth,
name: 'assignUnassignConversation',
displayName: 'Assign/Unassign Conversation',
description: 'Assign a conversation to a teammate or remove assignment.',
props: {
conversation_id: conversationIdDropdown,
assignee_id: teammateIdDropdown,
},
async run({ auth, propsValue }) {
const { conversation_id, assignee_id } = propsValue;
const path = `/conversations/${conversation_id}/assignee`;
const body: Record<string, unknown> = {};
if (assignee_id) {
body['assignee_id'] = assignee_id;
}
await makeRequest(auth, HttpMethod.PUT, path, body);
return {
success: true,
message: `Conversation ${conversation_id} assignee changed successfully`,
};
},
});

View File

@@ -0,0 +1,65 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const createAccount = createAction({
auth: frontAuth,
name: 'createAccount',
displayName: 'Create Account',
description: 'Create a new account in Front.',
props: {
name: Property.ShortText({
displayName: 'Account Name',
description: 'The name of the account to create.',
required: true,
}),
description: Property.ShortText({
displayName: 'Description',
description: 'A description for the account.',
required: false,
}),
domains: Property.Array({
displayName: 'Domains',
description: 'List of domains associated with the account.',
required: false,
properties: {
domain: Property.ShortText({
displayName: 'Domain',
description: 'A domain associated with the account.',
required: true,
}),
},
}),
external_id: Property.ShortText({
displayName: 'External ID',
description: 'An external identifier for the account.',
required: false,
}),
custom_fields: Property.Json({
displayName: 'Custom Fields',
description: 'Custom fields for this account, as a JSON object.',
required: false,
defaultValue: {}
})
},
async run({ auth, propsValue }) {
const { name, description, domains, external_id,custom_fields } = propsValue;
const body: Record<string, unknown> = { name };
if (description) {
body['description'] = description;
}
if (domains) {
body['domains'] = domains;
}
if (external_id) {
body['external_id'] = external_id;
}
if(custom_fields){
body['custom_fields']=custom_fields;
}
return await makeRequest(auth, HttpMethod.POST, `/accounts`, body);
},
});

View File

@@ -0,0 +1,110 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const createContact = createAction({
auth: frontAuth,
name: 'createContact',
displayName: 'Create Contact',
description: 'Create a new contact in Front.',
props: {
name: Property.ShortText({
displayName: 'Name',
description: 'The name of the contact.',
required: false,
}),
description: Property.ShortText({
displayName: 'Description',
description: 'A description for the contact.',
required: false,
}),
handles: Property.Array({
displayName: 'Handles',
description: 'List of contact handles (e.g., email, phone).',
required: true,
properties: {
handle: Property.ShortText({
displayName: 'Handle Value',
description: 'The value of the handle (e.g., email address).',
required: true,
}),
source: Property.StaticDropdown({
displayName: 'Handle Type',
description: 'Type of handle to add.',
required: true,
options: {
options: [
{ label: 'Email', value: 'email' },
{ label: 'Phone', value: 'phone' },
{ label: 'Twitter', value: 'twitter' },
{ label: 'Facebook', value: 'facebook' },
{ label: 'Intercom', value: 'intercom' },
{ label: 'front_chat', value: 'front_chat' },
{ label: 'custom', value: 'custom' },
],
},
}),
},
}),
avatar_url: Property.File({
displayName: 'Avatar URL',
description: 'URL of the contacts avatar image.',
required: false,
}),
links: Property.Array({
displayName: 'Links',
description: 'List of URLs associated with the contact.',
required: false,
properties: {
link: Property.ShortText({
displayName: 'Link',
required: true,
}),
},
}),
group_names: Property.Array({
displayName: 'Group Names',
description: 'List of group names to associate with the contact.',
required: false,
properties: {
group_names: Property.ShortText({
displayName: 'Group Name',
required: true,
}),
},
}),
list_names: Property.Array({
displayName: 'Contact Lists',
description: 'List of contact list names this contact belongs to. Front will create any that do not exist.',
required: false,
}),
custom_fields: Property.Json({
displayName: 'Custom Fields',
description: 'Custom fields for this contact, as a JSON object (e.g., {"CRM ID": "12345"}).',
required: false,
defaultValue: {},
}),
},
async run({ auth, propsValue }) {
const { description, handles, name, avatar_url, links, group_names,list_names,custom_fields } = propsValue;
const body: Record<string, unknown> = {
handles,
};
if (description) body['description'] = description;
if (name) body['name'] = name;
if (avatar_url) body['avatar_url'] = avatar_url;
if (links) body['links'] = links;
if (group_names) body['group_names'] = group_names;
if(list_names) body['list_names']=list_names;
if(custom_fields) body['custom_fields']=custom_fields;
return await makeRequest(
auth,
HttpMethod.POST,
'/contacts',
body
);
},
});

View File

@@ -0,0 +1,108 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import {
channelIdDropdown,
conversationIdDropdown,
teammateIdDropdown,
} from '../common/dropdown';
export const createDraftReply = createAction({
auth: frontAuth,
name: 'createDraftReply',
displayName: 'Create Draft Reply',
description:
'Create a draft reply to an existing conversation (subject/quote etc.) without sending immediately.',
props: {
conversation_id: conversationIdDropdown,
body: Property.LongText({
displayName: 'Message Body',
description: 'The content of the draft reply.',
required: true,
}),
subject: Property.ShortText({
displayName: 'Subject',
description: 'The subject of the draft reply (for email channels).',
required: false,
}),
author_id: teammateIdDropdown,
channel_id: channelIdDropdown,
to: Property.Array({
displayName: 'To',
description: 'List of recipient handles (email addresses, etc.).',
required: false,
}),
cc: Property.Array({
displayName: 'CC',
description: 'List of CC recipient handles.',
required: false,
}),
bcc: Property.Array({
displayName: 'BCC',
description: 'List of BCC recipient handles.',
required: false,
}),
attachments: Property.Array({
displayName: 'Attachments',
description: 'List of attachment URLs.',
required: false,
}),
mode: Property.StaticDropdown({
displayName: 'Mode',
description: 'Mode of the draft reply',
required: true,
options: {
options: [
{ label: 'Private', value: 'private' },
{ label: 'Shared', value: 'shared' },
],
},
defaultValue: 'private',
}),
signature_id: Property.ShortText({
displayName: 'Signature ID',
description:
'The ID of the signature to use for the draft reply (if applicable).',
required: false,
}),
should_add_default_signature: Property.Checkbox({
displayName: 'Add Default Signature',
description:
'Whether to append the default signature to the draft reply (if applicable).',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const {
conversation_id,
body,
subject,
author_id,
channel_id,
to,
cc,
bcc,
attachments,
mode,
signature_id,
should_add_default_signature,
} = propsValue;
const path = `/conversations/${conversation_id}/drafts`;
const requestBody: Record<string, unknown> = { body };
if (subject) requestBody['subject'] = subject;
if (author_id) requestBody['author_id'] = author_id;
if (channel_id) requestBody['channel_id'] = channel_id;
if (to) requestBody['to'] = to;
if (cc) requestBody['cc'] = cc;
if (bcc) requestBody['bcc'] = bcc;
if (attachments) requestBody['attachments'] = attachments;
if (mode) requestBody['mode'] = mode;
if (signature_id) requestBody['signature_id'] = signature_id;
if (should_add_default_signature !== undefined)
requestBody['should_add_default_signature'] =
should_add_default_signature;
return await makeRequest(auth, HttpMethod.POST, path, requestBody);
},
});

View File

@@ -0,0 +1,105 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { channelIdDropdown } from '../common/dropdown';
export const createDraft = createAction({
auth: frontAuth,
name: 'createDraft',
displayName: 'Create Draft',
description: 'Create a draft message in Front.',
props: {
channel_id: channelIdDropdown,
to: Property.Array({
displayName: 'To',
description: 'List of recipient handles (email addresses, etc.).',
required: true,
}),
cc: Property.Array({
displayName: 'CC',
description: 'List of CC recipient handles.',
required: false,
}),
bcc: Property.Array({
displayName: 'BCC',
description: 'List of BCC recipient handles.',
required: false,
}),
subject: Property.ShortText({
displayName: 'Subject',
description: 'The subject of the draft.',
required: false,
}),
body: Property.LongText({
displayName: 'Body',
description: 'The body of the draft message.',
required: true,
}),
attachments: Property.Array({
displayName: 'Attachments',
description: 'List of attachment URLs.',
required: false,
}),
mode: Property.StaticDropdown({
displayName: 'Mode',
description: 'Mode of the draft reply',
required: true,
options: {
options: [
{ label: 'Private', value: 'private' },
{ label: 'Shared', value: 'shared' },
],
},
defaultValue: 'private',
}),
signature_id: Property.ShortText({
displayName: 'Signature ID',
description:
'The ID of the signature to use for the draft reply (if applicable).',
required: false,
}),
should_add_default_signature: Property.Checkbox({
displayName: 'Add Default Signature',
description:
'Whether to append the default signature to the draft reply (if applicable).',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const {
channel_id,
to,
cc,
bcc,
subject,
body,
attachments,
mode,
signature_id,
should_add_default_signature,
} = propsValue;
const requestBody: Record<string, unknown> = {
channel_id,
to,
body,
};
if (cc) requestBody['cc'] = cc;
if (bcc) requestBody['bcc'] = bcc;
if (subject) requestBody['subject'] = subject;
if (attachments) requestBody['attachments'] = attachments;
if (mode) requestBody['mode'] = mode;
if (signature_id) requestBody['signature_id'] = signature_id;
if (should_add_default_signature !== undefined)
requestBody['should_add_default_signature'] =
should_add_default_signature;
return await makeRequest(
auth,
HttpMethod.POST,
`/channels/${channel_id}/drafts`,
requestBody
);
},
});

View File

@@ -0,0 +1,33 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const createLink = createAction({
auth: frontAuth,
name: 'createLink',
displayName: 'Create Link',
description: 'Create a Link in Front (name, external URL).',
props: {
name: Property.ShortText({
displayName: 'Name',
description: 'The name of the link.',
required: true,
}),
external_url: Property.ShortText({
displayName: 'External URL',
description: 'The external URL for the link.',
required: true,
}),
pattern: Property.ShortText({
displayName: 'Pattern',
description: 'Optional pattern to match URLs (regex).',
required: false,
}),
},
async run({ auth, propsValue }) {
const { name, external_url, pattern } = propsValue;
const body = { name, external_url, pattern };
return await makeRequest(auth, HttpMethod.POST, '/links', body);
},
});

View File

@@ -0,0 +1,77 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const findAccount = createAction({
auth: frontAuth,
name: 'findAccount',
displayName: 'Find Account',
description: 'List company accounts and optionally filter by email domain or external ID.',
props: {
email_domain: Property.ShortText({
displayName: 'Email Domain',
description: 'Filter accounts by email domain ',
required: false,
}),
external_id: Property.ShortText({
displayName: 'External ID',
description: 'Filter accounts by external ID',
required: false,
}),
limit: Property.Number({
displayName: 'Limit',
description: 'Maximum number of accounts to return (max 100).',
required: false,
}),
page_token: Property.ShortText({
displayName: 'Page Token',
description: 'Token for pagination.',
required: false,
}),
sort_by: Property.StaticDropdown({
displayName: 'Sort By',
description: 'Field used to sort the accounts.',
required: false,
options: {
options: [
{ label: 'Created At', value: 'created_at' },
{ label: 'Updated At', value: 'updated_at' },
],
},
}),
sort_order: Property.StaticDropdown({
displayName: 'Sort Order',
description: 'Order by which results should be sorted.',
required: false,
options: {
options: [
{ label: 'Ascending', value: 'asc' },
{ label: 'Descending', value: 'desc' },
],
},
}),
},
async run({ auth, propsValue }) {
const { email_domain, external_id, limit, page_token, sort_by, sort_order } = propsValue;
// const params: string[] = [];
// if (limit) params.push(`limit=${limit}`);
// if (page_token) params.push(`page_token=${encodeURIComponent(page_token)}`);
// if (sort_by) params.push(`sort_by=${sort_by}`);
// if (sort_order) params.push(`sort_order=${sort_order}`);
// const queryString = params.length ? `?${params.join('&')}` : '';
const path = `/accounts`;
const response = await makeRequest(auth, HttpMethod.GET, path);
let accounts = response._results || response.results || response.accounts || [];
if (email_domain) {
accounts = accounts.filter((a: any) => a.email_domain === email_domain);
}
if (external_id) {
accounts = accounts.filter((a: any) => a.external_id === external_id);
}
return accounts;
},
});

View File

@@ -0,0 +1,53 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const findContact = createAction({
auth: frontAuth,
name: 'findContact',
displayName: 'Find Contact',
description: 'Look up a contact by handle (email, phone, etc.) or other identifying field.',
props: {
email: Property.ShortText({
displayName: 'Email',
description: 'Email address to search for.',
required: false,
}),
phone: Property.ShortText({
displayName: 'Phone',
description: 'Phone number to search for.',
required: false,
}),
custom_query: Property.ShortText({
displayName: 'Custom Query',
description: 'Custom Front query string (advanced).',
required: false,
}),
limit: Property.Number({
displayName: 'Limit',
description: 'Maximum number of contacts to return.',
required: false,
}),
page_token: Property.ShortText({
displayName: 'Page Token',
description: 'Token for pagination.',
required: false,
}),
},
async run({ auth, propsValue }) {
const { email, phone, custom_query, limit, page_token } = propsValue;
const params: string[] = [];
if (email) params.push(`q[type]=${encodeURIComponent(email)}`);
if (phone) params.push(`q[handles]=${encodeURIComponent(phone)}`);
if (custom_query) params.push(`q=${encodeURIComponent(custom_query)}`);
if (limit) params.push(`limit=${limit}`);
if (page_token) params.push(`page_token=${encodeURIComponent(page_token)}`);
const queryString = params.length ? `?${params.join('&')}` : '';
const path = `/contacts${queryString}`;
console.log("Request Path:", path);
return await makeRequest(auth, HttpMethod.GET, path);
},
});

View File

@@ -0,0 +1,38 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const findConversation = createAction({
auth: frontAuth,
name: 'findConversation',
displayName: 'Find Conversation',
description: 'Find a conversation by search filters such as subject, participants, tags, inbox, etc.',
props: {
q: Property.ShortText({
displayName: 'Query',
description: 'Front query string (e.g. subject:"Order", tag_ids:tag_123, inbox_id:inb_456, etc.). See https://dev.frontapp.com/docs/search-1',
required: true,
}),
limit: Property.Number({
displayName: 'Limit',
description: 'Maximum number of conversations to return.',
required: false,
}),
page_token: Property.ShortText({
displayName: 'Page Token',
description: 'Token for pagination.',
required: false,
}),
},
async run({ auth, propsValue }) {
const { q, limit, page_token } = propsValue;
const params: string[] = [];
if (q) params.push(`q=${encodeURIComponent(q)}`);
if (limit) params.push(`limit=${limit}`);
if (page_token) params.push(`page_token=${encodeURIComponent(page_token)}`);
const queryString = params.length ? `?${params.join('&')}` : '';
const path = `/conversations/search${queryString}`;
return await makeRequest(auth, HttpMethod.GET, path);
},
});

View File

@@ -0,0 +1,54 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { contactIdDropdown } from '../common/dropdown';
export const removeContactHandle = createAction({
auth: frontAuth,
name: 'removeContactHandle',
displayName: 'Remove Contact Handle',
description:
'Remove a handle (email, phone number, etc.) from an existing Contact.',
props: {
contact_id: contactIdDropdown,
handle: Property.ShortText({
displayName: 'Handle',
description: 'The handle to remove.',
required: true,
}),
source: Property.StaticDropdown({
displayName: 'Source',
description: 'The type of the handle to remove.',
required: true,
options: {
options: [
{ label: 'Email', value: 'email' },
{ label: 'Phone', value: 'phone' },
{ label: 'Twitter', value: 'twitter' },
{ label: 'Facebook', value: 'facebook' },
{ label: 'Intercom', value: 'intercom' },
{ label: 'Front Chat', value: 'front_chat' },
{ label: 'Custom', value: 'custom' },
],
},
}),
force: Property.Checkbox({
displayName: 'Delete Contact if Last Handle',
description:
'If true, the entire contact will be deleted if this is their last handle.',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const { contact_id, handle, source, force } = propsValue;
const body: Record<string, unknown> = { handle, source, force };
const path = `/contacts/${contact_id}/handles`;
await makeRequest(auth, HttpMethod.DELETE, path, body);
return {
success: true,
message: `Handle ${handle} removed from contact ${contact_id}`,
};
},
});

View File

@@ -0,0 +1,32 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { conversationIdDropdown } from '../common/dropdown';
export const removeConversationLinks = createAction({
auth: frontAuth,
name: 'removeConversationLinks',
displayName: 'Remove Conversation Links',
description: 'Remove external links from a conversation in Front.',
props: {
conversation_id: conversationIdDropdown,
links: Property.Array({
displayName: 'Links',
description: 'List of external URLs to remove from the conversation.',
required: true,
properties: {
item: Property.ShortText({
displayName: 'Link URL',
required: true,
}),
},
}),
},
async run({ auth, propsValue }) {
const { conversation_id, links } = propsValue;
const path = `/conversations/${conversation_id}/links`;
const body = { links };
return await makeRequest(auth, HttpMethod.DELETE, path, body);
},
});

View File

@@ -0,0 +1,29 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { conversationIdDropdown } from '../common/dropdown';
export const removeConversationTags = createAction({
auth: frontAuth,
name: 'removeConversationTags',
displayName: 'Remove Conversation Tags',
description: 'Remove one or more tags from a conversation.',
props: {
conversation_id: conversationIdDropdown,
tag_ids: Property.Array({
displayName: 'Tag IDs',
description: 'List of tag IDs to remove from the conversation.',
required: true,
properties: {
item: Property.ShortText({ displayName: 'Tag ID', required: true }),
},
}),
},
async run({ auth, propsValue }) {
const { conversation_id, tag_ids } = propsValue;
const path = `/conversations/${conversation_id}/tags`;
const body = { tag_ids };
return await makeRequest(auth, HttpMethod.DELETE, path, body);
},
});

View File

@@ -0,0 +1,68 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { channelIdDropdown, tagIdsDropdown } from '../common/dropdown';
export const sendMessage = createAction({
auth: frontAuth,
name: 'sendMessage',
displayName: 'Send Message',
description:
'Send a new message (starts a conversation) with subject, recipients, body, attachments, tags, etc.',
props: {
channel_id: channelIdDropdown,
to: Property.Array({
displayName: 'To',
description: 'List of recipient handles (email addresses, etc.).',
required: true,
}),
cc: Property.Array({
displayName: 'CC',
description: 'List of CC recipient handles.',
required: false,
}),
bcc: Property.Array({
displayName: 'BCC',
description: 'List of BCC recipient handles.',
required: false,
}),
subject: Property.ShortText({
displayName: 'Subject',
description: 'The subject of the message.',
required: false,
}),
body: Property.LongText({
displayName: 'Body',
description: 'The body of the message.',
required: true,
}),
attachments: Property.Array({
displayName: 'Attachments',
description: 'List of attachment URLs.',
required: false,
}),
tag_ids: tagIdsDropdown,
},
async run({ auth, propsValue }) {
const { channel_id, to, cc, bcc, subject, body, attachments, tag_ids } =
propsValue;
const requestBody: Record<string, unknown> = {
channel_id,
to,
body,
};
if (cc) requestBody['cc'] = cc;
if (bcc) requestBody['bcc'] = bcc;
if (subject) requestBody['subject'] = subject;
if (attachments) requestBody['attachments'] = attachments;
if (tag_ids) requestBody['tag_ids'] = tag_ids;
return await makeRequest(
auth,
HttpMethod.POST,
`/channels/${channel_id}/messages`,
requestBody
);
},
});

View File

@@ -0,0 +1,76 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import {
channelIdDropdown,
conversationIdDropdown,
teammateIdDropdown,
} from '../common/dropdown';
export const sendReply = createAction({
auth: frontAuth,
name: 'sendReply',
displayName: 'Send Reply',
description: 'Send a reply to a conversation in Front.',
props: {
conversation_id: conversationIdDropdown,
body: Property.LongText({
displayName: 'Message Body',
description: 'The content of the reply message.',
required: true,
}),
author_id: teammateIdDropdown,
subject: Property.ShortText({
displayName: 'Subject',
description: 'The subject of the reply (for email channels).',
required: false,
}),
to: Property.Array({
displayName: 'To',
description: 'List of recipient handles (email addresses, etc.).',
required: false,
}),
cc: Property.Array({
displayName: 'CC',
description: 'List of CC recipient handles.',
required: false,
}),
bcc: Property.Array({
displayName: 'BCC',
description: 'List of BCC recipient handles.',
required: false,
}),
channel_id: channelIdDropdown,
attachments: Property.Array({
displayName: 'Attachments',
description: 'List of attachment URLs.',
required: false,
}),
},
async run({ auth, propsValue }) {
const {
conversation_id,
body,
author_id,
subject,
channel_id,
attachments,
to,
cc,
bcc,
} = propsValue;
const path = `/conversations/${conversation_id}/messages`;
const requestBody: Record<string, unknown> = { body };
if (author_id) requestBody['author_id'] = author_id;
if (subject) requestBody['subject'] = subject;
if (to) requestBody['to'] = to;
if (cc) requestBody['cc'] = cc;
if (bcc) requestBody['bcc'] = bcc;
if (channel_id) requestBody['channel_id'] = channel_id;
if (attachments) requestBody['attachments'] = attachments;
return await makeRequest(auth, HttpMethod.POST, path, requestBody);
},
});

View File

@@ -0,0 +1,47 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { accountIdDropdown } from '../common/dropdown';
export const updateAccount = createAction({
auth: frontAuth,
name: 'updateAccount',
displayName: 'Update Account',
description: 'Update an existing account in Front.',
props: {
account_id: accountIdDropdown,
name: Property.ShortText({
displayName: 'Account Name',
description: 'The new name for the account.',
required: false,
}),
description: Property.ShortText({
displayName: 'Description',
description: 'The new description for the account.',
required: false,
}),
domains: Property.Array({
displayName: 'Domains',
description: 'List of domains associated with the account.',
required: false,
}),
custom_fields: Property.Json({
displayName: 'Custom Fields',
description:
'Custom fields to add or update. Existing fields will be preserved.',
required: false,
}),
},
async run({ auth, propsValue }) {
const { account_id, name, description, domains, custom_fields } =
propsValue;
const path = `/accounts/${account_id}`;
const body: Record<string, unknown> = {};
if (name) body['name'] = name;
if (description) body['description'] = description;
if (domains) body['domains'] = domains;
if (custom_fields) body['custom_fields'] = custom_fields;
return await makeRequest(auth, HttpMethod.PATCH, path, body);
},
});

View File

@@ -0,0 +1,56 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { contactIdDropdown } from '../common/dropdown';
export const updateContact = createAction({
auth: frontAuth,
name: 'updateContact',
displayName: 'Update Contact',
description: 'Update an existing contact in Front.',
props: {
contact_id: contactIdDropdown,
name: Property.ShortText({
displayName: 'Name',
description: 'The new name for the contact.',
required: false,
}),
description: Property.ShortText({
displayName: 'Description',
description: 'A new description for the contact.',
required: false,
}),
avatar_url: Property.ShortText({
displayName: 'Avatar URL',
description: 'URL of the contacts avatar image.',
required: false,
}),
links: Property.Array({
displayName: 'Links',
description: 'List of URLs associated with the contact.',
required: false,
properties: {
item: Property.ShortText({
displayName: 'Link',
required: true,
}),
},
}),
},
async run({ auth, propsValue }) {
const { contact_id, name, description, avatar_url, links } = propsValue;
const path = `/contacts/${contact_id}`;
const body: Record<string, unknown> = {};
if (name) body['name'] = name;
if (description) body['description'] = description;
if (avatar_url) body['avatar_url'] = avatar_url;
if (links) body['links'] = links;
await makeRequest(auth, HttpMethod.PATCH, path, body);
return {
success: true,
message: `Contact ${contact_id} updated successfully`,
};
},
});

View File

@@ -0,0 +1,52 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import {
conversationIdDropdown,
inboxIdDropdown,
tagIdsDropdown,
teammateIdDropdown,
} from '../common/dropdown';
export const updateConversation = createAction({
auth: frontAuth,
name: 'updateConversation',
displayName: 'Update Conversation',
description:
'Modify conversation properties: status, assignee, inbox, tags, etc.',
props: {
conversation_id: conversationIdDropdown,
status: Property.StaticDropdown({
displayName: 'Status',
description: 'The new status for the conversation.',
required: false,
options: {
options: [
{ label: 'Open', value: 'open' },
{ label: 'Archived', value: 'archived' },
{ label: 'Deleted', value: 'deleted' },
],
},
}),
assignee_id: teammateIdDropdown,
inbox_id: inboxIdDropdown,
tag_ids: tagIdsDropdown,
},
async run({ auth, propsValue }) {
const { conversation_id, status, assignee_id, inbox_id, tag_ids } =
propsValue;
const path = `/conversations/${conversation_id}`;
const body: Record<string, unknown> = {};
if (status) body['status'] = status;
if (assignee_id) body['assignee_id'] = assignee_id;
if (inbox_id) body['inbox_id'] = inbox_id;
if (tag_ids) body['tag_ids'] = tag_ids;
await makeRequest(auth, HttpMethod.PATCH, path, body);
return {
success: true,
message: `Conversation ${conversation_id} updated successfully`,
};
},
});

View File

@@ -0,0 +1,37 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { linkIdDropdown } from '../common/dropdown';
export const updateLink = createAction({
auth: frontAuth,
name: 'updateLink',
displayName: 'Update Link',
description: 'Update the name or external URL of a Link in Front.',
props: {
link_id: linkIdDropdown,
name: Property.ShortText({
displayName: 'Name',
description: 'The new name for the link.',
required: false,
}),
external_url: Property.ShortText({
displayName: 'External URL',
description: 'The new external URL for the link.',
required: false,
}),
},
async run({ auth, propsValue }) {
const { link_id, name, external_url } = propsValue;
const path = `/links/${link_id}`;
const body: Record<string, unknown> = {};
if (name) body['name'] = name;
if (external_url) body['external_url'] = external_url;
await makeRequest(auth, HttpMethod.PATCH, path, body);
return {
success: true,
message: `Link ${link_id} updated successfully`,
};
},
});

View File

@@ -0,0 +1,39 @@
import { PieceAuth } from '@activepieces/pieces-framework';
import {
httpClient,
HttpMethod,
AuthenticationType,
} from '@activepieces/pieces-common';
export const frontAuth = PieceAuth.SecretText({
displayName: 'Front API Token',
description:
'Your Front API token. You can create one from your Front settings under "Developers". Ensure the token has the necessary scopes.',
required: true,
validate: async ({ auth }: { auth: string }) => {
if (!auth) {
return {
valid: false,
error: 'API Token cannot be empty.',
};
}
try {
await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api2.frontapp.com/me',
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: auth,
},
});
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid API Token.',
};
}
},
});

View File

@@ -0,0 +1,27 @@
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
import { frontAuth } from './auth';
export const BASE_URL = `https://api2.frontapp.com`;
export async function makeRequest(
{secret_text}: AppConnectionValueForAuthProperty<typeof frontAuth>,
method: HttpMethod,
path: string,
body?: unknown
) {
try {
const response = await httpClient.sendRequest({
method,
url: `${BASE_URL}${path}`,
headers: {
Authorization: `Bearer ${secret_text}`,
'Content-Type': 'application/json',
},
body,
});
return response.body;
} catch (error: any) {
throw new Error(`Unexpected error: ${error.message || String(error)}`);
}
}

View File

@@ -0,0 +1,349 @@
import { Property } from '@activepieces/pieces-framework';
import { makeRequest } from './client';
import { HttpMethod } from '@activepieces/pieces-common';
import { frontAuth } from './auth';
export const conversationIdDropdown = Property.Dropdown({
displayName: 'Conversation ID',
description: 'Select the conversation',
required: true,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/conversations'
);
const conversations = response._results || [];
console.log(response);
return {
disabled: false,
options: conversations.map((conv: any) => ({
label: conv.subject || conv.id,
value: conv.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading conversations',
};
}
},
});
export const contactIdDropdown = Property.Dropdown({
displayName: 'Contact ID',
description: 'Select the contact',
required: true,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/contacts?limit=50'
);
const contacts = response._results || [];
return {
disabled: false,
options: contacts.map((contact: any) => ({
label: contact.name || contact.id,
value: contact.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading contacts',
};
}
},
});
export const tagIdsDropdown = Property.MultiSelectDropdown({
displayName: 'Tag IDs',
description: 'Select one or more tags',
required: false,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/tags?limit=50'
);
const tags = response._results || [];
return {
disabled: false,
options: tags.map((tag: any) => ({
label: tag.name || tag.id,
value: tag.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading tags',
};
}
},
});
export const teammateIdDropdown = Property.Dropdown({
displayName: 'Teammate ID',
description: 'Select the teammate',
required: true,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/teammates?limit=50'
);
const teammates = response._results || [];
return {
disabled: false,
options: teammates.map((teammate: any) => ({
label: teammate.username || teammate.first_name + ' ' + teammate.last_name || teammate.id,
value: teammate.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading teammates',
};
}
},
});
export const channelIdDropdown = Property.Dropdown({
displayName: 'Channel ID',
description: 'Select the channel',
required: true,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/channels'
);
const channels = response._results || [];
return {
disabled: false,
options: channels.map((channel: any) => ({
label: channel.name || channel.id,
value: channel.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading channels',
};
}
},
});
export const accountIdDropdown = Property.Dropdown({
displayName: 'Account ID',
description: 'Select the account',
required: true,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/accounts'
);
const accounts = response._results || [];
return {
disabled: false,
options: accounts.map((account: any) => ({
label: account.name || account.id,
value: account.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading accounts',
};
}
},
});
export const inboxIdDropdown = Property.Dropdown({
displayName: 'Inbox ID',
description: 'Select the inbox',
required: false,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/inboxes'
);
const inboxes = response._results || [];
return {
disabled: false,
options: inboxes.map((inbox: any) => ({
label: inbox.name || inbox.id,
value: inbox.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading inboxes',
};
}
},
});
export const linkIdDropdown = Property.Dropdown({
displayName: 'Link ID',
description: 'Select the link',
required: false,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/links'
);
const links = response._results || [];
return {
disabled: false,
options: links.map((link: any) => ({
label: link.name || link.id,
value: link.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading links',
};
}
},
});
export const linkidsDropdown = Property.MultiSelectDropdown({
displayName: 'Link IDs',
description: 'Select one or more links',
required: false,
refreshers: [],
auth: frontAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const response = await makeRequest(
auth,
HttpMethod.GET,
'/links'
);
const links = response._results || [];
return {
disabled: false,
options: links.map((link: any) => ({
label: link.name || link.id,
value: link.id,
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading links',
};
}
},
});

View File

@@ -0,0 +1,264 @@
import {
createTrigger,
TriggerStrategy,
PiecePropValueSchema,
Property,
StaticPropsValue,
AppConnectionValueForAuthProperty,
} from '@activepieces/pieces-framework';
import {
DedupeStrategy,
HttpMethod,
Polling,
pollingHelper,
} from '@activepieces/pieces-common';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { conversationIdDropdown } from '../common/dropdown';
const props = {
conversation_id: conversationIdDropdown,
};
const polling: Polling<AppConnectionValueForAuthProperty<typeof frontAuth>, StaticPropsValue<typeof props>> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
const params: string[] = ['q[types]=comment', 'limit=15'];
const query = params.join('&');
const response = await makeRequest(
auth,
HttpMethod.GET,
`/events?${query}`
);
const events = response._results || [];
const comments: any[] = [];
for (const event of events) {
if (
event.conversation &&
event.conversation.id === propsValue.conversation_id &&
event.type === 'comment'
) {
const emittedATMs = Math.floor(Number(event.emitted_at) * 1000);
if (!lastFetchEpochMS || emittedATMs > lastFetchEpochMS) {
comments.push({
epochMilliSeconds: emittedATMs,
data: event,
});
}
}
}
return comments;
},
};
export const newComment = createTrigger({
auth: frontAuth,
name: 'newComment',
displayName: 'New Comment',
description: 'Fires when a new comment is posted on a conversation in Front.',
props,
sampleData: {
_links: {
self: 'https://api.example.com/events/evt_dummy1234',
},
id: 'evt_dummy1234',
type: 'comment',
emitted_at: 1700000000,
conversation: {
_links: {
self: 'https://api.example.com/conversations/cnv_dummy5678',
related: {
events: 'https://api.example.com/conversations/cnv_dummy5678/events',
followers:
'https://api.example.com/conversations/cnv_dummy5678/followers',
messages:
'https://api.example.com/conversations/cnv_dummy5678/messages',
comments:
'https://api.example.com/conversations/cnv_dummy5678/comments',
inboxes:
'https://api.example.com/conversations/cnv_dummy5678/inboxes',
last_message:
'https://api.example.com/messages/msg_dummy9012?referer=conversation',
},
},
id: 'cnv_dummy5678',
subject: 'Re: test',
status: 'assigned',
status_id: 'sts_dummy0001',
status_category: 'open',
ticket_ids: ['SU-2'],
assignee: {
_links: {
self: 'https://api.example.com/teammates/tea_dummy1',
related: {
inboxes: 'https://api.example.com/teammates/tea_dummy1/inboxes',
conversations:
'https://api.example.com/teammates/tea_dummy1/conversations',
},
},
id: 'tea_dummy1',
email: 'dummy.sender@example.com',
username: 'dummyuser',
first_name: 'Dummy',
last_name: 'User',
is_admin: true,
is_available: true,
is_blocked: false,
type: 'user',
custom_fields: {},
},
recipient: {
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy2222',
},
},
name: 'Dummy Recipient',
handle: 'recipient@example.com',
role: 'to',
},
tags: [
{
_links: {
self: 'https://api.example.com/tags/tag_dummy1',
related: {
conversations:
'https://api.example.com/tags/tag_dummy1/conversations',
owner: 'https://api.example.com/teammates/tea_dummy1',
parent_tag: null,
children: null,
},
},
id: 'tag_dummy1',
name: 'Inbox',
highlight: null,
description: null,
is_private: true,
is_visible_in_conversation_lists: false,
updated_at: 1700000100,
created_at: 1700000100,
},
{
_links: {
self: 'https://api.example.com/tags/tag_dummy2',
related: {
conversations:
'https://api.example.com/tags/tag_dummy2/conversations',
owner: 'https://api.example.com/teams/team_dummy1',
parent_tag: null,
children: null,
},
},
id: 'tag_dummy2',
name: 'YELLOW_STAR',
highlight: null,
description: null,
is_private: false,
is_visible_in_conversation_lists: false,
updated_at: 1700000200,
created_at: 1700000150,
},
{
_links: {
self: 'https://api.example.com/tags/tag_dummy3',
related: {
conversations:
'https://api.example.com/tags/tag_dummy3/conversations',
owner: 'https://api.example.com/teams/team_dummy1',
parent_tag: null,
children: null,
},
},
id: 'tag_dummy3',
name: 'CHAT',
highlight: null,
description: null,
is_private: false,
is_visible_in_conversation_lists: false,
updated_at: 1700000250,
created_at: 1700000150,
},
],
links: [
{
_links: {
self: 'https://api.example.com/links/link_dummy1',
},
id: 'link_dummy1',
name: 'test update link',
type: 'web',
external_url: 'https://example.com/',
custom_fields: {},
},
],
custom_fields: {},
created_at: 1700000050,
waiting_since: 1700000500,
is_private: false,
scheduled_reminders: [],
metadata: {},
},
source: {
_meta: {
type: 'api',
},
data: null,
},
target: {
_meta: {
type: 'comment',
},
data: {
_links: {
self: 'https://api.example.com/comments/com_dummy1',
related: {
conversation: 'https://api.example.com/conversations/cnv_dummy5678',
mentions: 'https://api.example.com/comments/com_dummy1/mentions',
},
},
id: 'com_dummy1',
body: 'This is a dummy comment for testing purposes.',
posted_at: 1700000000,
author: {
_links: {
self: 'https://api.example.com/teammates/tea_dummy1',
related: {
inboxes: 'https://api.example.com/teammates/tea_dummy1/inboxes',
conversations:
'https://api.example.com/teammates/tea_dummy1/conversations',
},
},
id: 'tea_dummy1',
email: 'dummy.sender@example.com',
username: 'dummyuser',
first_name: 'Dummy',
last_name: 'User',
is_admin: true,
is_available: true,
is_blocked: false,
type: 'user',
custom_fields: {},
},
attachments: [],
is_pinned: false,
},
},
},
type: TriggerStrategy.POLLING,
async test(context) {
return await pollingHelper.test(polling, context);
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -0,0 +1,241 @@
import {
createTrigger,
TriggerStrategy,
Property,
PiecePropValueSchema,
StaticPropsValue,
AppConnectionValueForAuthProperty,
} from '@activepieces/pieces-framework';
import {
DedupeStrategy,
HttpMethod,
Polling,
pollingHelper,
} from '@activepieces/pieces-common';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { conversationIdDropdown } from '../common/dropdown';
const props = {
conversation_id: conversationIdDropdown,
desired_state: Property.StaticDropdown({
displayName: 'Desired State',
description:
'The state to trigger on (e.g., open, archived, deleted, assigned, etc.).',
required: true,
options: {
options: [
{ label: 'Open', value: 'open' },
{ label: 'Archived', value: 'archived' },
{ label: 'Deleted', value: 'deleted' },
{ label: 'Assigned', value: 'assigned' },
{ label: 'Unassigned', value: 'unassigned' },
],
},
}),
};
const polling: Polling<AppConnectionValueForAuthProperty<typeof frontAuth>, StaticPropsValue<typeof props>> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
const { conversation_id, desired_state } = propsValue;
const conv = await makeRequest(
auth,
HttpMethod.GET,
`/conversations/${conversation_id}`
);
const stateChangedAt = conv.updated_at
? Math.floor(Number(conv.updated_at) * 1000)
: null;
// Only emit if the state matches and it's new since last poll
if (
conv.status === desired_state &&
stateChangedAt !== null &&
(!lastFetchEpochMS || stateChangedAt > lastFetchEpochMS)
) {
return [
{
epochMilliSeconds: stateChangedAt,
data: conv,
},
];
}
return [];
},
};
export const newConversationStateChange = createTrigger({
auth: frontAuth,
name: 'newConversationStateChange',
displayName: 'New Conversation State Change',
description: 'Triggers when a conversation changes to a specified state.',
props,
sampleData: {
_links: {
self: 'https://example.api.frontapp.com/conversations/cnv_1jm05qco',
related: {
events:
'https://example.api.frontapp.com/conversations/cnv_1jm05qco/events',
followers:
'https://example.api.frontapp.com/conversations/cnv_1jm05qco/followers',
messages:
'https://example.api.frontapp.com/conversations/cnv_1jm05qco/messages',
comments:
'https://example.api.frontapp.com/conversations/cnv_1jm05qco/comments',
inboxes:
'https://example.api.frontapp.com/conversations/cnv_1jm05qco/inboxes',
last_message:
'https://example.api.frontapp.com/messages/msg_326rt3vs?referer=conversation',
},
},
id: 'cnv_1jm05qco',
subject: 'Re: test',
status: 'assigned',
status_id: 'sts_695a3s',
status_category: 'open',
ticket_ids: ['SU-2'],
assignee: {
_links: {
self: 'https://example.api.frontapp.com/teammates/tea_mfoko',
related: {
inboxes:
'https://example.api.frontapp.com/teammates/tea_mfoko/inboxes',
conversations:
'https://example.api.frontapp.com/teammates/tea_mfoko/conversations',
},
},
id: 'tea_mfoko',
email: 'jon@example.com',
username: 'jon',
first_name: 'jon',
last_name: 'deo',
is_admin: true,
is_available: true,
is_blocked: false,
type: 'user',
custom_fields: {},
},
recipient: {
_links: {
related: {
contact: 'https://example.api.frontapp.com/contacts/crd_4x1iwyw',
},
},
name: 'jon deo',
handle: 'jondeo@gmail.com',
role: 'to',
},
tags: [
{
_links: {
self: 'https://example.api.frontapp.com/tags/tag_6958vc',
related: {
conversations:
'https://example.api.frontapp.com/tags/tag_6958vc/conversations',
owner: 'https://example.api.frontapp.com/teammates/tea_mfoko',
parent_tag: null,
children: null,
},
},
id: 'tag_6958vc',
name: 'Inbox',
highlight: null,
description: null,
is_private: true,
is_visible_in_conversation_lists: false,
updated_at: 1758518633.403,
created_at: 1758518633.403,
},
{
_links: {
self: 'https://example.api.frontapp.com/tags/tag_695n8o',
related: {
conversations:
'https://example.api.frontapp.com/tags/tag_695n8o/conversations',
owner: 'https://example.api.frontapp.com/teams/tim_8t9ew',
parent_tag: null,
children: null,
},
},
id: 'tag_695n8o',
name: 'YELLOW_STAR',
highlight: null,
description: null,
is_private: false,
is_visible_in_conversation_lists: false,
updated_at: 1758532572.491,
created_at: 1758531672.777,
},
{
_links: {
self: 'https://example.api.frontapp.com/tags/tag_695n6w',
related: {
conversations:
'https://example.api.frontapp.com/tags/tag_695n6w/conversations',
owner: 'https://example.api.frontapp.com/teams/tim_8t9ew',
parent_tag: null,
children: null,
},
},
id: 'tag_695n6w',
name: 'CHAT',
highlight: null,
description: null,
is_private: false,
is_visible_in_conversation_lists: false,
updated_at: 1758532572.5,
created_at: 1758531672.726,
},
],
links: [
{
_links: {
self: 'https://example.api.frontapp.com/links/top_isetpk',
},
id: 'top_isetpk',
name: 'test update link',
type: 'web',
external_url: 'https://example.com/',
custom_fields: {},
},
],
custom_fields: {},
created_at: 1758531757.285,
waiting_since: 1758534767,
is_private: false,
scheduled_reminders: [],
metadata: {},
},
type: TriggerStrategy.POLLING,
async test(context) {
const { store, auth, propsValue, files } = context;
return await pollingHelper.test(polling, {
store,
auth,
propsValue,
files,
});
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
const { store, auth, propsValue, files } = context;
return await pollingHelper.poll(polling, {
store,
auth,
propsValue,
files,
});
},
});

View File

@@ -0,0 +1,218 @@
import {
createTrigger,
TriggerStrategy,
Property,
StaticPropsValue,
AppConnectionValueForAuthProperty,
} from '@activepieces/pieces-framework';
import {
DedupeStrategy,
HttpMethod,
Polling,
pollingHelper,
} from '@activepieces/pieces-common';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
const props = {
inbox_id: Property.ShortText({
displayName: 'Inbox ID',
description: 'The ID of the inbox to monitor for new inbound messages.',
required: false,
}),
};
const polling: Polling<AppConnectionValueForAuthProperty<typeof frontAuth>, StaticPropsValue<typeof props>> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
let query = `q[types]=inbound`;
if (propsValue.inbox_id) {
query += `&q[inboxes]=${propsValue.inbox_id}`;
}
const limit = 15;
const response = await makeRequest(
auth,
HttpMethod.GET,
`/events?${query}&limit=${limit}`
);
const events = response._results || [];
const inboundMessages: any[] = [];
for (const event of events) {
// Only include new events since last fetch
const emittedAtMs = Math.floor(Number(event.emitted_at) * 1000);
if (!lastFetchEpochMS || emittedAtMs > lastFetchEpochMS) {
inboundMessages.push({
epochMilliSeconds: emittedAtMs,
data: event,
});
}
}
return inboundMessages;
},
};
export const newInboundMessage = createTrigger({
auth: frontAuth,
name: 'newInboundMessage',
displayName: 'New Inbound Message',
description: 'Fires when a new message is received in a shared inbox.',
props,
sampleData: {
_links: {
self: 'https://api.example.com/events/evt_dummy1234',
},
id: 'evt_dummy1234',
type: 'inbound',
emitted_at: 1700000000,
conversation: {
_links: {
self: 'https://api.example.com/conversations/cnv_dummy5678',
related: {
events: 'https://api.example.com/conversations/cnv_dummy5678/events',
followers:
'https://api.example.com/conversations/cnv_dummy5678/followers',
messages:
'https://api.example.com/conversations/cnv_dummy5678/messages',
comments:
'https://api.example.com/conversations/cnv_dummy5678/comments',
inboxes:
'https://api.example.com/conversations/cnv_dummy5678/inboxes',
last_message:
'https://api.example.com/messages/msg_dummy9012?referer=conversation',
},
},
id: 'cnv_dummy5678',
subject: 'dummy subject',
status: 'open',
status_id: 'sts_dummy0001',
status_category: 'unresolved',
ticket_ids: ['tkt_dummy1111'],
assignee: 'John Doe',
recipient: {
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy2222',
},
},
name: 'Jane Doe',
handle: 'jane.doe@example.com',
role: 'to',
},
tags: ['urgent', 'test'],
links: ['https://example.com'],
custom_fields: {
priority: 'high',
},
created_at: 1700001000,
waiting_since: 1700000500,
is_private: false,
scheduled_reminders: [1700002000],
metadata: {
source: 'API',
},
},
source: {
_meta: {
type: 'inboxes',
},
data: [
{
_links: {
self: 'https://api.example.com/inboxes/inb_dummy3333',
related: {
channels:
'https://api.example.com/inboxes/inb_dummy3333/channels',
conversations:
'https://api.example.com/inboxes/inb_dummy3333/conversations',
teammates:
'https://api.example.com/inboxes/inb_dummy3333/teammates',
owner: 'https://api.example.com/teams/tim_dummy4444',
},
},
id: 'inb_dummy3333',
name: 'Dummy Inbox',
is_private: true,
is_public: false,
custom_fields: {},
address: 'dummy@example.com',
send_as: 'dummy@example.com',
type: 'gmail',
},
],
},
target: {
_meta: {
type: 'message',
},
data: {
_links: {
self: 'https://api.example.com/messages/msg_dummy9012',
related: {
conversation: 'https://api.example.com/conversations/cnv_dummy5678',
message_seen: 'https://api.example.com/messages/msg_dummy9012/seen',
},
},
id: 'msg_dummy9012',
message_uid: 'dummyuid1234567890',
type: 'email',
is_inbound: true,
created_at: 1700000100,
blurb: 'This is a dummy message generated for testing.',
body: 'This is a dummy message body.<br>',
text: 'This is a dummy message text.\n',
error_type: null,
version: '1.0',
subject: 'dummy message subject',
draft_mode: false,
metadata: {
importance: 'low',
},
author: {
name: 'Dummy Sender',
email: 'sender@example.com',
},
recipients: [
{
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy5555',
},
},
name: 'Recipient One',
handle: 'recipient1@example.com',
role: 'from',
},
{
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy6666',
},
},
name: 'Recipient Two',
handle: 'recipient2@example.com',
role: 'to',
},
],
attachments: ['file1.pdf', 'image1.png'],
signature: 'Best regards, Dummy Sender',
is_draft: false,
},
},
},
type: TriggerStrategy.POLLING,
async test(context) {
return await pollingHelper.test(polling, context);
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -0,0 +1,210 @@
import {
createTrigger,
TriggerStrategy,
Property,
StaticPropsValue,
AppConnectionValueForAuthProperty,
} from '@activepieces/pieces-framework';
import {
DedupeStrategy,
HttpMethod,
Polling,
pollingHelper,
} from '@activepieces/pieces-common';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
const props = {
inbox_id: Property.ShortText({
displayName: 'Inbox ID',
description: 'The ID of the inbox to monitor for new inbound messages.',
required: false,
}),
};
const polling: Polling<AppConnectionValueForAuthProperty<typeof frontAuth>, StaticPropsValue<typeof props>> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
// Fetch outbound and out_reply message events
let query = `q[types]=outbound`;
if (propsValue.inbox_id) {
query += `&q[inboxes]=${propsValue.inbox_id}`;
}
const limit = 15;
const response = await makeRequest(
auth,
HttpMethod.GET,
`/events?${query}&limit=${limit}`
);
const events = response._results || [];
const outboundMessages: any[] = [];
for (const event of events) {
// Only include new events since last fetch
const emittedAtMs = Math.floor(Number(event.emitted_at) * 1000);
if (!lastFetchEpochMS || emittedAtMs > lastFetchEpochMS) {
outboundMessages.push({
epochMilliSeconds: emittedAtMs,
data: event,
});
}
}
return outboundMessages;
},
};
export const newOutboundMessage = createTrigger({
auth: frontAuth,
name: 'newOutboundMessage',
displayName: 'New Outbound Message',
description: 'Fires when a message is sent or replied to in Front.',
props,
sampleData: {
_links: {
self: 'https://api.example.com/events/evt_dummy1234',
},
id: 'evt_dummy1234',
type: 'outbound',
emitted_at: 1700000000,
conversation: {
_links: {
self: 'https://api.example.com/conversations/cnv_dummy5678',
related: {
events: 'https://api.example.com/conversations/cnv_dummy5678/events',
followers:
'https://api.example.com/conversations/cnv_dummy5678/followers',
messages:
'https://api.example.com/conversations/cnv_dummy5678/messages',
comments:
'https://api.example.com/conversations/cnv_dummy5678/comments',
inboxes:
'https://api.example.com/conversations/cnv_dummy5678/inboxes',
last_message:
'https://api.example.com/messages/msg_dummy9012?referer=conversation',
},
},
id: 'cnv_dummy5678',
subject: 'unsubscribe',
status: 'archived',
status_id: 'sts_dummy0001',
status_category: 'resolved',
ticket_ids: [],
assignee: null,
recipient: {
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy2222',
},
},
name: '',
handle: 'unsubscribe_dummy@example.com',
role: 'to',
},
tags: [],
links: [],
custom_fields: {},
created_at: 1700001000,
waiting_since: 1700000000,
is_private: false,
scheduled_reminders: [],
metadata: {},
},
source: {
_meta: {
type: 'inboxes',
},
data: [
{
_links: {
self: 'https://api.example.com/inboxes/inb_dummy3333',
related: {
channels:
'https://api.example.com/inboxes/inb_dummy3333/channels',
conversations:
'https://api.example.com/inboxes/inb_dummy3333/conversations',
teammates:
'https://api.example.com/inboxes/inb_dummy3333/teammates',
owner: 'https://api.example.com/teams/tim_dummy4444',
},
},
id: 'inb_dummy3333',
name: 'Dummy Inbox',
is_private: false,
is_public: true,
custom_fields: {},
address: 'dummy@example.com',
send_as: 'dummy@example.com',
type: 'gmail',
},
],
},
target: {
_meta: {
type: 'message',
},
data: {
_links: {
self: 'https://api.example.com/messages/msg_dummy9012',
related: {
conversation: 'https://api.example.com/conversations/cnv_dummy5678',
message_seen: 'https://api.example.com/messages/msg_dummy9012/seen',
},
},
id: 'msg_dummy9012',
message_uid: 'dummyuid1234567890',
type: 'email',
is_inbound: false,
created_at: 1700000000,
blurb: 'This message was automatically generated.',
body: 'This message was automatically generated.<br>',
text: 'This message was automatically generated.\n',
error_type: null,
version: null,
subject: 'unsubscribe',
draft_mode: null,
metadata: {},
author: null,
recipients: [
{
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy5555',
},
},
name: 'Dummy Sender',
handle: 'sender@example.com',
role: 'from',
},
{
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy2222',
},
},
name: '',
handle: 'unsubscribe_dummy@example.com',
role: 'to',
},
],
attachments: [],
signature: null,
is_draft: false,
},
},
},
type: TriggerStrategy.POLLING,
async test(context) {
return await pollingHelper.test(polling, context);
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -0,0 +1,250 @@
import {
createTrigger,
TriggerStrategy,
PiecePropValueSchema,
Property,
StaticPropsValue,
AppConnectionValueForAuthProperty,
} from '@activepieces/pieces-framework';
import {
DedupeStrategy,
HttpMethod,
Polling,
pollingHelper,
} from '@activepieces/pieces-common';
import { frontAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { conversationIdDropdown } from '../common/dropdown';
const props = {
conversation_id: conversationIdDropdown,
};
const polling: Polling<AppConnectionValueForAuthProperty<typeof frontAuth>, StaticPropsValue<typeof props>> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
const params: string[] = ['q[types]=tag', 'limit=50'];
const query = params.join('&');
const response = await makeRequest(
auth,
HttpMethod.GET,
`/events?${query}`
);
const events = response._results || [];
const tagEvents: any[] = [];
for (const event of events) {
if (
event.conversation &&
event.conversation.id === propsValue.conversation_id &&
event.type === 'tag'
) {
const emittedAtMs = Math.floor(Number(event.emitted_at) * 1000);
if (!lastFetchEpochMS || emittedAtMs > lastFetchEpochMS) {
tagEvents.push({
epochMilliSeconds: emittedAtMs,
data: event,
});
}
}
}
return tagEvents;
},
};
export const newTagAddedToMessage = createTrigger({
auth: frontAuth,
name: 'newTagAddedToMessage',
displayName: 'New Tag Added to Message',
description: 'Fires when a tag is applied to a conversation.',
props,
sampleData: {
_links: {
self: 'https://api.example.com/events/evt_dummy1234',
},
id: 'evt_dummy1234',
type: 'tag',
emitted_at: 1700000000,
conversation: {
_links: {
self: 'https://api.example.com/conversations/cnv_dummy5678',
related: {
events: 'https://api.example.com/conversations/cnv_dummy5678/events',
followers:
'https://api.example.com/conversations/cnv_dummy5678/followers',
messages:
'https://api.example.com/conversations/cnv_dummy5678/messages',
comments:
'https://api.example.com/conversations/cnv_dummy5678/comments',
inboxes:
'https://api.example.com/conversations/cnv_dummy5678/inboxes',
last_message:
'https://api.example.com/messages/msg_dummy9012?referer=conversation',
},
},
id: 'cnv_dummy5678',
subject: 'Re: test',
status: 'assigned',
status_id: 'sts_dummy0001',
status_category: 'open',
ticket_ids: ['SU-2'],
assignee: {
_links: {
self: 'https://api.example.com/teammates/tea_dummy1',
related: {
inboxes: 'https://api.example.com/teammates/tea_dummy1/inboxes',
conversations:
'https://api.example.com/teammates/tea_dummy1/conversations',
},
},
id: 'tea_dummy1',
email: 'dummy.sender@example.com',
username: 'dummyuser',
first_name: 'Dummy',
last_name: 'User',
is_admin: true,
is_available: true,
is_blocked: false,
type: 'user',
custom_fields: {},
},
recipient: {
_links: {
related: {
contact: 'https://api.example.com/contacts/crd_dummy2222',
},
},
name: 'Dummy Recipient',
handle: 'recipient@example.com',
role: 'to',
},
tags: [
{
_links: {
self: 'https://api.example.com/tags/tag_dummy1',
related: {
conversations:
'https://api.example.com/tags/tag_dummy1/conversations',
owner: 'https://api.example.com/teammates/tea_dummy1',
parent_tag: null,
children: null,
},
},
id: 'tag_dummy1',
name: 'Inbox',
highlight: null,
description: null,
is_private: true,
is_visible_in_conversation_lists: false,
updated_at: 1700000100,
created_at: 1700000100,
},
{
_links: {
self: 'https://api.example.com/tags/tag_dummy2',
related: {
conversations:
'https://api.example.com/tags/tag_dummy2/conversations',
owner: 'https://api.example.com/teams/team_dummy1',
parent_tag: null,
children: null,
},
},
id: 'tag_dummy2',
name: 'YELLOW_STAR',
highlight: null,
description: null,
is_private: false,
is_visible_in_conversation_lists: false,
updated_at: 1700000200,
created_at: 1700000150,
},
{
_links: {
self: 'https://api.example.com/tags/tag_dummy3',
related: {
conversations:
'https://api.example.com/tags/tag_dummy3/conversations',
owner: 'https://api.example.com/teams/team_dummy1',
parent_tag: null,
children: null,
},
},
id: 'tag_dummy3',
name: 'CHAT',
highlight: null,
description: null,
is_private: false,
is_visible_in_conversation_lists: false,
updated_at: 1700000250,
created_at: 1700000150,
},
],
links: [
{
_links: {
self: 'https://api.example.com/links/link_dummy1',
},
id: 'link_dummy1',
name: 'test update link',
type: 'web',
external_url: 'https://example.com/',
custom_fields: {},
},
],
custom_fields: {},
created_at: 1700000050,
waiting_since: 1700000500,
is_private: false,
scheduled_reminders: [],
metadata: {},
},
source: {
_meta: {
type: 'api',
},
data: null,
},
target: {
_meta: {
type: 'tag',
},
data: {
_links: {
self: 'https://api.example.com/tags/tag_dummy3',
related: {
conversations:
'https://api.example.com/tags/tag_dummy3/conversations',
owner: 'https://api.example.com/teams/team_dummy1',
parent_tag: null,
children: null,
},
},
id: 'tag_dummy3',
name: 'CHAT',
highlight: null,
description: null,
is_private: false,
is_visible_in_conversation_lists: false,
updated_at: 1700000250,
created_at: 1700000150,
},
},
},
type: TriggerStrategy.POLLING,
async test(context) {
return await pollingHelper.test(polling, context);
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -0,0 +1,20 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"importHelpers": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"include": ["src/**/*.ts"]
}