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:
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../../../.eslintrc.base.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-zendesk-sell
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-zendesk-sell` to build the library.
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "@activepieces/piece-zendesk-sell",
|
||||
"version": "0.0.3",
|
||||
"type": "commonjs",
|
||||
"main": "./src/index.js",
|
||||
"types": "./src/index.d.ts",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0",
|
||||
"buffer": "6.0.3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "pieces-zendesk-sell",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/zendesk-sell/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/zendesk-sell",
|
||||
"tsConfig": "packages/pieces/community/zendesk-sell/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/zendesk-sell/package.json",
|
||||
"main": "packages/pieces/community/zendesk-sell/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/zendesk-sell/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/zendesk-sell/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/zendesk-sell",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "Sales CRM für Pipeline-Management, Lead Tracking und Kontaktorganisation.",
|
||||
"Email Address": "E-Mail-Adresse",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Ihre Zendesk-Login-E-Mail-Adresse.",
|
||||
"Your Zendesk Sell API Token.": "Ihr Zendesk Sell API Token.",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n Um Ihr API-Token zu erhalten:\n 1. Melden Sie sich bei Ihrem Zendesk-Verkaufs-Konto an.\n 2. Gehen Sie zu **Einstellungen > Integrationen > APIs**.\n 3. Wenn kein Token aktiv ist, klicken Sie auf **API Token**.\n 4. Kopieren Sie das **API Token**.\n \n Sie benötigen auch Ihre Login-E-Mail.\n ",
|
||||
"Create Contact": "Kontakt erstellen",
|
||||
"Create Lead": "Lead erstellen",
|
||||
"Create Deal": "Deal erstellen",
|
||||
"Update Contact": "Kontakt aktualisieren",
|
||||
"Update Deal": "Angebot aktualisieren",
|
||||
"Create Note": "Notiz erstellen",
|
||||
"Find Deal": "Deal finden",
|
||||
"Find Contact": "Kontakt finden",
|
||||
"Find Lead": "Lead finden",
|
||||
"Find Company": "Firma finden",
|
||||
"Find User": "Benutzer finden",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Create a new contact.": "Neuen Kontakt anlegen.",
|
||||
"Create a new lead record.": "Erstellen Sie einen neuen Lead-Datensatz.",
|
||||
"Create a new deal under an existing contact.": "Erstelle einen neuen Deal unter einem bestehenden Kontakt.",
|
||||
"Update fields of an existing contact.": "Felder eines bestehenden Kontakts aktualisieren.",
|
||||
"Update fields of an existing deal.": "Felder eines bestehenden Deals aktualisieren.",
|
||||
"Add a note to a deal, lead, or contact.": "Fügen Sie eine Notiz zu einem Deal, Lead oder Kontakt hinzu.",
|
||||
"Look up a deal by ID or name.": "Suchen Sie einen Deal nach ID oder Namen.",
|
||||
"Find a contact by email, name, or other identifier.": "Finden Sie einen Kontakt per E-Mail, Name oder anderen Identifikatoren.",
|
||||
"Find a lead by one or more fields.": "Finden Sie eine Führung durch ein oder mehrere Felder.",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "Findet ein Unternehmen (Organisationskontakt) per Name, E-Mail oder Telefon.",
|
||||
"Finds a user by ID, email, name, or status.": "Findet einen Benutzer nach ID, E-Mail, Name oder Status.",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Is Organization": "Ist Organisation",
|
||||
"Organization Name": "Organisationsname",
|
||||
"Last Name": "Nachname",
|
||||
"First Name": "Vorname",
|
||||
"Email": "E-Mail",
|
||||
"Phone": "Telefon",
|
||||
"Mobile Phone": "Handy",
|
||||
"Tags": "Tags",
|
||||
"Address": "Adresse",
|
||||
"Custom Fields": "Eigene Felder",
|
||||
"Other Fields": "Andere Felder",
|
||||
"Owner": "Besitzer",
|
||||
"Lead Source": "Lead Quelle",
|
||||
"Status": "Status",
|
||||
"Title": "Titel",
|
||||
"Deal Name": "Angebotsname",
|
||||
"Contact": "Kontakt",
|
||||
"Value": "Wert",
|
||||
"Currency": "Währung",
|
||||
"Pipeline": "Pipeline",
|
||||
"Stage": "Teil",
|
||||
"Hot Deal?": "Hot Deal?",
|
||||
"Customer Status": "Kundenstatus",
|
||||
"Deal": "Deal",
|
||||
"Value (Amount)": "Wert (Amount)",
|
||||
"Estimated Close Date": "Geschätztes Enddatum",
|
||||
"Resource Type": "Ressourcentyp",
|
||||
"Resource ID": "Ressourcen-ID",
|
||||
"Content": "Inhalt",
|
||||
"Important": "Wichtig",
|
||||
"Visibility": "Sichtbarkeit",
|
||||
"Deal ID": "Deal-ID",
|
||||
"Name": "Name",
|
||||
"Company Name": "Firmenname",
|
||||
"User ID": "Benutzer-ID",
|
||||
"Role": "Rolle",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopfzeilen",
|
||||
"Query Parameters": "Abfrageparameter",
|
||||
"Body": "Körper",
|
||||
"Response is Binary ?": "Antwort ist binär?",
|
||||
"No Error on Failure": "Kein Fehler bei Fehler",
|
||||
"Timeout (in seconds)": "Timeout (in Sekunden)",
|
||||
"Check this box if the contact is an organization.": "Aktivieren Sie diese Option, wenn der Kontakt eine Organisation ist.",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "Der Name der Organisation. Wird benötigt, wenn \"Ist Organisation\" ausgewählt ist.",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "Der Nachname der Person. Wird benötigt, wenn \"Ist Organisation\" nicht ausgewählt ist.",
|
||||
"The contact's primary email address.": "Die primäre E-Mail-Adresse des Kontakts.",
|
||||
"The contact's phone number.": "Die Telefonnummer des Kontakts.",
|
||||
"The contact's mobile phone number.": "Die Handynummer des Kontakts.",
|
||||
"A list of tags to associate with the record.": "Eine Liste von Tags, die mit dem Datensatz verknüpft werden sollen.",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "Ein Objekt mit Adressdetails (z. B. {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "Ein key-value Objekt für beliebige benutzerdefinierte Felder (z.B. {\"referral_website\": \"http://www.example.com\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "Geben Sie zusätzliche Felder als JSON-Objekt ein (z. B. {\"title\": \"CEO\", \"website\": \"http://example.com\"}).",
|
||||
"The lead's last name. Required if Organization Name is empty.": "Nachname des Führers. Wird benötigt, wenn der Organisationsname leer ist.",
|
||||
"The lead's organization name. Required if Last Name is empty.": "Der Name der leitenden Organisation. Benötigt, wenn Nachname leer ist.",
|
||||
"The source of the lead.": "Die Quelle der Leitung.",
|
||||
"The current status of the lead (e.g., \"New\").": "Der aktuelle Status der Lead (z.B. \"Neu\").",
|
||||
"The lead's job title.": "Der Job-Titel.",
|
||||
"The lead's email address.": "Die E-Mail-Adresse des Leads.",
|
||||
"The lead's phone number.": "Die Telefonnummer des Leiters.",
|
||||
"The lead's mobile phone number.": "Die Handynummer des Leiters.",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "Ein Objekt mit Adressdetails (z.B. {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "Ein key-value Objekt für beliebige benutzerdefinierte Felder (z.B. {\"known_via\": \"tom\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "Geben Sie zusätzliche Felder als JSON-Objekt ein (z. B. {\"description\": \"Ich kenne ihn über Tom\", \"Website\": \"http://example.com\"}).",
|
||||
"The monetary value of the deal (e.g., 15000).": "Der monetäre Wert des Deals (z.B. 15000).",
|
||||
"3-character currency code (e.g., USD).": "3-Zeichen Währungscode (z. B. USD).",
|
||||
"Check this box to mark the deal as \"hot\".": "Aktivieren Sie dieses Kästchen, um den Deal als \"Hot\" zu markieren.",
|
||||
"A key-value object for any custom fields.": "Ein Schlüssel-Wert-Objekt für beliebige benutzerdefinierte Felder.",
|
||||
"The organization's name (only used for organizational contacts).": "Der Name der Organisation (nur für organisatorische Kontakte verwendet).",
|
||||
"The contact's first name (only used for individual contacts).": "Der Vorname des Kontakts (nur für einzelne Kontakte).",
|
||||
"The contact's last name (only used for individual contacts).": "Nachname des Kontakts (wird nur für einzelne Kontakte verwendet).",
|
||||
"The monetary value of the deal (e.g., 1500).": "Der monetäre Wert des Deals (z.B. 1500).",
|
||||
"The expected close date in YYYY-MM-DD format.": "Das erwartete Enddatum im Format JJJJ-MM-TT.",
|
||||
"The type of resource to attach the note to.": "Der Typ der Ressource, an die die Notiz angehängt wird.",
|
||||
"Select the specific resource to attach the note to.": "Wählen Sie die spezifische Ressource aus, an die die Notiz angefügt werden soll.",
|
||||
"The content of the note.": "Der Inhalt der Notiz.",
|
||||
"Mark the note as important (starred).": "Markiere die Notiz als wichtig (markiert).",
|
||||
"Define the note's visibility.": "Definieren Sie die Sichtbarkeit der Note.",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "Ein Array von Tags, die zur Notiz hinzugefügt werden sollen (z.B. [\"Premium\", \"follow-up\"]).",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "Finde einen Deal durch seine eindeutige ID. (Priorisiert über Name)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "Finde einen Deal mit seinem exakten Namen. (Wird verwendet, wenn die Deal-ID nicht angegeben ist)",
|
||||
"Filter by the contact's full name or organization name.": "Filtern Sie nach dem vollständigen Namen oder der Organisation des Kontakts.",
|
||||
"Filter by lead status (e.g., \"New\").": "Filtern nach Lead Status (z. B. \"Neu\").",
|
||||
"The exact name of the company to find.": "Der genaue Name des zu findenden Unternehmens.",
|
||||
"The company's primary email address.": "Die primäre E-Mail-Adresse des Unternehmens.",
|
||||
"The company's primary phone number.": "Die primäre Telefonnummer des Unternehmens.",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "Finde einen Benutzer mit seiner eindeutigen ID. (Priorisiert über andere Felder)",
|
||||
"Find a user by their full name.": "Finde einen Benutzer mit seinem vollständigen Namen.",
|
||||
"Find a user by their email address.": "Finde einen Benutzer über seine E-Mail-Adresse.",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
|
||||
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
|
||||
"None": "Keine",
|
||||
"Current": "Aktuell",
|
||||
"Past": "Vorher",
|
||||
"Lead": "Lead",
|
||||
"Regular (Default)": "Normal (Standard)",
|
||||
"Restricted (Creator only)": "Eingeschränkt (nur Ersteller)",
|
||||
"User": "Benutzer",
|
||||
"Admin": "Admin",
|
||||
"Active": "Aktiv",
|
||||
"Inactive": "Inaktiv",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD",
|
||||
"New Contact": "Neuer Kontakt",
|
||||
"New Lead": "Neuer Lead",
|
||||
"New Deal": "Neuer Deal",
|
||||
"Updated Lead": "Aktualisierte Lead",
|
||||
"Updated Contact": "Kontakt aktualisiert",
|
||||
"Updated Deal": "Aktualisierte Deal",
|
||||
"Deal Enters New Stage": "Deal-Enters neue Phase",
|
||||
"New Note": "Neue Notiz",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Feuer, wenn ein neuer Kontakt in Zendesk Sell erstellt wird (Umfragen für neue Datensätze).",
|
||||
"Fires when a new lead is created (polls for new records).": "Feuer, wenn ein neuer Lead erstellt wird (Umfragen für neue Datensätze).",
|
||||
"Fires when a new deal is created (polls for new records).": "Feuert ab, wenn ein neuer Deal erstellt wird (Umfragen für neue Datensätze).",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "Feuer, wenn ein existierender Lead-Datensatz aktualisiert wird (Umfragen für Updates).",
|
||||
"Fires when an existing contact is updated (polls for updates).": "Feuert ab, wenn ein vorhandener Kontakt aktualisiert wird (Umfragen für Updates).",
|
||||
"Fires when an existing deal is modified (polls for updates).": "Feuert ab, wenn ein existierender Deal geändert wird (Umfragen für Updates).",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "Feuert ab, wenn ein Deal in eine bestimmte Pipeline-Phase übergeht, indem nach Updates gefragt wird.",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "Feuer, wenn eine neue Notiz zu einem Datensatz hinzugefügt wird (Lead, Kontakt, Deal) (Umfragen für neue Datensätze)."
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "CRM de ventas para gestión de tuberías, seguimiento de plomos, y organización de contactos.",
|
||||
"Email Address": "Dirección de email",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Su dirección de correo electrónico de acceso a Zendesk.",
|
||||
"Your Zendesk Sell API Token.": "Su token de la API de Zendesk Sell.",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ",
|
||||
"Create Contact": "Crear contacto",
|
||||
"Create Lead": "Crear plomo",
|
||||
"Create Deal": "Crear oferta",
|
||||
"Update Contact": "Actualizar contacto",
|
||||
"Update Deal": "Actualizar oferta",
|
||||
"Create Note": "Crear nota",
|
||||
"Find Deal": "Encontrar oferta",
|
||||
"Find Contact": "Encontrar contacto",
|
||||
"Find Lead": "Buscar plomo",
|
||||
"Find Company": "Buscar empresa",
|
||||
"Find User": "Buscar usuario",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Create a new contact.": "Crear un nuevo contacto.",
|
||||
"Create a new lead record.": "Crear un nuevo registro de inicio.",
|
||||
"Create a new deal under an existing contact.": "Crear una nueva operación bajo un contacto existente.",
|
||||
"Update fields of an existing contact.": "Actualizar campos de un contacto existente.",
|
||||
"Update fields of an existing deal.": "Actualizar campos de un trato existente.",
|
||||
"Add a note to a deal, lead, or contact.": "Añade una nota a un trato, cliente potencial o contacto.",
|
||||
"Look up a deal by ID or name.": "Busque una oferta por ID o nombre.",
|
||||
"Find a contact by email, name, or other identifier.": "Encuentre un contacto por correo electrónico, nombre u otro identificador.",
|
||||
"Find a lead by one or more fields.": "Encuentre una ventaja por uno o más campos.",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "Encuentra una empresa (contacto con la organización) por nombre, correo electrónico o teléfono.",
|
||||
"Finds a user by ID, email, name, or status.": "Encuentra un usuario por ID, correo electrónico, nombre o estado.",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Is Organization": "Es Organización",
|
||||
"Organization Name": "Nombre de la organización",
|
||||
"Last Name": "Apellido",
|
||||
"First Name": "Nombre",
|
||||
"Email": "E-mail",
|
||||
"Phone": "Teléfono",
|
||||
"Mobile Phone": "Teléfono móvil",
|
||||
"Tags": "Etiquetas",
|
||||
"Address": "Dirección",
|
||||
"Custom Fields": "Campos personalizados",
|
||||
"Other Fields": "Otros campos",
|
||||
"Owner": "Propietario",
|
||||
"Lead Source": "Fuente principal",
|
||||
"Status": "Estado",
|
||||
"Title": "Título",
|
||||
"Deal Name": "Nombre de la oferta",
|
||||
"Contact": "Contacto",
|
||||
"Value": "Valor",
|
||||
"Currency": "Moneda",
|
||||
"Pipeline": "Pipeline",
|
||||
"Stage": "Etapa",
|
||||
"Hot Deal?": "¿Oferta caliente?",
|
||||
"Customer Status": "Estado del cliente",
|
||||
"Deal": "Oferta",
|
||||
"Value (Amount)": "Valor (Monto)",
|
||||
"Estimated Close Date": "Fecha de cierre estimada",
|
||||
"Resource Type": "Tipo de recurso",
|
||||
"Resource ID": "ID de recurso",
|
||||
"Content": "Contenido",
|
||||
"Important": "Importante",
|
||||
"Visibility": "Visibilidad",
|
||||
"Deal ID": "ID de Oferta",
|
||||
"Name": "Nombre",
|
||||
"Company Name": "Nombre De La Empresa",
|
||||
"User ID": "ID Usuario",
|
||||
"Role": "Rol",
|
||||
"Method": "Método",
|
||||
"Headers": "Encabezados",
|
||||
"Query Parameters": "Parámetros de consulta",
|
||||
"Body": "Cuerpo",
|
||||
"Response is Binary ?": "¿Respuesta es binaria?",
|
||||
"No Error on Failure": "No hay ningún error en fallo",
|
||||
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
|
||||
"Check this box if the contact is an organization.": "Marque esta casilla si el contacto es una organización.",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "El nombre de la organización. Requerido si \"Es organización\" está marcado.",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "El apellido del individuo. Se requiere si \"Es organización\" no está marcado.",
|
||||
"The contact's primary email address.": "Dirección de correo electrónico principal del contacto.",
|
||||
"The contact's phone number.": "Número de teléfono del contacto.",
|
||||
"The contact's mobile phone number.": "Número de teléfono móvil del contacto.",
|
||||
"A list of tags to associate with the record.": "Una lista de etiquetas para asociar con el registro.",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "Un objeto que contiene los detalles de la dirección (por ejemplo, {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "Un objeto clave-valor para cualquier campo personalizado (por ejemplo, {\"referral_website\": \"http://www.example.com\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "Introduzca campos adicionales como un objeto JSON (por ejemplo, {\"título\": \"CEO\", \"sitio web\": \"http://ejemplo.com\"}).",
|
||||
"The lead's last name. Required if Organization Name is empty.": "El apellido del cliente inicial. Se requiere si el nombre de la organización está vacío.",
|
||||
"The lead's organization name. Required if Last Name is empty.": "El nombre de la organización del cliente. Se requiere si el apellido está vacío.",
|
||||
"The source of the lead.": "La fuente del plomo.",
|
||||
"The current status of the lead (e.g., \"New\").": "El estado actual del plomo (por ej., \"Nuevo\").",
|
||||
"The lead's job title.": "Título de la tarea del líder.",
|
||||
"The lead's email address.": "La dirección de correo electrónico de la iniciativa.",
|
||||
"The lead's phone number.": "El número de teléfono potencial.",
|
||||
"The lead's mobile phone number.": "El número de teléfono móvil del cliente.",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "Un objeto que contiene los detalles de la dirección (por ejemplo, {\"line1\": \"123 Main St\", \"ciudad\": \"Anytown\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "Un objeto clave-valor para cualquier campo personalizado (por ejemplo, {\"known_via\": \"tom\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "Introduzca campos adicionales como un objeto JSON (por ejemplo, {\"description\": \"Lo conozco a través de Tom\", \"sitio web\": \"http://example.com\"}).",
|
||||
"The monetary value of the deal (e.g., 15000).": "El valor monetario de la operación (por ejemplo, 15000).",
|
||||
"3-character currency code (e.g., USD).": "Código de moneda de 3 caracteres (por ejemplo, USD).",
|
||||
"Check this box to mark the deal as \"hot\".": "Marque esta casilla para marcar la oferta como \"caliente\".",
|
||||
"A key-value object for any custom fields.": "Un objeto clave-valor para cualquier campo personalizado.",
|
||||
"The organization's name (only used for organizational contacts).": "El nombre de la organización (sólo se utiliza para contactos organizacionales).",
|
||||
"The contact's first name (only used for individual contacts).": "Nombre del contacto (sólo se utiliza para contactos individuales).",
|
||||
"The contact's last name (only used for individual contacts).": "Apellido del contacto (sólo se utiliza para contactos individuales).",
|
||||
"The monetary value of the deal (e.g., 1500).": "El valor monetario de la operación (por ejemplo, 1500).",
|
||||
"The expected close date in YYYY-MM-DD format.": "La fecha de cierre esperada en formato AAA-MM-DD.",
|
||||
"The type of resource to attach the note to.": "El tipo de recurso al que adjuntar la nota.",
|
||||
"Select the specific resource to attach the note to.": "Seleccione el recurso específico al que adjuntar la nota.",
|
||||
"The content of the note.": "El contenido de la nota.",
|
||||
"Mark the note as important (starred).": "Marque la nota como importante (destacada).",
|
||||
"Define the note's visibility.": "Definir la visibilidad de la nota.",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "Un array de etiquetas a añadir a la nota (por ejemplo, [\"premium\", \"follow-up\"]).",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "Encuentra un trato por su ID único. (Priorizado sobre el Nombre)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "Encuentre una oferta por su nombre exacto. (Utilizado si no se proporciona ID de oferta)",
|
||||
"Filter by the contact's full name or organization name.": "Filtrar por nombre completo o nombre de la organización del contacto.",
|
||||
"Filter by lead status (e.g., \"New\").": "Filtrar por estado de plomo (por ej., \"Nuevo\").",
|
||||
"The exact name of the company to find.": "El nombre exacto de la empresa a encontrar.",
|
||||
"The company's primary email address.": "La dirección de correo electrónico principal de la empresa.",
|
||||
"The company's primary phone number.": "Número de teléfono principal de la empresa.",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "Encuentra un usuario por su ID único. (Priorizado sobre otros campos)",
|
||||
"Find a user by their full name.": "Encuentra un usuario por su nombre completo.",
|
||||
"Find a user by their email address.": "Encontrar un usuario por su dirección de correo electrónico.",
|
||||
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
||||
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDF, imágenes, etc.",
|
||||
"None": "Ninguna",
|
||||
"Current": "Actual",
|
||||
"Past": "Pasado",
|
||||
"Lead": "Plomo",
|
||||
"Regular (Default)": "Regular (por defecto)",
|
||||
"Restricted (Creator only)": "Restringido (Sólo Creador)",
|
||||
"User": "Usuario",
|
||||
"Admin": "Admin",
|
||||
"Active": "Activo",
|
||||
"Inactive": "Inactivo",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO",
|
||||
"New Contact": "Nuevo contacto",
|
||||
"New Lead": "Nuevo plomo",
|
||||
"New Deal": "Nueva oferta",
|
||||
"Updated Lead": "Prospectos actualizados",
|
||||
"Updated Contact": "Contacto actualizado",
|
||||
"Updated Deal": "Oferta actualizada",
|
||||
"Deal Enters New Stage": "Introducir nueva etapa",
|
||||
"New Note": "Nueva nota",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Dispara cuando se crea un nuevo contacto en Zendesk Sell (encuestas para nuevos registros).",
|
||||
"Fires when a new lead is created (polls for new records).": "Dispara cuando se crea un nuevo líder (encuestas para nuevos registros).",
|
||||
"Fires when a new deal is created (polls for new records).": "Dispara cuando se crea un nuevo trato (encuestas para nuevos registros).",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "Dispara cuando se actualiza un registro de inicio existente (encuestas para actualizaciones).",
|
||||
"Fires when an existing contact is updated (polls for updates).": "Dispara cuando se actualiza un contacto existente (encuestas para actualizaciones).",
|
||||
"Fires when an existing deal is modified (polls for updates).": "Dispara cuando se modifica un trato existente (encuestas para actualizaciones).",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "Dispara cuando un trato pasa a una etapa especificada de pipeline mediante la encuesta de actualizaciones.",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "Se activa cuando se agrega una nueva nota a un registro (inicio, contacto, trato) (encuestas para nuevos registros)."
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "Sales CRM pour la gestion des pipelines, le suivi des prospects et l'organisation de contact.",
|
||||
"Email Address": "Adresse e-mail",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Votre adresse e-mail de connexion Zendesk.",
|
||||
"Your Zendesk Sell API Token.": "Votre jeton API de vente Zendesk.",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ",
|
||||
"Create Contact": "Créer un contact",
|
||||
"Create Lead": "Créer Prospect",
|
||||
"Create Deal": "Créer une transaction",
|
||||
"Update Contact": "Mettre à jour le contact",
|
||||
"Update Deal": "Mettre à jour la transaction",
|
||||
"Create Note": "Créer une note",
|
||||
"Find Deal": "Trouver une offre",
|
||||
"Find Contact": "Trouver un contact",
|
||||
"Find Lead": "Trouver un prospect",
|
||||
"Find Company": "Trouver une entreprise",
|
||||
"Find User": "Trouver un utilisateur",
|
||||
"Custom API Call": "Appel d'API personnalisé",
|
||||
"Create a new contact.": "Créer un nouveau contact.",
|
||||
"Create a new lead record.": "Créer un nouvel enregistrement principal.",
|
||||
"Create a new deal under an existing contact.": "Créer une nouvelle transaction sous un contact existant.",
|
||||
"Update fields of an existing contact.": "Mettre à jour les champs d'un contact existant.",
|
||||
"Update fields of an existing deal.": "Mettre à jour les champs d'une transaction existante.",
|
||||
"Add a note to a deal, lead, or contact.": "Ajouter une note à une offre, un prospect ou un contact.",
|
||||
"Look up a deal by ID or name.": "Rechercher une transaction par ID ou nom.",
|
||||
"Find a contact by email, name, or other identifier.": "Trouver un contact par courriel, par nom ou par autre identifiant.",
|
||||
"Find a lead by one or more fields.": "Trouvez une piste par un ou plusieurs champs.",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "Trouve une entreprise (contact de l'organisme) par nom, email ou téléphone.",
|
||||
"Finds a user by ID, email, name, or status.": "Trouve un utilisateur par ID, e-mail, nom ou statut.",
|
||||
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
|
||||
"Is Organization": "Est une organisation",
|
||||
"Organization Name": "Nom de l'organisation",
|
||||
"Last Name": "Last Name",
|
||||
"First Name": "First Name",
|
||||
"Email": "Courriel",
|
||||
"Phone": "Téléphone",
|
||||
"Mobile Phone": "Téléphone mobile",
|
||||
"Tags": "Tags",
|
||||
"Address": "Adresses",
|
||||
"Custom Fields": "Champs personnalisés",
|
||||
"Other Fields": "Autres champs",
|
||||
"Owner": "Propriétaire",
|
||||
"Lead Source": "Source de plomb",
|
||||
"Status": "Statut",
|
||||
"Title": "Titre",
|
||||
"Deal Name": "Nom de la transaction",
|
||||
"Contact": "Contacter",
|
||||
"Value": "Valeur",
|
||||
"Currency": "Devise",
|
||||
"Pipeline": "Pipeline",
|
||||
"Stage": "Étape",
|
||||
"Hot Deal?": "Offre chaude?",
|
||||
"Customer Status": "Statut du client",
|
||||
"Deal": "Affaire",
|
||||
"Value (Amount)": "Valeur (montant)",
|
||||
"Estimated Close Date": "Date de clôture estimée",
|
||||
"Resource Type": "Type de ressource",
|
||||
"Resource ID": "ID de la ressource",
|
||||
"Content": "Contenus",
|
||||
"Important": "Important",
|
||||
"Visibility": "Visibilité",
|
||||
"Deal ID": "ID de la transaction",
|
||||
"Name": "Nom",
|
||||
"Company Name": "Nom de l’entreprise",
|
||||
"User ID": "Identifiant de l'utilisateur",
|
||||
"Role": "Rôle",
|
||||
"Method": "Méthode",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Paramètres de requête",
|
||||
"Body": "Body",
|
||||
"Response is Binary ?": "La réponse est Binaire ?",
|
||||
"No Error on Failure": "Aucune erreur en cas d'échec",
|
||||
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
|
||||
"Check this box if the contact is an organization.": "Cochez cette case si le contact est une organisation.",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "Le nom de l'organisation. Requis si \"Est Organisation\" est coché.",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "Le nom de famille de l'individu. Requis si \"Organisation\" n'est pas coché.",
|
||||
"The contact's primary email address.": "Adresse e-mail principale du contact.",
|
||||
"The contact's phone number.": "Le numéro de téléphone du contact.",
|
||||
"The contact's mobile phone number.": "Le numéro de téléphone portable du contact.",
|
||||
"A list of tags to associate with the record.": "Une liste de balises à associer à l'enregistrement.",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "Un objet contenant les détails d'adresse (par exemple, {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "Un objet clé pour tous les champs personnalisés (par exemple, {\"referral_website\": \"http://www.example.com\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "Entrez des champs supplémentaires en tant qu'objet JSON (par exemple, {\"title\": \"CEO\", \"site web\": \"http://example.com\"}).",
|
||||
"The lead's last name. Required if Organization Name is empty.": "Nom de famille du prospect. Requis si le nom de l'organisation est vide.",
|
||||
"The lead's organization name. Required if Last Name is empty.": "Le nom de l'organisation du prospect. Requis si le nom de famille est vide.",
|
||||
"The source of the lead.": "La source du plomb.",
|
||||
"The current status of the lead (e.g., \"New\").": "Le statut actuel de la piste (par exemple, « Nouveau »).",
|
||||
"The lead's job title.": "Le titre de poste du prospect.",
|
||||
"The lead's email address.": "L'adresse e-mail du prospect",
|
||||
"The lead's phone number.": "Le numéro de téléphone du prospect",
|
||||
"The lead's mobile phone number.": "Le numéro de téléphone portable du prospect",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "Un objet contenant les détails d'adresse (par exemple, {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "Un objet clé pour tous les champs personnalisés (par exemple, {\"known_via\": \"tom\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "Entrez des champs supplémentaires en tant qu'objet JSON (par exemple, {\"description\": \"Je le connais via Tom\", \"site web\": \"http://example.com\"}).",
|
||||
"The monetary value of the deal (e.g., 15000).": "La valeur monétaire de la transaction (par exemple, 15000).",
|
||||
"3-character currency code (e.g., USD).": "Code de devise à 3 caractères (par exemple, USD).",
|
||||
"Check this box to mark the deal as \"hot\".": "Cochez cette case pour marquer la transaction comme \"chaude\".",
|
||||
"A key-value object for any custom fields.": "Un objet clé pour tous les champs personnalisés.",
|
||||
"The organization's name (only used for organizational contacts).": "Le nom de l'organisation (utilisé uniquement pour les contacts organisationnels).",
|
||||
"The contact's first name (only used for individual contacts).": "Prénom du contact (utilisé uniquement pour les contacts individuels).",
|
||||
"The contact's last name (only used for individual contacts).": "Nom du contact (utilisé uniquement pour les contacts individuels).",
|
||||
"The monetary value of the deal (e.g., 1500).": "La valeur monétaire de la transaction (par exemple, 1500).",
|
||||
"The expected close date in YYYY-MM-DD format.": "La date de clôture prévue au format AAAA-MM-JJ.",
|
||||
"The type of resource to attach the note to.": "Le type de ressource à joindre à la note.",
|
||||
"Select the specific resource to attach the note to.": "Sélectionnez la ressource spécifique à laquelle joindre la note.",
|
||||
"The content of the note.": "Le contenu de la note.",
|
||||
"Mark the note as important (starred).": "Marquer la note comme importante (étoilée).",
|
||||
"Define the note's visibility.": "Définissez la visibilité de la note.",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "Un tableau de balises à ajouter à la note (par exemple, [\"premium\", \"suivi\"]).",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "Trouver une transaction par son ID unique. (Priorité par rapport au Nom)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "Trouver une transaction par son nom exact. (Utilisé si l'ID de la transaction n'est pas fourni)",
|
||||
"Filter by the contact's full name or organization name.": "Filtrer par le nom complet du contact ou le nom de l'organisation.",
|
||||
"Filter by lead status (e.g., \"New\").": "Filtrer par statut de prospect (par exemple, \"Nouveau\").",
|
||||
"The exact name of the company to find.": "Le nom exact de la société à trouver.",
|
||||
"The company's primary email address.": "L'adresse e-mail principale de la société.",
|
||||
"The company's primary phone number.": "Le numéro de téléphone principal de la société.",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "Trouver un utilisateur par son ID unique. (Priorité par rapport aux autres champs)",
|
||||
"Find a user by their full name.": "Trouver un utilisateur par son nom complet.",
|
||||
"Find a user by their email address.": "Trouver un utilisateur par son adresse e-mail.",
|
||||
"Authorization headers are injected automatically from your connection.": "Les Headers d'autorisation sont injectés automatiquement à partir de votre connexion.",
|
||||
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
|
||||
"None": "Aucun",
|
||||
"Current": "Actuel",
|
||||
"Past": "Passé",
|
||||
"Lead": "Prospect",
|
||||
"Regular (Default)": "Régulièrement (par défaut)",
|
||||
"Restricted (Creator only)": "Restreint (créateur uniquement)",
|
||||
"User": "Utilisateur",
|
||||
"Admin": "Administrateur",
|
||||
"Active": "Actif",
|
||||
"Inactive": "Inactif",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Contact": "Nouveau contact",
|
||||
"New Lead": "Nouveau prospect",
|
||||
"New Deal": "Nouvelle offre",
|
||||
"Updated Lead": "Prospect mis à jour",
|
||||
"Updated Contact": "Contact mis à jour",
|
||||
"Updated Deal": "Offre mise à jour",
|
||||
"Deal Enters New Stage": "Deal entre dans une nouvelle phase",
|
||||
"New Note": "Nouvelle note",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Tire quand un nouveau contact est créé dans Zendesk Sell (sondages pour de nouveaux enregistrements).",
|
||||
"Fires when a new lead is created (polls for new records).": "Tire quand un nouveau prospect est créé (sondages pour les nouveaux enregistrements).",
|
||||
"Fires when a new deal is created (polls for new records).": "Tire quand une nouvelle transaction est créée (sondages pour les nouveaux enregistrements).",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "Déclenche lorsqu'un enregistrement principal existant est mis à jour (sondages pour les mises à jour).",
|
||||
"Fires when an existing contact is updated (polls for updates).": "Déclenche lorsqu'un contact existant est mis à jour (sondages pour les mises à jour).",
|
||||
"Fires when an existing deal is modified (polls for updates).": "Tire quand une transaction existante est modifiée (sondages pour les mises à jour).",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "Se déclenche lorsqu'une transaction passe dans une étape de pipeline spécifiée par sondage pour les mises à jour.",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "Se déclenche lorsqu'une nouvelle note est ajoutée à un dossier (plomb, contact, deal) (sondages pour les nouveaux dossiers)."
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "パイプライン管理、リード追跡、連絡先組織用のセールスCRM。",
|
||||
"Email Address": "メールアドレス",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Zendeskログイン用メールアドレスです。",
|
||||
"Your Zendesk Sell API Token.": "ZendeskはAPIトークンを販売します。",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ",
|
||||
"Create Contact": "連絡先を作成",
|
||||
"Create Lead": "リードを作成",
|
||||
"Create Deal": "取引を作成",
|
||||
"Update Contact": "連絡先を更新",
|
||||
"Update Deal": "取引を更新",
|
||||
"Create Note": "ノートを作成",
|
||||
"Find Deal": "取引を探す",
|
||||
"Find Contact": "連絡先を探す",
|
||||
"Find Lead": "リードを見つける",
|
||||
"Find Company": "会社を検索",
|
||||
"Find User": "ユーザーを検索",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Create a new contact.": "新しい連絡先を作成します。",
|
||||
"Create a new lead record.": "新しいリードレコードを作成します。",
|
||||
"Create a new deal under an existing contact.": "既存の連絡先の下に新しい取引を作成します。",
|
||||
"Update fields of an existing contact.": "既存のコンタクトのフィールドを更新します。",
|
||||
"Update fields of an existing deal.": "既存の取引のフィールドを更新します。",
|
||||
"Add a note to a deal, lead, or contact.": "取引、リード、または連絡先にメモを追加します。",
|
||||
"Look up a deal by ID or name.": "IDまたは名前で取引を検索します。",
|
||||
"Find a contact by email, name, or other identifier.": "電子メール、名前、またはその他の識別子で連絡先を検索します。",
|
||||
"Find a lead by one or more fields.": "1つまたは複数のフィールドでリードを見つけます。",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "会社(組織の連絡先)を名前、メールアドレス、または電話番号で検索します。",
|
||||
"Finds a user by ID, email, name, or status.": "ID、メールアドレス、名前、ステータスでユーザーを検索します。",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Is Organization": "組織",
|
||||
"Organization Name": "組織名",
|
||||
"Last Name": "Last Name",
|
||||
"First Name": "名",
|
||||
"Email": "Eメールアドレス",
|
||||
"Phone": "電話番号",
|
||||
"Mobile Phone": "携帯電話",
|
||||
"Tags": "タグ",
|
||||
"Address": "住所",
|
||||
"Custom Fields": "カスタムフィールド",
|
||||
"Other Fields": "他のフィールド",
|
||||
"Owner": "所有者",
|
||||
"Lead Source": "リードソース",
|
||||
"Status": "ステータス",
|
||||
"Title": "タイトル",
|
||||
"Deal Name": "取引名",
|
||||
"Contact": "お問い合わせ",
|
||||
"Value": "値",
|
||||
"Currency": "通貨",
|
||||
"Pipeline": "パイプライン",
|
||||
"Stage": "ステージ",
|
||||
"Hot Deal?": "ホットディール?",
|
||||
"Customer Status": "顧客ステータス",
|
||||
"Deal": "取引",
|
||||
"Value (Amount)": "値 (金額)",
|
||||
"Estimated Close Date": "終了予定日",
|
||||
"Resource Type": "リソースタイプ",
|
||||
"Resource ID": "リソースID",
|
||||
"Content": "コンテンツ",
|
||||
"Important": "重要",
|
||||
"Visibility": "公開範囲",
|
||||
"Deal ID": "取引ID",
|
||||
"Name": "Name",
|
||||
"Company Name": "会社名",
|
||||
"User ID": "ユーザー ID",
|
||||
"Role": "ロール",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Check this box if the contact is an organization.": "連絡先が組織の場合は、このボックスにチェックを入れます。",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "組織の名前。「組織です」がチェックされている場合に必要です。",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "個人の姓。「組織である」がチェックされていない場合に必要です。",
|
||||
"The contact's primary email address.": "連絡先のプライマリメールアドレス。",
|
||||
"The contact's phone number.": "連絡先の電話番号",
|
||||
"The contact's mobile phone number.": "連絡先の携帯電話番号",
|
||||
"A list of tags to associate with the record.": "レコードに関連付けるタグのリスト",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "住所の詳細を含むオブジェクト (例: {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "任意のカスタムフィールドのキー値オブジェクト(例:{\"referral_website\": \"http://www.example.com\"})",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "JSON オブジェクトとして追加のフィールドを入力してください(例: {\"title\": \"CEO\", \"website\": \"http://example.com\"})。",
|
||||
"The lead's last name. Required if Organization Name is empty.": "リードの苗字。取引先名が空の場合に必要です。",
|
||||
"The lead's organization name. Required if Last Name is empty.": "リードの組織名。姓が空の場合に必要です。",
|
||||
"The source of the lead.": "鉛の源。",
|
||||
"The current status of the lead (e.g., \"New\").": "リードの現在のステータス (例: 「新規」)。",
|
||||
"The lead's job title.": "リードの仕事の肩書き。",
|
||||
"The lead's email address.": "リードのメールアドレス。",
|
||||
"The lead's phone number.": "リードの電話番号",
|
||||
"The lead's mobile phone number.": "リードの携帯電話番号。",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "アドレスの詳細を含むオブジェクト(例:{\"line1\": \"123 Main St\", \"city\": \"Anytown\"})。",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "任意のカスタムフィールドのキー値オブジェクト(例:{\"known_via\": \"tom\"})。",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "JSON オブジェクトとして追加のフィールドを入力してください(例: {\"description\": \"Tom経由で彼を知っています\", \"website\": \"http://example.com\"})。",
|
||||
"The monetary value of the deal (e.g., 15000).": "取引の金銭的価値(例:15000)。",
|
||||
"3-character currency code (e.g., USD).": "3文字の通貨コード(例:USD)",
|
||||
"Check this box to mark the deal as \"hot\".": "このチェックボックスをオンにして、取引を「ホット」としてマークしてください。",
|
||||
"A key-value object for any custom fields.": "任意のカスタムフィールドのキー値オブジェクト。",
|
||||
"The organization's name (only used for organizational contacts).": "組織名 (組織の連絡先にのみ使用)",
|
||||
"The contact's first name (only used for individual contacts).": "連絡先の名 (個々の連絡先にのみ使用)",
|
||||
"The contact's last name (only used for individual contacts).": "連絡先の姓 (個々の連絡先にのみ使用)",
|
||||
"The monetary value of the deal (e.g., 1500).": "取引の金銭的価値(例:1500)。",
|
||||
"The expected close date in YYYY-MM-DD format.": "YYYY-MM-DD形式で終了する予定です。",
|
||||
"The type of resource to attach the note to.": "ノートを添付するリソースのタイプ",
|
||||
"Select the specific resource to attach the note to.": "ノートを添付する特定のリソースを選択します。",
|
||||
"The content of the note.": "ノートの内容。",
|
||||
"Mark the note as important (starred).": "ノートを重要(スターレッド)としてマークします。",
|
||||
"Define the note's visibility.": "ノートの可視性を定義します。",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "ノートに追加するタグの配列 (例: [\"premium\", \"follow-up\"])。",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "一意のIDで取引を見つけます。(名前より優先)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "正確な名前で取引を検索します。(ディールIDが指定されていない場合に使用されます)",
|
||||
"Filter by the contact's full name or organization name.": "連絡先のフルネームまたは組織名でフィルタリングします。",
|
||||
"Filter by lead status (e.g., \"New\").": "リードステータスでフィルタリングします(例:「新規」)。",
|
||||
"The exact name of the company to find.": "見つける会社の正確な名前。",
|
||||
"The company's primary email address.": "会社のプライマリメールアドレス。",
|
||||
"The company's primary phone number.": "会社の主要な電話番号。",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "一意のIDでユーザーを見つけます。(他のフィールドより優先されます)",
|
||||
"Find a user by their full name.": "自分のフルネームでユーザーを検索します。",
|
||||
"Find a user by their email address.": "メールアドレスでユーザーを見つけます。",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"None": "なし",
|
||||
"Current": "現在",
|
||||
"Past": "過去",
|
||||
"Lead": "リード",
|
||||
"Regular (Default)": "標準 (デフォルト)",
|
||||
"Restricted (Creator only)": "制限付き(クリエイターのみ)",
|
||||
"User": "ユーザー",
|
||||
"Admin": "管理者",
|
||||
"Active": "有効",
|
||||
"Inactive": "非アクティブ",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭",
|
||||
"New Contact": "新しい連絡先",
|
||||
"New Lead": "新しいリード",
|
||||
"New Deal": "新しい取引",
|
||||
"Updated Lead": "更新されたリード",
|
||||
"Updated Contact": "連絡先の更新",
|
||||
"Updated Deal": "更新された取引",
|
||||
"Deal Enters New Stage": "取引が新しいステージに入る",
|
||||
"New Note": "新しいメモ",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Zendesk Sell (新しいレコードのアンケート) で新しい連絡先が作成されたときに発生します。",
|
||||
"Fires when a new lead is created (polls for new records).": "新しいリードが作成されたときに発生します(新しいレコードのアンケート)。",
|
||||
"Fires when a new deal is created (polls for new records).": "新しい取引が作成されたときに発生します(新しいレコードの投票)。",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "既存のリードレコードが更新されたときに発行されます(更新のためにアンケート)。",
|
||||
"Fires when an existing contact is updated (polls for updates).": "既存の連絡先が更新されたときに発行されます(更新のポーリング)。",
|
||||
"Fires when an existing deal is modified (polls for updates).": "既存の取引が変更されたときに発生します(更新の投票)。",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "ディールが指定されたパイプラインステージに移行したときに、更新をポーリングします。",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "新しいノートがレコード (リード、取引、取引) に追加されたときに発生します。"
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "Sales CRM for pipeline management, lead tracking, and contact organisatie.",
|
||||
"Email Address": "Uw e-mailadres",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Uw Zendesk login e-mailadres.",
|
||||
"Your Zendesk Sell API Token.": "Uw Zendesk Sell API-sleutel.",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n Om je API token te verkrijgen:\n 1. Log in op je Zendesk Sell account.\n 2. Ga naar **Instellingen > Integraties > API**.\n 3. Als er geen token actief is, klik dan op **Voeg API Token toe**.\n 4. Kopieer de **API Token**.\n \n U heeft ook uw inlog-e-mailadres nodig.\n ",
|
||||
"Create Contact": "Contactpersoon aanmaken",
|
||||
"Create Lead": "Maak Lead",
|
||||
"Create Deal": "Transactie aanmaken",
|
||||
"Update Contact": "Contactpersoon bijwerken",
|
||||
"Update Deal": "Update Deal",
|
||||
"Create Note": "Notitie aanmaken",
|
||||
"Find Deal": "Zoek aanbieding",
|
||||
"Find Contact": "Contactpersoon zoeken",
|
||||
"Find Lead": "Zoek Lead",
|
||||
"Find Company": "Bedrijf zoeken",
|
||||
"Find User": "Gebruiker zoeken",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a new contact.": "Maak een nieuw contact aan.",
|
||||
"Create a new lead record.": "Maak een nieuw lead record",
|
||||
"Create a new deal under an existing contact.": "Maak een nieuwe deal onder een bestaand contact.",
|
||||
"Update fields of an existing contact.": "Velden van een bestaand contact bijwerken.",
|
||||
"Update fields of an existing deal.": "Update de velden van een bestaande deal.",
|
||||
"Add a note to a deal, lead, or contact.": "Voeg een notitie toe aan een deal, lead of contact.",
|
||||
"Look up a deal by ID or name.": "Zoek een transactie op ID of naam.",
|
||||
"Find a contact by email, name, or other identifier.": "Zoek een contactpersoon per e-mail, naam of andere identificatie.",
|
||||
"Find a lead by one or more fields.": "Vind een lead bij een of meer velden.",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "Vindt een bedrijf (organisatie contact) per naam, e-mail of telefoon.",
|
||||
"Finds a user by ID, email, name, or status.": "Vindt een gebruiker via ID, e-mail, naam of status.",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Is Organization": "Is organisatie",
|
||||
"Organization Name": "Naam organisatie",
|
||||
"Last Name": "Achternaam",
|
||||
"First Name": "Voornaam",
|
||||
"Email": "E-mail",
|
||||
"Phone": "Telefoonnummer",
|
||||
"Mobile Phone": "Telefoon (mobiel)",
|
||||
"Tags": "Labels",
|
||||
"Address": "Adres:",
|
||||
"Custom Fields": "Aangepaste velden",
|
||||
"Other Fields": "Andere velden",
|
||||
"Owner": "Eigenaar",
|
||||
"Lead Source": "Lead bron",
|
||||
"Status": "status",
|
||||
"Title": "Aanspreektitel",
|
||||
"Deal Name": "Deal Naam",
|
||||
"Contact": "Contactpersoon",
|
||||
"Value": "Waarde",
|
||||
"Currency": "valuta",
|
||||
"Pipeline": "Pijplijn",
|
||||
"Stage": "Speelveld",
|
||||
"Hot Deal?": "Populaire deals",
|
||||
"Customer Status": "Klant status",
|
||||
"Deal": "Koopjes",
|
||||
"Value (Amount)": "Waarde (koppelen)",
|
||||
"Estimated Close Date": "Geschatte sluitingsdatum",
|
||||
"Resource Type": "Type bron",
|
||||
"Resource ID": "Document ID",
|
||||
"Content": "Inhoud",
|
||||
"Important": "Belangrijke",
|
||||
"Visibility": "Zichtbaarheid",
|
||||
"Deal ID": "Deal ID",
|
||||
"Name": "Naam",
|
||||
"Company Name": "Bedrijfsnaam",
|
||||
"User ID": "Gebruiker ID",
|
||||
"Role": "Functie",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopteksten",
|
||||
"Query Parameters": "Query parameters",
|
||||
"Body": "Lichaam",
|
||||
"Response is Binary ?": "Antwoord is binair?",
|
||||
"No Error on Failure": "Geen fout bij fout",
|
||||
"Timeout (in seconds)": "Time-out (in seconden)",
|
||||
"Check this box if the contact is an organization.": "Vink dit vakje aan als het contact een organisatie is.",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "De naam van de organisatie. Vereist als \"Is Organisatie\" is gecontroleerd.",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "De achternaam van het individu. Vereist als \"Is Organisatie\" niet is aangevinkt.",
|
||||
"The contact's primary email address.": "E-mailadres van de contactpersoon",
|
||||
"The contact's phone number.": "Telefoonnummer van de contactpersoon",
|
||||
"The contact's mobile phone number.": "Mobiel nummer van de contactpersoon",
|
||||
"A list of tags to associate with the record.": "Een lijst van tags te koppelen aan het record.",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "Een object met adresdetails (bijv. {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"land\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "Een sleutel-waarde object voor elke aangepaste velden (bijv. {\"referral_website\": \"http://www.example.com\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "Voer extra velden in als een JSON-object (bijv. {\"title\": \"CEO\", \"website\": \"http://example.com\"}).",
|
||||
"The lead's last name. Required if Organization Name is empty.": "Achternaam van de leiding. Vereist als naam van de organisatie leeg is.",
|
||||
"The lead's organization name. Required if Last Name is empty.": "Naam van de leiding. Vereist als achternaam leeg is.",
|
||||
"The source of the lead.": "De bron van het lead",
|
||||
"The current status of the lead (e.g., \"New\").": "De huidige status van de lead (bijv. \"Nieuw\").",
|
||||
"The lead's job title.": "De titel van de leiding.",
|
||||
"The lead's email address.": "E-mailadres van de lead",
|
||||
"The lead's phone number.": "Telefoonnummer van de lead",
|
||||
"The lead's mobile phone number.": "GSM-nummer van de lead",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "Een object met adresdetails (bijv. {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "Een sleutelwaarde object voor elke aangepaste velden (bijv. {\"known_via\": \"tom\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "Voer extra velden in als een JSON-object (bijv. {\"description\": \"Ik ken hem via Tom\", \"website\": \"http://example.com\"}).",
|
||||
"The monetary value of the deal (e.g., 15000).": "De monetaire waarde van de transactie (bijv. 15000).",
|
||||
"3-character currency code (e.g., USD).": "3-karakter valutacode (bijv. USD).",
|
||||
"Check this box to mark the deal as \"hot\".": "Vink dit vakje aan om de deal als \"hot\" te markeren.",
|
||||
"A key-value object for any custom fields.": "Een sleutelwaarde object voor alle aangepaste velden.",
|
||||
"The organization's name (only used for organizational contacts).": "Naam van de organisatie (wordt alleen gebruikt voor contacten binnen de organisatie).",
|
||||
"The contact's first name (only used for individual contacts).": "Voornaam van de contactpersoon (wordt alleen gebruikt voor individuele contactpersonen).",
|
||||
"The contact's last name (only used for individual contacts).": "Achternaam van de contactpersoon (wordt alleen gebruikt voor individuele contactpersonen).",
|
||||
"The monetary value of the deal (e.g., 1500).": "De monetaire waarde van de deal (bijv. 1500).",
|
||||
"The expected close date in YYYY-MM-DD format.": "De verwachte sluitingsdatum in YYYY-MM-DD formaat.",
|
||||
"The type of resource to attach the note to.": "Het type bron waaraan u de notitie wilt koppelen.",
|
||||
"Select the specific resource to attach the note to.": "Selecteer de specifieke bron waaraan u de notitie wilt koppelen.",
|
||||
"The content of the note.": "De inhoud van de notitie.",
|
||||
"Mark the note as important (starred).": "Markeer de notitie als belangrijk (ster).",
|
||||
"Define the note's visibility.": "Definieer de zichtbaarheid van de notitie.",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "Een reeks tags om aan de notitie toe te voegen (bijv. [\"premium\", \"follow-up\"]).",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "Vind een deal met zijn unieke ID. (Prioritized overName)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "Zoek een deal op de exacte naam. (Gebruikt als de Deal ID niet wordt verstrekt)",
|
||||
"Filter by the contact's full name or organization name.": "Filter op de volledige naam of organisatienaam van de contactpersoon.",
|
||||
"Filter by lead status (e.g., \"New\").": "Filter op lead status (bijv. \"Nieuw\").",
|
||||
"The exact name of the company to find.": "De exacte naam van het bedrijf om te vinden.",
|
||||
"The company's primary email address.": "E-mailadres van het bedrijf.",
|
||||
"The company's primary phone number.": "Het primaire telefoonnummer van het bedrijf.",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "Vind een gebruiker op basis van hun unieke ID. (Prioritized over andere velden)",
|
||||
"Find a user by their full name.": "Zoek een gebruiker op hun volledige naam.",
|
||||
"Find a user by their email address.": "Zoek een gebruiker op zijn e-mailadres.",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
|
||||
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
|
||||
"None": "geen",
|
||||
"Current": "Stroom",
|
||||
"Past": "Verleden",
|
||||
"Lead": "Lood",
|
||||
"Regular (Default)": "Normaal (standaard)",
|
||||
"Restricted (Creator only)": "Beperkt (alleen maker)",
|
||||
"User": "Gebruiker",
|
||||
"Admin": "Admin",
|
||||
"Active": "Actief",
|
||||
"Inactive": "Inactief",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD",
|
||||
"New Contact": "Nieuw contactpersoon",
|
||||
"New Lead": "Nieuwe Lead",
|
||||
"New Deal": "Nieuwe deal",
|
||||
"Updated Lead": "Bijgewerkt Lead",
|
||||
"Updated Contact": "Contact bijgewerkt",
|
||||
"Updated Deal": "Bijgewerkt Deal",
|
||||
"Deal Enters New Stage": "Deal Enters Nieuw Fase",
|
||||
"New Note": "Nieuwe notitie",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Vuurt wanneer een nieuw contact wordt gemaakt in de Zendesk Sell (polls voor nieuwe records).",
|
||||
"Fires when a new lead is created (polls for new records).": "Vuurt wanneer een nieuwe lead wordt gemaakt (polls voor nieuwe records).",
|
||||
"Fires when a new deal is created (polls for new records).": "Vuurt wanneer een nieuwe deal wordt gemaakt (polls voor nieuwe records).",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "Vuurt wanneer een bestaand lead record wordt bijgewerkt (polls voor updates).",
|
||||
"Fires when an existing contact is updated (polls for updates).": "Vuurt wanneer een bestaand contact wordt bijgewerkt (polls voor updates).",
|
||||
"Fires when an existing deal is modified (polls for updates).": "Vuurt wanneer een bestaande transactie wordt gewijzigd (polls voor updates).",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "Vuurt wanneer een transactie overgaat naar een bepaald pijplijnstadium door te stemmen voor updates.",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "Vuurt wanneer een nieuwe notitie wordt toegevoegd aan een record (looad, contact, deal) (polls voor nieuwe records)."
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "CRM de vendas para gestão de pipelines, rastreamento de Lead e organização de contato.",
|
||||
"Email Address": "Endereço de e-mail",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Seu endereço de e-mail de login do Zendesk",
|
||||
"Your Zendesk Sell API Token.": "Sua API de Venda do Zendesk Token.",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n Para obter o seu token de API:\n 1. Inicie a sessão com a sua conta Zendesk.\n 2. Vá para **Configurações > Integrações > APIs**.\n 3. Se nenhum token estiver ativo, clique em **Adicionar API Token**.\n 4. Copie o **API Token**.\n \n Você também precisa de seu e-mail de login.\n ",
|
||||
"Create Contact": "Criar contato",
|
||||
"Create Lead": "Criar Potencial",
|
||||
"Create Deal": "Criar oferta",
|
||||
"Update Contact": "Atualizar contato",
|
||||
"Update Deal": "Atualizar Oferta",
|
||||
"Create Note": "Criar Nota",
|
||||
"Find Deal": "Encontrar oferta",
|
||||
"Find Contact": "Localizar contato",
|
||||
"Find Lead": "Encontrar Potencial",
|
||||
"Find Company": "Encontrar empresa",
|
||||
"Find User": "Localizar usuário",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Create a new contact.": "Criar um novo contato.",
|
||||
"Create a new lead record.": "Cria um novo registro chumbo.",
|
||||
"Create a new deal under an existing contact.": "Criar uma nova operação sob um contato existente.",
|
||||
"Update fields of an existing contact.": "Atualizar campos de um contato existente.",
|
||||
"Update fields of an existing deal.": "Atualizar campos de um negócio existente.",
|
||||
"Add a note to a deal, lead, or contact.": "Adicione uma nota a um negócio, potencial ou contato.",
|
||||
"Look up a deal by ID or name.": "Procurar uma oferta por ID ou nome.",
|
||||
"Find a contact by email, name, or other identifier.": "Localizar contato por e-mail, nome ou outro identificador.",
|
||||
"Find a lead by one or more fields.": "Encontre uma liderança em um ou mais campos.",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "Encontra uma empresa (contato organizacional) por nome, e-mail ou telefone.",
|
||||
"Finds a user by ID, email, name, or status.": "Encontra um usuário por ID, e-mail, nome ou status.",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Is Organization": "É uma organização",
|
||||
"Organization Name": "Nome Da Organização",
|
||||
"Last Name": "Sobrenome",
|
||||
"First Name": "Nome",
|
||||
"Email": "e-mail",
|
||||
"Phone": "Smartphone",
|
||||
"Mobile Phone": "Telefone Celular",
|
||||
"Tags": "Etiquetas",
|
||||
"Address": "Endereço",
|
||||
"Custom Fields": "Campos Personalizados",
|
||||
"Other Fields": "Outros campos",
|
||||
"Owner": "Proprietário",
|
||||
"Lead Source": "Fonte do Lead",
|
||||
"Status": "Estado",
|
||||
"Title": "Título",
|
||||
"Deal Name": "Nome da oferta",
|
||||
"Contact": "contato",
|
||||
"Value": "Valor",
|
||||
"Currency": "moeda",
|
||||
"Pipeline": "Pipeline",
|
||||
"Stage": "Etapa",
|
||||
"Hot Deal?": "Quente negócio?",
|
||||
"Customer Status": "Status do cliente",
|
||||
"Deal": "Negócio",
|
||||
"Value (Amount)": "Valor (Valor)",
|
||||
"Estimated Close Date": "Data estimada de fechamento",
|
||||
"Resource Type": "Tipo de Recurso",
|
||||
"Resource ID": "ID do Recurso",
|
||||
"Content": "Conteúdo",
|
||||
"Important": "Importante",
|
||||
"Visibility": "Visibilidade",
|
||||
"Deal ID": "ID da oferta",
|
||||
"Name": "Nome",
|
||||
"Company Name": "Nome da Empresa",
|
||||
"User ID": "ID de usuário",
|
||||
"Role": "Funções",
|
||||
"Method": "Método",
|
||||
"Headers": "Cabeçalhos",
|
||||
"Query Parameters": "Parâmetros da consulta",
|
||||
"Body": "Conteúdo",
|
||||
"Response is Binary ?": "A resposta é binária ?",
|
||||
"No Error on Failure": "Nenhum erro no Failure",
|
||||
"Timeout (in seconds)": "Tempo limite (em segundos)",
|
||||
"Check this box if the contact is an organization.": "Marque esta caixa se o contato é uma organização.",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "O nome da organização. Obrigatório se \"É Organização\" está marcado.",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "O sobrenome do indivíduo. Necessário se \\\"É Organização\\\" não está marcado.",
|
||||
"The contact's primary email address.": "E-mail principal do contato.",
|
||||
"The contact's phone number.": "Número de telefone do contato.",
|
||||
"The contact's mobile phone number.": "Número de telefone celular do contato.",
|
||||
"A list of tags to associate with the record.": "Uma lista de tags para associar com o registro.",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "Um objeto contendo detalhes do endereço (por exemplo, {\"line1\": \"2726 Rua de Smith, \"city\": \"Hyannis\", \"country\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "Um objeto chave-valor para quaisquer campos personalizados (por exemplo, {\"referral_website\": \"http://www.example.com\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "Digite os campos adicionais como um objeto JSON (por exemplo, {\"title\": \"CEO\", \"website\": \"http://example.com\"}).",
|
||||
"The lead's last name. Required if Organization Name is empty.": "Sobrenome do chumbo. Necessário se o nome da organização estiver vazio.",
|
||||
"The lead's organization name. Required if Last Name is empty.": "Nome de organização do cliente obrigatório. Obrigatório se o sobrenome estiver vazio.",
|
||||
"The source of the lead.": "A fonte da chumbo.",
|
||||
"The current status of the lead (e.g., \"New\").": "O status atual do lead (ex.: \"Novo\").",
|
||||
"The lead's job title.": "O título do cargo do chefe.",
|
||||
"The lead's email address.": "Endereço de e-mail do chumbo.",
|
||||
"The lead's phone number.": "Número de telefone do chumbo.",
|
||||
"The lead's mobile phone number.": "Número de celular do chumbo.",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "Um objeto contendo detalhes do endereço (por exemplo, {\"line1\": \"123 St\", \"city\": \"Anytown\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "Um objeto chave-valor para quaisquer campos personalizados (por exemplo, {\"known_via\": \"tom\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "Digite os campos adicionais como um objeto JSON (por exemplo, {\"description\": \"Eu o conheço via Tom\", \"website\": \"http://example.com\"}).",
|
||||
"The monetary value of the deal (e.g., 15000).": "O valor monetário da operação (por exemplo, 15000).",
|
||||
"3-character currency code (e.g., USD).": "Código da moeda 3-caractere (ex.: USD).",
|
||||
"Check this box to mark the deal as \"hot\".": "Marque esta caixa para marcar a oferta como \"hot\".",
|
||||
"A key-value object for any custom fields.": "Um objeto chave-valor para quaisquer campos personalizados.",
|
||||
"The organization's name (only used for organizational contacts).": "Nome da organização (usado apenas para contatos organizacionais).",
|
||||
"The contact's first name (only used for individual contacts).": "O primeiro nome do contato (usado apenas para contatos individuais).",
|
||||
"The contact's last name (only used for individual contacts).": "O sobrenome do contato (usado apenas para contatos individuais).",
|
||||
"The monetary value of the deal (e.g., 1500).": "O valor monetário da operação (por exemplo, 1500).",
|
||||
"The expected close date in YYYY-MM-DD format.": "A data de fechamento esperada no formato AAAA-MM-DD.",
|
||||
"The type of resource to attach the note to.": "O tipo de recurso para anexar a nota.",
|
||||
"Select the specific resource to attach the note to.": "Selecione o recurso específico para anexar a nota.",
|
||||
"The content of the note.": "O conteúdo da nota.",
|
||||
"Mark the note as important (starred).": "Marcar a nota como importante (favorita).",
|
||||
"Define the note's visibility.": "Defina a visibilidade da nota.",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "Um array de tags para adicionar à nota (por exemplo, [\"premium\", \"follow-up\"]).",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "Encontrar uma venda por sua ID única. (Priorizado sobre Nome)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "Encontre uma oferta pelo seu nome exato. (Usado se o ID da Oferta não for fornecido)",
|
||||
"Filter by the contact's full name or organization name.": "Filtre pelo nome completo do contato ou nome de organização.",
|
||||
"Filter by lead status (e.g., \"New\").": "Filtrar por status do lead (ex: \"Novo\").",
|
||||
"The exact name of the company to find.": "O nome exato da empresa para encontrar.",
|
||||
"The company's primary email address.": "O endereço de e-mail principal da empresa.",
|
||||
"The company's primary phone number.": "O número de telefone principal da empresa.",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "Encontrar um usuário por sua ID única. (Priorizado sobre outros campos)",
|
||||
"Find a user by their full name.": "Encontrar um usuário com seu nome completo.",
|
||||
"Find a user by their email address.": "Encontrar um usuário com o endereço de e-mail dele.",
|
||||
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
|
||||
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
|
||||
"None": "Nenhuma",
|
||||
"Current": "Atual",
|
||||
"Past": "Passado",
|
||||
"Lead": "Conduzir",
|
||||
"Regular (Default)": "Regular (Padrão)",
|
||||
"Restricted (Creator only)": "Restrito (Somente Criador)",
|
||||
"User": "Usuário",
|
||||
"Admin": "Admin",
|
||||
"Active": "Ativo",
|
||||
"Inactive": "Inativo",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA",
|
||||
"New Contact": "Novo Contato",
|
||||
"New Lead": "Novo Potencial",
|
||||
"New Deal": "Nova Oferta",
|
||||
"Updated Lead": "Lead atualizado",
|
||||
"Updated Contact": "Contato atualizado",
|
||||
"Updated Deal": "Oferta atualizada",
|
||||
"Deal Enters New Stage": "Negócio Novo Estágio",
|
||||
"New Note": "Nova anotação",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Atira quando um novo contato é criado em Zendesk Sell (enquetes para novos registros).",
|
||||
"Fires when a new lead is created (polls for new records).": "Atira quando uma nova vantagem é criada (enquetes para novos registros).",
|
||||
"Fires when a new deal is created (polls for new records).": "Atira quando uma nova oferta é criada (enquete para novos registros).",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "Atira quando um registro de lead existente é atualizado (enquetes para atualizações).",
|
||||
"Fires when an existing contact is updated (polls for updates).": "Atira quando um contato existente é atualizado (enquetes para atualizações).",
|
||||
"Fires when an existing deal is modified (polls for updates).": "Atira quando uma oferta existente é modificada (enquetes para atualizações).",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "Atira quando uma transação de transição para um estágio específico de pipeline sondando por atualizações.",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "Atira quando uma nova nota é adicionada a um registro (chumbo, contato, promoção) (enquete para novos registros)."
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "Sales CRM for pipeline management, lead tracking, and contact organization.",
|
||||
"Email Address": "Email Address",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Your Zendesk login email address.",
|
||||
"Your Zendesk Sell API Token.": "Your Zendesk Sell API Token.",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ",
|
||||
"Create Contact": "Create Contact",
|
||||
"Create Lead": "Create Lead",
|
||||
"Create Deal": "Create Deal",
|
||||
"Update Contact": "Update Contact",
|
||||
"Update Deal": "Update Deal",
|
||||
"Create Note": "Create Note",
|
||||
"Find Deal": "Find Deal",
|
||||
"Find Contact": "Find Contact",
|
||||
"Find Lead": "Find Lead",
|
||||
"Find Company": "Find Company",
|
||||
"Find User": "Find User",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a new contact.": "Create a new contact.",
|
||||
"Create a new lead record.": "Create a new lead record.",
|
||||
"Create a new deal under an existing contact.": "Create a new deal under an existing contact.",
|
||||
"Update fields of an existing contact.": "Update fields of an existing contact.",
|
||||
"Update fields of an existing deal.": "Update fields of an existing deal.",
|
||||
"Add a note to a deal, lead, or contact.": "Add a note to a deal, lead, or contact.",
|
||||
"Look up a deal by ID or name.": "Look up a deal by ID or name.",
|
||||
"Find a contact by email, name, or other identifier.": "Find a contact by email, name, or other identifier.",
|
||||
"Find a lead by one or more fields.": "Find a lead by one or more fields.",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "Finds a company (organization contact) by name, email, or phone.",
|
||||
"Finds a user by ID, email, name, or status.": "Finds a user by ID, email, name, or status.",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Is Organization": "Is Organization",
|
||||
"Organization Name": "Organization Name",
|
||||
"Last Name": "Last Name",
|
||||
"First Name": "First Name",
|
||||
"Email": "Email",
|
||||
"Phone": "Phone",
|
||||
"Mobile Phone": "Mobile Phone",
|
||||
"Tags": "Tags",
|
||||
"Address": "Address",
|
||||
"Custom Fields": "Custom Fields",
|
||||
"Other Fields": "Other Fields",
|
||||
"Owner": "Owner",
|
||||
"Lead Source": "Lead Source",
|
||||
"Status": "Status",
|
||||
"Title": "Title",
|
||||
"Deal Name": "Deal Name",
|
||||
"Contact": "Contact",
|
||||
"Value": "Value",
|
||||
"Currency": "Currency",
|
||||
"Pipeline": "Pipeline",
|
||||
"Stage": "Stage",
|
||||
"Hot Deal?": "Hot Deal?",
|
||||
"Customer Status": "Customer Status",
|
||||
"Deal": "Deal",
|
||||
"Value (Amount)": "Value (Amount)",
|
||||
"Estimated Close Date": "Estimated Close Date",
|
||||
"Resource Type": "Resource Type",
|
||||
"Resource ID": "Resource ID",
|
||||
"Content": "Content",
|
||||
"Important": "Important",
|
||||
"Visibility": "Visibility",
|
||||
"Deal ID": "Deal ID",
|
||||
"Name": "Name",
|
||||
"Company Name": "Company Name",
|
||||
"User ID": "User ID",
|
||||
"Role": "Role",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"Check this box if the contact is an organization.": "Check this box if the contact is an organization.",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "The name of the organization. Required if \"Is Organization\" is checked.",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "The last name of the individual. Required if \"Is Organization\" is not checked.",
|
||||
"The contact's primary email address.": "The contact's primary email address.",
|
||||
"The contact's phone number.": "The contact's phone number.",
|
||||
"The contact's mobile phone number.": "The contact's mobile phone number.",
|
||||
"A list of tags to associate with the record.": "A list of tags to associate with the record.",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).",
|
||||
"The lead's last name. Required if Organization Name is empty.": "The lead's last name. Required if Organization Name is empty.",
|
||||
"The lead's organization name. Required if Last Name is empty.": "The lead's organization name. Required if Last Name is empty.",
|
||||
"The source of the lead.": "The source of the lead.",
|
||||
"The current status of the lead (e.g., \"New\").": "The current status of the lead (e.g., \"New\").",
|
||||
"The lead's job title.": "The lead's job title.",
|
||||
"The lead's email address.": "The lead's email address.",
|
||||
"The lead's phone number.": "The lead's phone number.",
|
||||
"The lead's mobile phone number.": "The lead's mobile phone number.",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).",
|
||||
"The monetary value of the deal (e.g., 15000).": "The monetary value of the deal (e.g., 15000).",
|
||||
"3-character currency code (e.g., USD).": "3-character currency code (e.g., USD).",
|
||||
"Check this box to mark the deal as \"hot\".": "Check this box to mark the deal as \"hot\".",
|
||||
"A key-value object for any custom fields.": "A key-value object for any custom fields.",
|
||||
"The organization's name (only used for organizational contacts).": "The organization's name (only used for organizational contacts).",
|
||||
"The contact's first name (only used for individual contacts).": "The contact's first name (only used for individual contacts).",
|
||||
"The contact's last name (only used for individual contacts).": "The contact's last name (only used for individual contacts).",
|
||||
"The monetary value of the deal (e.g., 1500).": "The monetary value of the deal (e.g., 1500).",
|
||||
"The expected close date in YYYY-MM-DD format.": "The expected close date in YYYY-MM-DD format.",
|
||||
"The type of resource to attach the note to.": "The type of resource to attach the note to.",
|
||||
"Select the specific resource to attach the note to.": "Select the specific resource to attach the note to.",
|
||||
"The content of the note.": "The content of the note.",
|
||||
"Mark the note as important (starred).": "Mark the note as important (starred).",
|
||||
"Define the note's visibility.": "Define the note's visibility.",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "Find a deal by its unique ID. (Prioritized over Name)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "Find a deal by its exact name. (Used if Deal ID is not provided)",
|
||||
"Filter by the contact's full name or organization name.": "Filter by the contact's full name or organization name.",
|
||||
"Filter by lead status (e.g., \"New\").": "Filter by lead status (e.g., \"New\").",
|
||||
"The exact name of the company to find.": "The exact name of the company to find.",
|
||||
"The company's primary email address.": "The company's primary email address.",
|
||||
"The company's primary phone number.": "The company's primary phone number.",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "Find a user by their unique ID. (Prioritized over other fields)",
|
||||
"Find a user by their full name.": "Find a user by their full name.",
|
||||
"Find a user by their email address.": "Find a user by their email address.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"None": "None",
|
||||
"Current": "Current",
|
||||
"Past": "Past",
|
||||
"Lead": "Lead",
|
||||
"Regular (Default)": "Regular (Default)",
|
||||
"Restricted (Creator only)": "Restricted (Creator only)",
|
||||
"User": "User",
|
||||
"Admin": "Admin",
|
||||
"Active": "Active",
|
||||
"Inactive": "Inactive",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Contact": "New Contact",
|
||||
"New Lead": "New Lead",
|
||||
"New Deal": "New Deal",
|
||||
"Updated Lead": "Updated Lead",
|
||||
"Updated Contact": "Updated Contact",
|
||||
"Updated Deal": "Updated Deal",
|
||||
"Deal Enters New Stage": "Deal Enters New Stage",
|
||||
"New Note": "New Note",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Fires when a new contact is created in Zendesk Sell (polls for new records).",
|
||||
"Fires when a new lead is created (polls for new records).": "Fires when a new lead is created (polls for new records).",
|
||||
"Fires when a new deal is created (polls for new records).": "Fires when a new deal is created (polls for new records).",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "Fires when an existing lead record is updated (polls for updates).",
|
||||
"Fires when an existing contact is updated (polls for updates).": "Fires when an existing contact is updated (polls for updates).",
|
||||
"Fires when an existing deal is modified (polls for updates).": "Fires when an existing deal is modified (polls for updates).",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "Fires when a deal transitions into a specified pipeline stage by polling for updates.",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "Fires when a new note is added to a record (lead, contact, deal) (polls for new records)."
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"Sales CRM for pipeline management, lead tracking, and contact organization.": "Sales CRM for pipeline management, lead tracking, and contact organization.",
|
||||
"Email Address": "Email Address",
|
||||
"API Token": "API Token",
|
||||
"Your Zendesk login email address.": "Your Zendesk login email address.",
|
||||
"Your Zendesk Sell API Token.": "Your Zendesk Sell API Token.",
|
||||
"\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ": "\n To get your API token:\n 1. Log in to your Zendesk Sell account.\n 2. Go to **Settings > Integrations > APIs**.\n 3. If no token is active, click **Add API Token**.\n 4. Copy the **API Token**.\n \n You also need your login email.\n ",
|
||||
"Create Contact": "Create Contact",
|
||||
"Create Lead": "Create Lead",
|
||||
"Create Deal": "Create Deal",
|
||||
"Update Contact": "Update Contact",
|
||||
"Update Deal": "Update Deal",
|
||||
"Create Note": "Create Note",
|
||||
"Find Deal": "Find Deal",
|
||||
"Find Contact": "Find Contact",
|
||||
"Find Lead": "Find Lead",
|
||||
"Find Company": "Find Company",
|
||||
"Find User": "Find User",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Create a new contact.": "Create a new contact.",
|
||||
"Create a new lead record.": "Create a new lead record.",
|
||||
"Create a new deal under an existing contact.": "Create a new deal under an existing contact.",
|
||||
"Update fields of an existing contact.": "Update fields of an existing contact.",
|
||||
"Update fields of an existing deal.": "Update fields of an existing deal.",
|
||||
"Add a note to a deal, lead, or contact.": "Add a note to a deal, lead, or contact.",
|
||||
"Look up a deal by ID or name.": "Look up a deal by ID or name.",
|
||||
"Find a contact by email, name, or other identifier.": "Find a contact by email, name, or other identifier.",
|
||||
"Find a lead by one or more fields.": "Find a lead by one or more fields.",
|
||||
"Finds a company (organization contact) by name, email, or phone.": "Finds a company (organization contact) by name, email, or phone.",
|
||||
"Finds a user by ID, email, name, or status.": "Finds a user by ID, email, name, or status.",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Is Organization": "Is Organization",
|
||||
"Organization Name": "Organization Name",
|
||||
"Last Name": "名字",
|
||||
"First Name": "First Name",
|
||||
"Email": "电子邮件地址",
|
||||
"Phone": "Phone",
|
||||
"Mobile Phone": "Mobile Phone",
|
||||
"Tags": "标签",
|
||||
"Address": "Address",
|
||||
"Custom Fields": "Custom Fields",
|
||||
"Other Fields": "Other Fields",
|
||||
"Owner": "所有者",
|
||||
"Lead Source": "Lead Source",
|
||||
"Status": "状态",
|
||||
"Title": "标题",
|
||||
"Deal Name": "Deal Name",
|
||||
"Contact": "Contact",
|
||||
"Value": "值",
|
||||
"Currency": "Currency",
|
||||
"Pipeline": "Pipeline",
|
||||
"Stage": "Stage",
|
||||
"Hot Deal?": "Hot Deal?",
|
||||
"Customer Status": "Customer Status",
|
||||
"Deal": "Deal",
|
||||
"Value (Amount)": "Value (Amount)",
|
||||
"Estimated Close Date": "Estimated Close Date",
|
||||
"Resource Type": "Resource Type",
|
||||
"Resource ID": "Resource ID",
|
||||
"Content": "Content",
|
||||
"Important": "Important",
|
||||
"Visibility": "Visibility",
|
||||
"Deal ID": "Deal ID",
|
||||
"Name": "名称",
|
||||
"Company Name": "Company Name",
|
||||
"User ID": "User ID",
|
||||
"Role": "作用",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Check this box if the contact is an organization.": "Check this box if the contact is an organization.",
|
||||
"The name of the organization. Required if \"Is Organization\" is checked.": "The name of the organization. Required if \"Is Organization\" is checked.",
|
||||
"The last name of the individual. Required if \"Is Organization\" is not checked.": "The last name of the individual. Required if \"Is Organization\" is not checked.",
|
||||
"The contact's primary email address.": "The contact's primary email address.",
|
||||
"The contact's phone number.": "The contact's phone number.",
|
||||
"The contact's mobile phone number.": "The contact's mobile phone number.",
|
||||
"A list of tags to associate with the record.": "A list of tags to associate with the record.",
|
||||
"An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).": "An object containing address details (e.g., {\"line1\": \"2726 Smith Street\", \"city\": \"Hyannis\", \"country\": \"US\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).": "A key-value object for any custom fields (e.g., {\"referral_website\": \"http://www.example.com\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).": "Enter additional fields as a JSON object (e.g., {\"title\": \"CEO\", \"website\": \"http://example.com\"}).",
|
||||
"The lead's last name. Required if Organization Name is empty.": "The lead's last name. Required if Organization Name is empty.",
|
||||
"The lead's organization name. Required if Last Name is empty.": "The lead's organization name. Required if Last Name is empty.",
|
||||
"The source of the lead.": "The source of the lead.",
|
||||
"The current status of the lead (e.g., \"New\").": "The current status of the lead (e.g., \"New\").",
|
||||
"The lead's job title.": "The lead's job title.",
|
||||
"The lead's email address.": "The lead's email address.",
|
||||
"The lead's phone number.": "The lead's phone number.",
|
||||
"The lead's mobile phone number.": "The lead's mobile phone number.",
|
||||
"An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).": "An object containing address details (e.g., {\"line1\": \"123 Main St\", \"city\": \"Anytown\"}).",
|
||||
"A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).": "A key-value object for any custom fields (e.g., {\"known_via\": \"tom\"}).",
|
||||
"Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).": "Enter additional fields as a JSON object (e.g., {\"description\": \"I know him via Tom\", \"website\": \"http://example.com\"}).",
|
||||
"The monetary value of the deal (e.g., 15000).": "The monetary value of the deal (e.g., 15000).",
|
||||
"3-character currency code (e.g., USD).": "3-character currency code (e.g., USD).",
|
||||
"Check this box to mark the deal as \"hot\".": "Check this box to mark the deal as \"hot\".",
|
||||
"A key-value object for any custom fields.": "A key-value object for any custom fields.",
|
||||
"The organization's name (only used for organizational contacts).": "The organization's name (only used for organizational contacts).",
|
||||
"The contact's first name (only used for individual contacts).": "The contact's first name (only used for individual contacts).",
|
||||
"The contact's last name (only used for individual contacts).": "The contact's last name (only used for individual contacts).",
|
||||
"The monetary value of the deal (e.g., 1500).": "The monetary value of the deal (e.g., 1500).",
|
||||
"The expected close date in YYYY-MM-DD format.": "The expected close date in YYYY-MM-DD format.",
|
||||
"The type of resource to attach the note to.": "The type of resource to attach the note to.",
|
||||
"Select the specific resource to attach the note to.": "Select the specific resource to attach the note to.",
|
||||
"The content of the note.": "The content of the note.",
|
||||
"Mark the note as important (starred).": "Mark the note as important (starred).",
|
||||
"Define the note's visibility.": "Define the note's visibility.",
|
||||
"An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).": "An array of tags to add to the note (e.g., [\"premium\", \"follow-up\"]).",
|
||||
"Find a deal by its unique ID. (Prioritized over Name)": "Find a deal by its unique ID. (Prioritized over Name)",
|
||||
"Find a deal by its exact name. (Used if Deal ID is not provided)": "Find a deal by its exact name. (Used if Deal ID is not provided)",
|
||||
"Filter by the contact's full name or organization name.": "Filter by the contact's full name or organization name.",
|
||||
"Filter by lead status (e.g., \"New\").": "Filter by lead status (e.g., \"New\").",
|
||||
"The exact name of the company to find.": "The exact name of the company to find.",
|
||||
"The company's primary email address.": "The company's primary email address.",
|
||||
"The company's primary phone number.": "The company's primary phone number.",
|
||||
"Find a user by their unique ID. (Prioritized over other fields)": "Find a user by their unique ID. (Prioritized over other fields)",
|
||||
"Find a user by their full name.": "Find a user by their full name.",
|
||||
"Find a user by their email address.": "Find a user by their email address.",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"None": "无",
|
||||
"Current": "Current",
|
||||
"Past": "Past",
|
||||
"Lead": "Lead",
|
||||
"Regular (Default)": "Regular (Default)",
|
||||
"Restricted (Creator only)": "Restricted (Creator only)",
|
||||
"User": "用户",
|
||||
"Admin": "管理员",
|
||||
"Active": "使用中",
|
||||
"Inactive": "Inactive",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色",
|
||||
"New Contact": "New Contact",
|
||||
"New Lead": "New Lead",
|
||||
"New Deal": "New Deal",
|
||||
"Updated Lead": "Updated Lead",
|
||||
"Updated Contact": "Updated Contact",
|
||||
"Updated Deal": "Updated Deal",
|
||||
"Deal Enters New Stage": "Deal Enters New Stage",
|
||||
"New Note": "New Note",
|
||||
"Fires when a new contact is created in Zendesk Sell (polls for new records).": "Fires when a new contact is created in Zendesk Sell (polls for new records).",
|
||||
"Fires when a new lead is created (polls for new records).": "Fires when a new lead is created (polls for new records).",
|
||||
"Fires when a new deal is created (polls for new records).": "Fires when a new deal is created (polls for new records).",
|
||||
"Fires when an existing lead record is updated (polls for updates).": "Fires when an existing lead record is updated (polls for updates).",
|
||||
"Fires when an existing contact is updated (polls for updates).": "Fires when an existing contact is updated (polls for updates).",
|
||||
"Fires when an existing deal is modified (polls for updates).": "Fires when an existing deal is modified (polls for updates).",
|
||||
"Fires when a deal transitions into a specified pipeline stage by polling for updates.": "Fires when a deal transitions into a specified pipeline stage by polling for updates.",
|
||||
"Fires when a new note is added to a record (lead, contact, deal) (polls for new records).": "Fires when a new note is added to a record (lead, contact, deal) (polls for new records)."
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
import { createPiece } from "@activepieces/pieces-framework";
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { createCustomApiCallAction } from "@activepieces/pieces-common";
|
||||
import { Buffer } from 'buffer';
|
||||
|
||||
// Auth
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from "./lib/common/auth";
|
||||
import { ZENDESK_SELL_API_URL } from "./lib/common/client";
|
||||
|
||||
// Actions
|
||||
import { createContact } from "./lib/actions/create_contact";
|
||||
import { createLead } from "./lib/actions/create_lead";
|
||||
import { createDeal } from "./lib/actions/create_deal";
|
||||
import { createNote } from "./lib/actions/create_note";
|
||||
import { updateContact } from "./lib/actions/update_contact";
|
||||
import { updateDeal } from "./lib/actions/update_deal";
|
||||
import { findDeal } from "./lib/actions/find_deal";
|
||||
import { findContact } from "./lib/actions/find_contact";
|
||||
import { findLead } from "./lib/actions/find_lead";
|
||||
import { findCompany } from "./lib/actions/find_company";
|
||||
import { findUser } from "./lib/actions/find_user";
|
||||
|
||||
// Triggers
|
||||
import { newContact } from "./lib/triggers/new_contact";
|
||||
import { newLead } from "./lib/triggers/new_lead";
|
||||
import { newDeal } from "./lib/triggers/new_deal";
|
||||
import { updatedLead } from "./lib/triggers/updated_lead";
|
||||
import { updatedContact } from "./lib/triggers/updated_contact";
|
||||
import { updatedDeal } from "./lib/triggers/updated_deal";
|
||||
import { dealEntersStage } from "./lib/triggers/deal_enters_stage";
|
||||
import { newNote } from "./lib/triggers/new_note";
|
||||
|
||||
export const zendeskSell = createPiece({
|
||||
displayName: "Zendesk-sell",
|
||||
description: "Sales CRM for pipeline management, lead tracking, and contact organization.",
|
||||
auth: zendeskSellAuth,
|
||||
minimumSupportedRelease: '0.3.61',
|
||||
logoUrl: "https://cdn.activepieces.com/pieces/zendesk-sell.png",
|
||||
authors: ['Pranith124', 'onyedikachi-david'],
|
||||
categories: [PieceCategory.SALES_AND_CRM],
|
||||
actions: [
|
||||
createContact,
|
||||
createLead,
|
||||
createDeal,
|
||||
updateContact,
|
||||
updateDeal,
|
||||
createNote,
|
||||
findDeal,
|
||||
findContact,
|
||||
findLead,
|
||||
findCompany,
|
||||
findUser,
|
||||
createCustomApiCallAction({
|
||||
auth: zendeskSellAuth,
|
||||
baseUrl: () => ZENDESK_SELL_API_URL,
|
||||
authMapping: async (auth) => {
|
||||
const { email, api_token } = auth.props;
|
||||
const credentials = `${email}/token:${api_token}`;
|
||||
const encodedCredentials = Buffer.from(credentials).toString('base64');
|
||||
return {
|
||||
Authorization: `Basic ${encodedCredentials}`,
|
||||
};
|
||||
}
|
||||
})
|
||||
],
|
||||
triggers: [
|
||||
newContact,
|
||||
newLead,
|
||||
newDeal,
|
||||
updatedLead,
|
||||
updatedContact,
|
||||
updatedDeal,
|
||||
dealEntersStage,
|
||||
newNote
|
||||
],
|
||||
});
|
||||
@@ -0,0 +1,115 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
|
||||
export const createContact = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'create_contact',
|
||||
displayName: 'Create Contact',
|
||||
description: 'Create a new contact.',
|
||||
props: {
|
||||
is_organization: Property.Checkbox({
|
||||
displayName: 'Is Organization',
|
||||
description: 'Check this box if the contact is an organization.',
|
||||
required: true,
|
||||
defaultValue: false,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Organization Name',
|
||||
description: 'The name of the organization. Required if "Is Organization" is checked.',
|
||||
required: false,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'The last name of the individual. Required if "Is Organization" is not checked.',
|
||||
required: false,
|
||||
}),
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: "The contact's primary email address.",
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
description: "The contact's phone number.",
|
||||
required: false,
|
||||
}),
|
||||
mobile: Property.ShortText({
|
||||
displayName: 'Mobile Phone',
|
||||
description: "The contact's mobile phone number.",
|
||||
required: false,
|
||||
}),
|
||||
tags: zendeskSellCommon.tags('contact'),
|
||||
address: Property.Json({
|
||||
displayName: 'Address',
|
||||
description: 'An object containing address details (e.g., {"line1": "2726 Smith Street", "city": "Hyannis", "country": "US"}).',
|
||||
required: false,
|
||||
defaultValue: {
|
||||
"line1": "",
|
||||
"city": "",
|
||||
"postal_code": "",
|
||||
"state": "",
|
||||
"country": ""
|
||||
}
|
||||
}),
|
||||
custom_fields: Property.Json({
|
||||
displayName: 'Custom Fields',
|
||||
description: 'A key-value object for any custom fields (e.g., {"referral_website": "http://www.example.com"}).',
|
||||
required: false,
|
||||
defaultValue: {}
|
||||
}),
|
||||
other_fields: Property.Json({
|
||||
displayName: 'Other Fields',
|
||||
description: 'Enter additional fields as a JSON object (e.g., {"title": "CEO", "website": "http://example.com"}).',
|
||||
required: false,
|
||||
defaultValue: {}
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { is_organization, name, last_name, other_fields, ...otherProps } = propsValue;
|
||||
|
||||
|
||||
if (is_organization && !name) {
|
||||
throw new Error('Organization Name is required when "Is Organization" is checked.');
|
||||
}
|
||||
if (!is_organization && !last_name) {
|
||||
throw new Error('Last Name is required for an individual contact.');
|
||||
}
|
||||
|
||||
const rawBody: Record<string, unknown> = {
|
||||
is_organization,
|
||||
...otherProps,
|
||||
...(other_fields || {}),
|
||||
};
|
||||
|
||||
if (is_organization) {
|
||||
rawBody['name'] = name;
|
||||
} else {
|
||||
rawBody['last_name'] = last_name;
|
||||
}
|
||||
|
||||
|
||||
const cleanedBody = Object.entries(rawBody).reduce((acc, [key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
acc[key] = value;
|
||||
}
|
||||
return acc;
|
||||
}, {} as Record<string, unknown>);
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.POST,
|
||||
'v2/contacts',
|
||||
auth,
|
||||
{ data: cleanedBody }
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,70 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
|
||||
export const createDeal = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'create_deal',
|
||||
displayName: 'Create Deal',
|
||||
description: 'Create a new deal under an existing contact.',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Deal Name',
|
||||
required: true,
|
||||
}),
|
||||
contact_id: zendeskSellCommon.contact(true),
|
||||
value: Property.ShortText({
|
||||
displayName: 'Value',
|
||||
description: 'The monetary value of the deal (e.g., 15000).',
|
||||
required: false,
|
||||
}),
|
||||
currency: Property.ShortText({
|
||||
displayName: 'Currency',
|
||||
description: '3-character currency code (e.g., USD).',
|
||||
required: false,
|
||||
}),
|
||||
pipeline_id: zendeskSellCommon.pipeline(false),
|
||||
stage_id: zendeskSellCommon.stage(false),
|
||||
owner_id: zendeskSellCommon.owner(),
|
||||
source_id: zendeskSellCommon.leadSource(),
|
||||
hot: Property.Checkbox({
|
||||
displayName: 'Hot Deal?',
|
||||
description: 'Check this box to mark the deal as "hot".',
|
||||
required: false,
|
||||
}),
|
||||
tags: zendeskSellCommon.tags('deal'), // Optional Tags
|
||||
custom_fields: Property.Json({
|
||||
displayName: 'Custom Fields',
|
||||
description: 'A key-value object for any custom fields.',
|
||||
required: false,
|
||||
defaultValue: {}
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { pipeline_id, ...otherProps } = propsValue;
|
||||
|
||||
const rawBody: Record<string, unknown> = {
|
||||
...otherProps,
|
||||
};
|
||||
|
||||
|
||||
const cleanedBody = Object.entries(rawBody).reduce((acc, [key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
acc[key] = value;
|
||||
}
|
||||
return acc;
|
||||
}, {} as Record<string, unknown>);
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.POST,
|
||||
'v2/deals',
|
||||
auth,
|
||||
{ data: cleanedBody }
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,113 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
|
||||
export const createLead = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'create_lead',
|
||||
displayName: 'Create Lead',
|
||||
description: 'Create a new lead record.',
|
||||
props: {
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: "The lead's last name. Required if Organization Name is empty.",
|
||||
required: false,
|
||||
}),
|
||||
organization_name: Property.ShortText({
|
||||
displayName: 'Organization Name',
|
||||
description: "The lead's organization name. Required if Last Name is empty.",
|
||||
required: false,
|
||||
}),
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
owner_id: zendeskSellCommon.owner(),
|
||||
source_id: zendeskSellCommon.leadSource(),
|
||||
status: Property.ShortText({
|
||||
displayName: 'Status',
|
||||
description: 'The current status of the lead (e.g., "New").',
|
||||
required: false,
|
||||
}),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: "The lead's job title.",
|
||||
required: false,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: "The lead's email address.",
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
description: "The lead's phone number.",
|
||||
required: false,
|
||||
}),
|
||||
mobile: Property.ShortText({
|
||||
displayName: 'Mobile Phone',
|
||||
description: "The lead's mobile phone number.",
|
||||
required: false,
|
||||
}),
|
||||
tags: zendeskSellCommon.tags('lead'),
|
||||
address: Property.Json({
|
||||
displayName: 'Address',
|
||||
description: 'An object containing address details (e.g., {"line1": "123 Main St", "city": "Anytown"}).',
|
||||
required: false,
|
||||
defaultValue: {
|
||||
"line1": "",
|
||||
"city": "",
|
||||
"postal_code": "",
|
||||
"state": "",
|
||||
"country": ""
|
||||
}
|
||||
}),
|
||||
custom_fields: Property.Json({
|
||||
displayName: 'Custom Fields',
|
||||
description: 'A key-value object for any custom fields (e.g., {"known_via": "tom"}).',
|
||||
required: false,
|
||||
defaultValue: {}
|
||||
}),
|
||||
other_fields: Property.Json({
|
||||
displayName: 'Other Fields',
|
||||
description: 'Enter additional fields as a JSON object (e.g., {"description": "I know him via Tom", "website": "http://example.com"}).',
|
||||
required: false,
|
||||
defaultValue: {}
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { last_name, organization_name, other_fields, ...otherProps } = propsValue;
|
||||
|
||||
|
||||
if (!last_name && !organization_name) {
|
||||
throw new Error('Either Last Name or Organization Name is required to create a lead.');
|
||||
}
|
||||
|
||||
const rawBody: Record<string, unknown> = {
|
||||
last_name,
|
||||
organization_name,
|
||||
...otherProps,
|
||||
...(other_fields || {}),
|
||||
};
|
||||
|
||||
|
||||
const cleanedBody = Object.entries(rawBody).reduce((acc, [key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
acc[key] = value;
|
||||
}
|
||||
return acc;
|
||||
}, {} as Record<string, unknown>);
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.POST,
|
||||
'v2/leads',
|
||||
auth,
|
||||
{ data: cleanedBody }
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,114 @@
|
||||
import { Property, createAction, DynamicPropsValue } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
|
||||
export const createNote = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'create_note',
|
||||
displayName: 'Create Note',
|
||||
description: 'Add a note to a deal, lead, or contact.',
|
||||
props: {
|
||||
resource_type: Property.StaticDropdown({
|
||||
displayName: 'Resource Type',
|
||||
description: 'The type of resource to attach the note to.',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Lead', value: 'lead' },
|
||||
{ label: 'Contact', value: 'contact' },
|
||||
{ label: 'Deal', value: 'deal' },
|
||||
]
|
||||
}
|
||||
}),
|
||||
dynamic_resource_id: Property.DynamicProperties({
|
||||
auth: zendeskSellAuth,
|
||||
displayName: 'Resource ID',
|
||||
description: 'Select the specific resource to attach the note to.',
|
||||
required: true,
|
||||
refreshers: ['resource_type'],
|
||||
props: async (context) => {
|
||||
const resourceType = context['resource_type'] as unknown as string | undefined;
|
||||
const fields: DynamicPropsValue = {};
|
||||
|
||||
if (!resourceType) return {};
|
||||
|
||||
switch (resourceType) {
|
||||
case 'lead':
|
||||
fields['resource_id'] = zendeskSellCommon.lead(true);
|
||||
break;
|
||||
case 'contact':
|
||||
fields['resource_id'] = zendeskSellCommon.contact(true);
|
||||
break;
|
||||
case 'deal':
|
||||
fields['resource_id'] = zendeskSellCommon.deal(true);
|
||||
break;
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
}),
|
||||
content: Property.LongText({
|
||||
displayName: 'Content',
|
||||
description: 'The content of the note.',
|
||||
required: true,
|
||||
}),
|
||||
is_important: Property.Checkbox({
|
||||
displayName: 'Important',
|
||||
description: 'Mark the note as important (starred).',
|
||||
required: false,
|
||||
}),
|
||||
type: Property.StaticDropdown({
|
||||
displayName: 'Visibility',
|
||||
description: 'Define the note\'s visibility.',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Regular (Default)', value: 'regular' },
|
||||
{ label: 'Restricted (Creator only)', value: 'restricted' },
|
||||
]
|
||||
}
|
||||
}),
|
||||
tags: Property.Array({
|
||||
displayName: 'Tags',
|
||||
description: 'An array of tags to add to the note (e.g., ["premium", "follow-up"]).',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { resource_type, dynamic_resource_id, ...otherProps } = propsValue;
|
||||
|
||||
const resource_id = (dynamic_resource_id as { resource_id: number })?.resource_id;
|
||||
|
||||
if (!resource_id) {
|
||||
throw new Error('Resource ID is missing. Please select a resource.');
|
||||
}
|
||||
|
||||
const rawBody: Record<string, unknown> = {
|
||||
resource_type,
|
||||
resource_id,
|
||||
...otherProps,
|
||||
};
|
||||
|
||||
const cleanedBody = Object.entries(rawBody).reduce((acc, [key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
acc[key] = value;
|
||||
}
|
||||
|
||||
if (key === 'is_important' && value === false) {
|
||||
acc[key] = value;
|
||||
}
|
||||
return acc;
|
||||
}, {} as Record<string, unknown>);
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.POST,
|
||||
'v2/notes',
|
||||
auth,
|
||||
{ data: cleanedBody }
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,65 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
export const findCompany = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'find_company',
|
||||
displayName: 'Find Company',
|
||||
description: 'Finds a company (organization contact) by name, email, or phone.',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Company Name',
|
||||
description: "The exact name of the company to find.",
|
||||
required: false,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: "The company's primary email address.",
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
description: "The company's primary phone number.",
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { name, email, phone } = propsValue;
|
||||
|
||||
|
||||
const params: Record<string, string> = {
|
||||
is_organization: 'true'
|
||||
};
|
||||
|
||||
|
||||
if (name) params['name'] = name as string;
|
||||
if (email) params['email'] = email as string;
|
||||
if (phone) params['phone'] = phone as string;
|
||||
|
||||
|
||||
if (Object.keys(params).length === 1) {
|
||||
throw new Error('Please provide at least one search field (Company Name, Email, or Phone).');
|
||||
}
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.GET,
|
||||
'v2/contacts',
|
||||
auth,
|
||||
undefined,
|
||||
params
|
||||
);
|
||||
|
||||
const items = (response.body as { items: Record<string, unknown>[] })?.items;
|
||||
|
||||
if (items && items.length > 0) {
|
||||
|
||||
return items[0];
|
||||
}
|
||||
|
||||
|
||||
return { data: null };
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,66 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
export const findContact = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'find_contact',
|
||||
displayName: 'Find Contact',
|
||||
description: 'Find a contact by email, name, or other identifier.',
|
||||
props: {
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
required: false,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Name',
|
||||
description: "Filter by the contact's full name or organization name.",
|
||||
required: false,
|
||||
}),
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { email, name, first_name, last_name, phone } = propsValue;
|
||||
|
||||
const params: Record<string, string> = {};
|
||||
if (email) params['email'] = email as string;
|
||||
if (name) params['name'] = name as string;
|
||||
if (first_name) params['first_name'] = first_name as string;
|
||||
if (last_name) params['last_name'] = last_name as string;
|
||||
if (phone) params['phone'] = phone as string;
|
||||
|
||||
if (Object.keys(params).length === 0) {
|
||||
throw new Error('Please provide at least one search field (Email, Name, etc.).');
|
||||
}
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.GET,
|
||||
'v2/contacts',
|
||||
auth,
|
||||
undefined,
|
||||
params
|
||||
);
|
||||
|
||||
const items = (response.body as { items: Record<string, unknown>[] })?.items;
|
||||
|
||||
if (items && items.length > 0) {
|
||||
return items[0];
|
||||
}
|
||||
|
||||
|
||||
return { data: null };
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,81 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
|
||||
export const findDeal = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'find_deal',
|
||||
displayName: 'Find Deal',
|
||||
description: 'Look up a deal by ID or name.',
|
||||
props: {
|
||||
deal_id: Property.Number({
|
||||
displayName: 'Deal ID',
|
||||
description: 'Find a deal by its unique ID. (Prioritized over Name)',
|
||||
required: false,
|
||||
}),
|
||||
deal_name: Property.ShortText({
|
||||
displayName: 'Deal Name',
|
||||
description: 'Find a deal by its exact name. (Used if Deal ID is not provided)',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { deal_id, deal_name } = propsValue;
|
||||
|
||||
if (!deal_id && !deal_name) {
|
||||
throw new Error('Please provide a Deal ID or a Deal Name to find.');
|
||||
}
|
||||
|
||||
|
||||
if (deal_id) {
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.GET,
|
||||
`v2/deals/${deal_id}`,
|
||||
auth
|
||||
);
|
||||
return response.body;
|
||||
}
|
||||
|
||||
|
||||
if (deal_name) {
|
||||
const requestBody = {
|
||||
"items": [
|
||||
{
|
||||
"data": {
|
||||
"query": {
|
||||
"filter": {
|
||||
"filter": {
|
||||
"attribute": { "name": "name" },
|
||||
"parameter": { "eq": deal_name }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"per_page": 1
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.POST,
|
||||
'v3/deals/search',
|
||||
auth,
|
||||
requestBody
|
||||
);
|
||||
|
||||
const searchResponse = response.body as { items: { data: Record<string, unknown> }[] };
|
||||
|
||||
if (searchResponse.items && searchResponse.items.length > 0) {
|
||||
return { data: searchResponse.items[0].data };
|
||||
} else {
|
||||
return { data: null };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return { data: null };
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,77 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
|
||||
export const findLead = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'find_lead',
|
||||
displayName: 'Find Lead',
|
||||
description: 'Find a lead by one or more fields.',
|
||||
props: {
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
required: false,
|
||||
}),
|
||||
organization_name: Property.ShortText({
|
||||
displayName: 'Organization Name',
|
||||
required: false,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
required: false,
|
||||
}),
|
||||
status: Property.ShortText({
|
||||
displayName: 'Status',
|
||||
description: 'Filter by lead status (e.g., "New").',
|
||||
required: false,
|
||||
}),
|
||||
source_id: zendeskSellCommon.leadSource(),
|
||||
owner_id: zendeskSellCommon.owner(),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
|
||||
|
||||
const params: Record<string, string> = {};
|
||||
|
||||
|
||||
for (const [key, value] of Object.entries(propsValue)) {
|
||||
if (key !== 'auth' && value !== undefined && value !== null && value !== '') {
|
||||
params[key] = value.toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Object.keys(params).length === 0) {
|
||||
throw new Error('Please provide at least one search field (Email, Name, Status, etc.).');
|
||||
}
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.GET,
|
||||
'v2/leads',
|
||||
auth,
|
||||
undefined,
|
||||
params
|
||||
);
|
||||
|
||||
|
||||
const items = (response.body as { items: Record<string, unknown>[] })?.items;
|
||||
|
||||
if (items && items.length > 0) {
|
||||
return items[0];
|
||||
}
|
||||
|
||||
|
||||
return { data: null };
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,91 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
export const findUser = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'find_user',
|
||||
displayName: 'Find User',
|
||||
description: 'Finds a user by ID, email, name, or status.',
|
||||
props: {
|
||||
user_id: Property.Number({
|
||||
displayName: 'User ID',
|
||||
description: 'Find a user by their unique ID. (Prioritized over other fields)',
|
||||
required: false,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Name',
|
||||
description: "Find a user by their full name.",
|
||||
required: false,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: "Find a user by their email address.",
|
||||
required: false,
|
||||
}),
|
||||
role: Property.StaticDropdown({
|
||||
displayName: 'Role',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'User', value: 'user' },
|
||||
{ label: 'Admin', value: 'admin' },
|
||||
]
|
||||
}
|
||||
}),
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Active', value: 'active' },
|
||||
{ label: 'Inactive', value: 'inactive' },
|
||||
]
|
||||
}
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { user_id, name, email, role, status } = propsValue;
|
||||
|
||||
|
||||
if (user_id) {
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.GET,
|
||||
`v2/users/${user_id}`,
|
||||
auth
|
||||
);
|
||||
return response.body;
|
||||
}
|
||||
|
||||
const params: Record<string, string> = {};
|
||||
if (name) params['name'] = name as string;
|
||||
if (email) params['email'] = email as string;
|
||||
if (role) params['role'] = role as string;
|
||||
if (status) params['status'] = status as string;
|
||||
|
||||
|
||||
if (Object.keys(params).length === 0) {
|
||||
throw new Error('Please provide a User ID or at least one other search field (Name, Email, etc.).');
|
||||
}
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.GET,
|
||||
'v2/users',
|
||||
auth,
|
||||
undefined,
|
||||
params
|
||||
);
|
||||
|
||||
|
||||
const items = (response.body as { items: Record<string, unknown>[] })?.items;
|
||||
|
||||
if (items && items.length > 0) {
|
||||
return items[0];
|
||||
}
|
||||
|
||||
|
||||
return { data: null };
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,94 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
|
||||
export const updateContact = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'update_contact',
|
||||
displayName: 'Update Contact',
|
||||
description: 'Update fields of an existing contact.',
|
||||
props: {
|
||||
contact_id: zendeskSellCommon.contact(true),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Organization Name',
|
||||
description: "The organization's name (only used for organizational contacts).",
|
||||
required: false,
|
||||
}),
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: "The contact's first name (only used for individual contacts).",
|
||||
required: false,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: "The contact's last name (only used for individual contacts).",
|
||||
required: false,
|
||||
}),
|
||||
owner_id: zendeskSellCommon.owner(),
|
||||
customer_status: Property.StaticDropdown({
|
||||
displayName: 'Customer Status',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'None', value: 'none' },
|
||||
{ label: 'Current', value: 'current' },
|
||||
{ label: 'Past', value: 'past' },
|
||||
]
|
||||
}
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: "The contact's primary email address.",
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
description: "The contact's phone number.",
|
||||
required: false,
|
||||
}),
|
||||
tags: zendeskSellCommon.tags('contact'),
|
||||
address: Property.Json({
|
||||
displayName: 'Address',
|
||||
description: 'An object containing address details (e.g., {"line1": "2726 Smith Street", "city": "Hyannis", "country": "US"}).',
|
||||
required: false,
|
||||
}),
|
||||
custom_fields: Property.Json({
|
||||
displayName: 'Custom Fields',
|
||||
description: 'A key-value object for any custom fields (e.g., {"referral_website": "http://www.example.com"}).',
|
||||
required: false,
|
||||
}),
|
||||
other_fields: Property.Json({
|
||||
displayName: 'Other Fields',
|
||||
description: 'Enter additional fields as a JSON object (e.g., {"title": "CEO", "website": "http://example.com"}).',
|
||||
required: false
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
const { contact_id, other_fields, ...otherProps } = propsValue;
|
||||
|
||||
const rawBody: Record<string, unknown> = {
|
||||
...otherProps,
|
||||
...(other_fields || {}),
|
||||
};
|
||||
|
||||
|
||||
const cleanedBody = Object.entries(rawBody).reduce((acc, [key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
acc[key] = value;
|
||||
}
|
||||
return acc;
|
||||
}, {} as Record<string, unknown>);
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.PUT,
|
||||
`v2/contacts/${contact_id}`,
|
||||
auth,
|
||||
{ data: cleanedBody }
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,85 @@
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
|
||||
export const updateDeal = createAction({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'update_deal',
|
||||
displayName: 'Update Deal',
|
||||
description: 'Update fields of an existing deal.',
|
||||
props: {
|
||||
deal_id: zendeskSellCommon.deal(true),
|
||||
|
||||
name: Property.ShortText({
|
||||
displayName: 'Deal Name',
|
||||
required: false,
|
||||
}),
|
||||
contact_id: zendeskSellCommon.contact(false),
|
||||
value: Property.Number({
|
||||
displayName: 'Value (Amount)',
|
||||
description: 'The monetary value of the deal (e.g., 1500).',
|
||||
required: false,
|
||||
}),
|
||||
currency: Property.ShortText({
|
||||
displayName: 'Currency',
|
||||
description: '3-character currency code (e.g., USD).',
|
||||
required: false,
|
||||
}),
|
||||
estimated_close_date: Property.ShortText({
|
||||
displayName: 'Estimated Close Date',
|
||||
description: 'The expected close date in YYYY-MM-DD format.',
|
||||
required: false,
|
||||
}),
|
||||
hot: Property.Checkbox({
|
||||
displayName: 'Hot Deal?',
|
||||
description: 'Check this box to mark the deal as "hot".',
|
||||
required: false,
|
||||
}),
|
||||
|
||||
pipeline_id: zendeskSellCommon.pipeline(false),
|
||||
stage_id: zendeskSellCommon.stage(false),
|
||||
owner_id: zendeskSellCommon.owner(),
|
||||
source_id: zendeskSellCommon.leadSource(),
|
||||
tags: zendeskSellCommon.tags('deal'),
|
||||
|
||||
custom_fields: Property.Json({
|
||||
displayName: 'Custom Fields',
|
||||
description: 'A key-value object for any custom fields.',
|
||||
required: false,
|
||||
defaultValue: {}
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { auth, propsValue } = context;
|
||||
|
||||
|
||||
const { deal_id, pipeline_id, ...otherProps } = propsValue;
|
||||
|
||||
const rawBody: Record<string, unknown> = {
|
||||
...otherProps,
|
||||
};
|
||||
|
||||
const cleanedBody = Object.entries(rawBody).reduce((acc, [key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
acc[key] = value;
|
||||
}
|
||||
return acc;
|
||||
}, {} as Record<string, unknown>);
|
||||
|
||||
|
||||
if (Object.keys(cleanedBody).length === 0) {
|
||||
throw new Error("No fields were provided to update. Please fill at least one field.");
|
||||
}
|
||||
|
||||
const response = await callZendeskApi(
|
||||
HttpMethod.PUT,
|
||||
`v2/deals/${deal_id}`,
|
||||
auth,
|
||||
{ data: cleanedBody }
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,55 @@
|
||||
import { PieceAuth, Property } from '@activepieces/pieces-framework';
|
||||
import { httpClient, HttpMethod, AuthenticationType } from '@activepieces/pieces-common';
|
||||
|
||||
export type ZendeskSellAuth = {
|
||||
email: string;
|
||||
api_token: string;
|
||||
}
|
||||
|
||||
const ZENDESK_SELL_API_URL = 'https://api.getbase.com';
|
||||
|
||||
export const zendeskSellAuth = PieceAuth.CustomAuth({
|
||||
description: `
|
||||
To get your API token:
|
||||
1. Log in to your Zendesk Sell account.
|
||||
2. Go to **Settings > Integrations > APIs**.
|
||||
3. If no token is active, click **Add API Token**.
|
||||
4. Copy the **API Token**.
|
||||
|
||||
You also need your login email.
|
||||
`,
|
||||
required: true,
|
||||
props: {
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email Address',
|
||||
description: 'Your Zendesk login email address.',
|
||||
required: true,
|
||||
}),
|
||||
api_token: PieceAuth.SecretText({
|
||||
displayName: 'API Token',
|
||||
description: 'Your Zendesk Sell API Token.',
|
||||
required: true,
|
||||
})
|
||||
},
|
||||
validate: async ({ auth }) => {
|
||||
try {
|
||||
await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `${ZENDESK_SELL_API_URL}/v2/users/self`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BASIC,
|
||||
username: `${auth.email}/token`,
|
||||
password: auth.api_token,
|
||||
},
|
||||
});
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
valid: false,
|
||||
error: 'Invalid API token or email.',
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import {
|
||||
AuthenticationType,
|
||||
httpClient,
|
||||
HttpMethod,
|
||||
HttpRequest,
|
||||
HttpResponse,
|
||||
HttpMessageBody,
|
||||
} from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from './auth';
|
||||
import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
|
||||
|
||||
|
||||
export const ZENDESK_SELL_API_URL = 'https://api.getbase.com';
|
||||
|
||||
export async function callZendeskApi<T>(
|
||||
method: HttpMethod,
|
||||
endpoint: string,
|
||||
auth: AppConnectionValueForAuthProperty<typeof zendeskSellAuth>,
|
||||
body?: HttpMessageBody,
|
||||
query?: Record<string, string>
|
||||
): Promise<HttpResponse<T>> {
|
||||
|
||||
const request: HttpRequest = {
|
||||
method: method,
|
||||
url: `${ZENDESK_SELL_API_URL}/${endpoint}`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BASIC,
|
||||
username: `${auth.props.email}/token`,
|
||||
password: auth.props.api_token,
|
||||
},
|
||||
body: body,
|
||||
queryParams: query,
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
};
|
||||
return httpClient.sendRequest<T>(request);
|
||||
}
|
||||
@@ -0,0 +1,245 @@
|
||||
import { Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth, ZendeskSellAuth } from './auth';
|
||||
import { callZendeskApi } from './client';
|
||||
|
||||
|
||||
export const zendeskSellCommon = {
|
||||
lead: (required = true) => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Lead',
|
||||
required,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, 'v2/leads', auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (error) {
|
||||
return { disabled: true, placeholder: "Error fetching leads.", options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
contact: (required = true) => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Contact',
|
||||
required,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, 'v2/contacts', auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (error) {
|
||||
return { disabled: true, placeholder: "Error fetching contacts.", options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
tags: (resourceType: 'contact' | 'lead' | 'deal') => Property.MultiSelectDropdown({
|
||||
auth: zendeskSellAuth,
|
||||
displayName: 'Tags',
|
||||
description: 'A list of tags to associate with the record.',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { name: string } }[] }>(
|
||||
HttpMethod.GET, `v2/tags?resource_type=${resourceType}`, auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.name })),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error fetching Zendesk Sell tags:", error);
|
||||
return { disabled: true, placeholder: "Error fetching tags.", options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
leadSource: () => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Lead Source',
|
||||
description: 'The source of the lead.',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, 'v2/lead_sources', auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error fetching Zendesk Sell lead sources:", error);
|
||||
return { disabled: true, placeholder: "Error fetching lead sources.", options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
deal: (required = true) => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Deal',
|
||||
required,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) return { disabled: true, placeholder: 'Connect account first', options: [] };
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, 'v2/deals', auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (e) {
|
||||
return { disabled: true, placeholder: 'Error fetching deals', options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
company: (required = true) => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Company',
|
||||
required,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) return { disabled: true, placeholder: 'Connect account first', options: [] };
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, 'v2/contacts?is_organization=true', auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (e) {
|
||||
return { disabled: true, placeholder: 'Error fetching companies', options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
pipeline: (required = true) => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Pipeline',
|
||||
required,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) return { disabled: true, placeholder: 'Connect account first', options: [] };
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, 'v2/pipelines', auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (e) {
|
||||
return { disabled: true, placeholder: 'Error fetching pipelines', options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
stage: (required = true) => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Stage',
|
||||
required,
|
||||
refreshers: ['pipeline_id'],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
const pipelineId = propsValue['pipeline_id'] as number | undefined;
|
||||
|
||||
if (!auth || !pipelineId) {
|
||||
return { disabled: true, placeholder: 'Select a pipeline first', options: [] };
|
||||
}
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, `v2/pipelines/${pipelineId}/stages`, auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (e) {
|
||||
return { disabled: true, placeholder: 'Error fetching stages', options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
owner: () => Property.Dropdown({
|
||||
auth: zendeskSellAuth,
|
||||
|
||||
displayName: 'Owner',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async (propsValue) => {
|
||||
const auth = propsValue.auth
|
||||
if (!auth) return { disabled: true, placeholder: 'Connect account first', options: [] };
|
||||
try {
|
||||
const response = await callZendeskApi<{ items: { data: { id: number; name: string } }[] }>(
|
||||
HttpMethod.GET, 'v2/users', auth
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.items.map(item => ({ label: item.data.name, value: item.data.id })),
|
||||
};
|
||||
} catch (e) {
|
||||
return { disabled: true, placeholder: 'Error fetching users', options: [] };
|
||||
}
|
||||
},
|
||||
}),
|
||||
};
|
||||
@@ -0,0 +1,138 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { zendeskSellCommon } from '../common/props';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
const PREVIOUS_DEAL_STAGES_STORE_KEY = 'dealEntersStage_previous_stages_v2';
|
||||
|
||||
interface ZendeskDealItem {
|
||||
data: ZendeskDeal;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskDeal {
|
||||
id: number;
|
||||
name: string;
|
||||
stage_id: number;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
|
||||
type TriggerPropsValue = {
|
||||
stage_id: number | undefined;
|
||||
pipeline_id: number | undefined;
|
||||
};
|
||||
|
||||
|
||||
type PreviousDealStagesMap = Record<string, number>;
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, TriggerPropsValue> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS }) {
|
||||
const response = await callZendeskApi<{ items: ZendeskDealItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/deals',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'updated_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.updated_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const dealEntersStage = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'deal_enters_stage',
|
||||
displayName: 'Deal Enters New Stage',
|
||||
description: 'Fires when a deal transitions into a specified pipeline stage by polling for updates.',
|
||||
props: {
|
||||
pipeline_id: zendeskSellCommon.pipeline(true),
|
||||
stage_id: zendeskSellCommon.stage(true),
|
||||
},
|
||||
sampleData: {
|
||||
"id": 67890,
|
||||
"name": "New Big Deal",
|
||||
"value": 50000,
|
||||
"stage_id": 2,
|
||||
"contact_id": 54321,
|
||||
"owner_id": 12345,
|
||||
"updated_at": "2025-10-18T10:30:00Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
|
||||
async test(context) {
|
||||
// For test, we need to handle the case where stage_id might be undefined
|
||||
const testDeals = await pollingHelper.test(polling, context) as ZendeskDeal[];
|
||||
const matchingDeal = testDeals.find(deal => deal.stage_id === context.propsValue.stage_id);
|
||||
return [matchingDeal ?? {}];
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
// Initialize custom state for stage tracking
|
||||
await context.store.put<PreviousDealStagesMap>(PREVIOUS_DEAL_STAGES_STORE_KEY, {});
|
||||
console.log(`Initialized store for dealEntersStage`);
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
await context.store.delete(PREVIOUS_DEAL_STAGES_STORE_KEY);
|
||||
console.log(`Cleaned up store for dealEntersStage`);
|
||||
},
|
||||
|
||||
|
||||
async run(context) {
|
||||
const { propsValue, store } = context;
|
||||
const targetStageId = propsValue.stage_id;
|
||||
const previousDealStages = await store.get<PreviousDealStagesMap>(PREVIOUS_DEAL_STAGES_STORE_KEY) ?? {};
|
||||
|
||||
if (!targetStageId) {
|
||||
throw new Error('Stage ID is required for deal enters stage trigger');
|
||||
}
|
||||
|
||||
console.log(`Polling deals for stage transitions to stage ${targetStageId}`);
|
||||
|
||||
// Get all deals using polling helper
|
||||
const deals = await pollingHelper.poll(polling, context) as ZendeskDeal[];
|
||||
const dealsEnteringTargetStage: ZendeskDeal[] = [];
|
||||
const currentDealStages: PreviousDealStagesMap = { ...previousDealStages };
|
||||
|
||||
for (const deal of deals) {
|
||||
const dealIdStr = deal.id.toString();
|
||||
const previousStageId = previousDealStages[dealIdStr];
|
||||
const currentStageId = deal.stage_id;
|
||||
|
||||
if (currentStageId === targetStageId && previousStageId !== undefined && previousStageId !== targetStageId) {
|
||||
console.log(`Deal ${deal.id} entered stage ${targetStageId} (from ${previousStageId})`);
|
||||
dealsEnteringTargetStage.push(deal);
|
||||
}
|
||||
currentDealStages[dealIdStr] = currentStageId;
|
||||
}
|
||||
|
||||
await store.put(PREVIOUS_DEAL_STAGES_STORE_KEY, currentDealStages);
|
||||
|
||||
console.log(`Found ${dealsEnteringTargetStage.length} deals entering stage ${targetStageId}`);
|
||||
return dealsEnteringTargetStage;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,93 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
|
||||
interface ZendeskContactItem {
|
||||
data: ZendeskContact;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskContact {
|
||||
id: number;
|
||||
name: string;
|
||||
email?: string;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, Record<string, never>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS }) {
|
||||
const response = await callZendeskApi<{ items: ZendeskContactItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/contacts',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'created_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.created_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newContact = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'new_contact',
|
||||
displayName: 'New Contact',
|
||||
description: 'Fires when a new contact is created in Zendesk Sell (polls for new records).',
|
||||
props: {
|
||||
|
||||
},
|
||||
sampleData: {
|
||||
"id": 2,
|
||||
"creator_id": 1,
|
||||
"owner_id": 1,
|
||||
"is_organization": false,
|
||||
"contact_id": 1,
|
||||
"name": "Mark Johnson",
|
||||
"first_name": "Mark",
|
||||
"last_name": "Johnson",
|
||||
"customer_status": "none",
|
||||
"email": "mark@designservice.com",
|
||||
"phone": "508-778-6516",
|
||||
"created_at": "2014-08-27T16:32:56Z",
|
||||
"updated_at": "2014-08-27T16:32:56Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,89 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
interface ZendeskDealItem {
|
||||
data: ZendeskDeal;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskDeal {
|
||||
id: number;
|
||||
name: string;
|
||||
contact_id: number;
|
||||
value: string;
|
||||
stage_id: number;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, Record<string, never>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS }) {
|
||||
const response = await callZendeskApi<{ items: ZendeskDealItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/deals',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'created_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.created_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newDeal = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'new_deal',
|
||||
displayName: 'New Deal',
|
||||
description: 'Fires when a new deal is created (polls for new records).',
|
||||
props: {},
|
||||
sampleData: {
|
||||
"id": 1,
|
||||
"creator_id": 1,
|
||||
"owner_id": 1,
|
||||
"contact_id": 1,
|
||||
"name": "Website Redesign",
|
||||
"value": "15000.0",
|
||||
"currency": "USD",
|
||||
"hot": false,
|
||||
"stage_id": 12,
|
||||
"created_at": "2025-10-27T10:30:00Z",
|
||||
"updated_at": "2025-10-27T10:30:00Z",
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,90 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
interface ZendeskLeadItem {
|
||||
data: ZendeskLead;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskLead {
|
||||
id: number;
|
||||
first_name?: string;
|
||||
last_name?: string;
|
||||
organization_name?: string;
|
||||
email?: string;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, Record<string, never>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS }) {
|
||||
const response = await callZendeskApi<{ items: ZendeskLeadItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/leads',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'created_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.created_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newLead = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'new_lead',
|
||||
displayName: 'New Lead',
|
||||
description: 'Fires when a new lead is created (polls for new records).',
|
||||
props: {},
|
||||
sampleData: {
|
||||
"id": 1,
|
||||
"creator_id": 1,
|
||||
"owner_id": 1,
|
||||
"first_name": "Mark",
|
||||
"last_name": "Johnson",
|
||||
"organization_name": "Design Services Company",
|
||||
"status": "New",
|
||||
"source_id": 10,
|
||||
"email": "mark@example.com",
|
||||
"phone": "508-778-6516",
|
||||
"created_at": "2014-08-27T16:32:56Z",
|
||||
"updated_at": "2014-08-27T16:32:56Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,86 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
interface ZendeskNoteItem {
|
||||
data: ZendeskNote;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskNote {
|
||||
id: number;
|
||||
creator_id: number;
|
||||
resource_type: string;
|
||||
resource_id: number;
|
||||
content: string;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, Record<string, never>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS }) {
|
||||
const response = await callZendeskApi<{ items: ZendeskNoteItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/notes',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'created_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.created_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newNote = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'new_note',
|
||||
displayName: 'New Note',
|
||||
description: 'Fires when a new note is added to a record (lead, contact, deal) (polls for new records).',
|
||||
props: {},
|
||||
sampleData: {
|
||||
"id": 1,
|
||||
"creator_id": 1,
|
||||
"resource_type": "lead",
|
||||
"resource_id": 1,
|
||||
"content": "Highly important.",
|
||||
"is_important": true,
|
||||
"created_at": "2014-08-27T16:32:56Z",
|
||||
"updated_at": "2014-08-27T17:32:56Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,89 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
interface ZendeskContactItem {
|
||||
data: ZendeskContact;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskContact {
|
||||
id: number;
|
||||
name: string;
|
||||
email?: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, Record<string, never>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS } ) {
|
||||
const response = await callZendeskApi<{ items: ZendeskContactItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/contacts',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'updated_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.updated_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const updatedContact = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'updated_contact',
|
||||
displayName: 'Updated Contact',
|
||||
description: 'Fires when an existing contact is updated (polls for updates).',
|
||||
props: {},
|
||||
sampleData: {
|
||||
"id": 2,
|
||||
"creator_id": 1,
|
||||
"owner_id": 1,
|
||||
"is_organization": false,
|
||||
"contact_id": 1,
|
||||
"name": "Mark Johnson",
|
||||
"first_name": "Mark",
|
||||
"last_name": "Johnson",
|
||||
"customer_status": "current",
|
||||
"email": "mark@designservice.com",
|
||||
"phone": "508-778-6516",
|
||||
"created_at": "2014-08-27T16:32:56Z",
|
||||
"updated_at": "2025-10-18T10:30:00Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,88 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
interface ZendeskDealItem {
|
||||
data: ZendeskDeal;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskDeal {
|
||||
id: number;
|
||||
name: string;
|
||||
value: string;
|
||||
stage_id: number;
|
||||
contact_id: number;
|
||||
owner_id: number;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, Record<string, never>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS }) {
|
||||
const response = await callZendeskApi<{ items: ZendeskDealItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/deals',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'updated_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.updated_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const updatedDeal = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'updated_deal',
|
||||
displayName: 'Updated Deal',
|
||||
description: 'Fires when an existing deal is modified (polls for updates).',
|
||||
props: {},
|
||||
sampleData: {
|
||||
"id": 123,
|
||||
"contact_id": 456,
|
||||
"name": "Updated Deal Name",
|
||||
"value": "25000.0",
|
||||
"currency": "USD",
|
||||
"owner_id": 789,
|
||||
"stage_id": 1,
|
||||
"created_at": "2025-10-20T10:00:00Z",
|
||||
"updated_at": "2025-10-27T01:21:00Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,94 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, DedupeStrategy, Polling, pollingHelper } from '@activepieces/pieces-common';
|
||||
import { zendeskSellAuth } from '../common/auth';
|
||||
import { callZendeskApi } from '../common/client';
|
||||
|
||||
interface ZendeskLeadItem {
|
||||
data: ZendeskLead;
|
||||
meta: { type: string };
|
||||
}
|
||||
interface ZendeskLead {
|
||||
id: number;
|
||||
first_name?: string;
|
||||
last_name?: string;
|
||||
organization_name?: string;
|
||||
email?: string;
|
||||
status?: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
const polling: Polling<AppConnectionValueForAuthProperty<typeof zendeskSellAuth>, Record<string, never>> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
async items({ auth, lastFetchEpochMS }) {
|
||||
const response = await callZendeskApi<{ items: ZendeskLeadItem[] }>(
|
||||
HttpMethod.GET,
|
||||
'v2/leads',
|
||||
auth,
|
||||
undefined,
|
||||
{
|
||||
sort_by: 'updated_at:desc',
|
||||
per_page: lastFetchEpochMS === 0 ? '10' : '100',
|
||||
}
|
||||
);
|
||||
|
||||
return response.body.items.map((item) => ({
|
||||
epochMilliSeconds: new Date(item.data.updated_at).getTime(),
|
||||
data: item.data,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const updatedLead = createTrigger({
|
||||
auth: zendeskSellAuth,
|
||||
name: 'updated_lead',
|
||||
displayName: 'Updated Lead',
|
||||
description: 'Fires when an existing lead record is updated (polls for updates).',
|
||||
props: {},
|
||||
sampleData: {
|
||||
"id": 1,
|
||||
"creator_id": 1,
|
||||
"owner_id": 1,
|
||||
"first_name": "Mark",
|
||||
"last_name": "Johnson",
|
||||
"organization_name": "Design Services Inc.",
|
||||
"status": "Contacted",
|
||||
"source_id": 10,
|
||||
"title": "Senior Designer",
|
||||
"description": "Updated description.",
|
||||
"email": "mark.johnson@example.com",
|
||||
"phone": "508-778-6516",
|
||||
"mobile": "508-778-6517",
|
||||
"created_at": "2024-08-27T16:32:56Z",
|
||||
"updated_at": "2025-10-18T10:25:00Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, {
|
||||
auth: context.auth,
|
||||
store: context.store,
|
||||
propsValue: context.propsValue,
|
||||
});
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user