Add Activepieces integration for workflow automation

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

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

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

View File

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

View File

@@ -0,0 +1,35 @@
# Talkable piece
======================
Talkables marketing technology empowers e-commerce brands to acquire & retain high-value customers through referral & loyalty marketing programs. As a single-source solution for your referral marketing and loyalty marketing needs, brands are able to create seamless user experiences designed to increase brand engagement and build brand affinity.
## Website
[https://www.talkable.com/](https://www.talkable.com/)
## API documentation
[https://docs.talkable.com/api_v2.html](https://docs.talkable.com/api_v2.html)
## Actions:
- Find coupon
- Get Loyalty actions
- Create Event
- Create batch of events
- Create Purchase
- Create batch of purchases
- Refund origin
- Find Person
- Update Person data
- Anonymize Person (GDPR)
- Unsubscribe Person
---
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-talkable` to build the library.

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-talkable",
"version": "0.1.9"
}

View File

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

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "Empfehlungsmarketing-Programme, die die Einnahmen steigern",
"Talkable site ID": "Sprechbare Site-ID",
"API key": "API-Schlüssel",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFolge diesen Schritten:\n\n1. **Melde dich in dein Talkable Konto ein:** Öffne Talkable https://www.talkable.com/login.\n\n2. **Gib den Talkable Site Slug und API-Schlüssel ein:** Gehe zu **Alle Site-Einstellungen** > **API-Einstellungen** und kopiere Site ID und API Schlüssel.\n\n",
"Find person": "Person finden",
"Find coupon": "Gutschein finden",
"Update person": "Person aktualisieren",
"Anonymize person": "Person anonymisieren",
"Unsubscribe person": "Person abbestellen",
"Create purchase": "Kauf erstellen",
"Create batch of purchases": "Stapel von Einkäufen erstellen",
"Create event": "Ereignis erstellen",
"Create batch of events": "Batch von Ereignissen erstellen",
"Refund purchase/event": "Kauf/Ereignis zurückerstatten",
"Get loyalty actions": "Treue-Aktionen erhalten",
"Update referral status": "Empfehlungsstatus aktualisieren",
"Share and claim offer": "Angebot teilen und beanspruchen",
"Custom API Call": "Eigener API-Aufruf",
"Find person by email": "Person per E-Mail finden",
"Find coupon code": "Gutscheincode finden",
"Update person by email": "Person per E-Mail aktualisieren",
"Anonymize person by email": "Person per E-Mail anonymisieren",
"Unsubscribe person by email": "Person per E-Mail abbestellen",
"Create purchase in Talkable": "Kauf in Talkable erstellen",
"Create batch of purchases in Talkable": "Erstellen Sie einen Stapel von Einkäufen in Talkable",
"Create event in Talkable": "Ereignis in Talkable erstellen",
"Create batch of events in Talkable": "Erstelle Batch von Ereignissen in Talkable",
"Mark origin as refund": "Herkunft als Rückerstattung markieren",
"Get array of loyalty actions": "Erhalte eine Reihe von Treue-Aktionen",
"You can void or approve referral": "Du kannst die Empfehlung ablehnen oder genehmigen",
"Using this action, you can share and get a friend's reward": "Mit dieser Aktion kannst du teilen und die Belohnung eines Freundes erhalten",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Person email": "Personen-E-Mail",
"Scope": "Bereich",
"Coupon code": "Gutscheincode",
"Person first name": "Person Vorname",
"Person last name": "Person Nachname",
"Person phone number": "Personen-Telefonnummer",
"Person username": "Persönlicher Benutzername",
"Customer ID": "Kunden-ID",
"Custom properties": "Eigene Eigenschaften",
"Opt-in status": "Opt-in-Status",
"Unsubscribe status": "Status abbestellen",
"Unsubscribed date": "Abgemeldetes Datum",
"Email": "E-Mail",
"Order number": "Bestellnummer",
"Subtotal": "Zwischensumme",
"First name": "Vorname",
"Last name": "Nachname",
"Username": "Benutzername",
"Customer id": "Kundennummer",
"Phone number": "Telefonnummer",
"Campaign tags": "Kampagnen-Tags",
"Sharing channels": "Kanäle freigeben",
"IP address": "IP-Adresse",
"UUID": "UUID",
"Created at": "Erstellt am",
"Traffic source": "Traffic-Quelle",
"Coupon codes": "Gutscheincodes",
"Currency iso code": "Währungs-Isocode",
"Custom field": "Benutzerdefiniertes Feld",
"Shipping address": "Lieferadresse",
"Shipping zip": "Versand Zip",
"Items": "Items",
"Create offers": "Angebote erstellen",
"Purchases": "Einkäufe",
"Event category": "Ereigniskategorie",
"Event number": "Event-Nummer",
"Events": "Ereignisse",
"Order or event number": "Bestell- oder Veranstaltungsnummer",
"Refund subtotal": "Zwischensumme erstatten",
"Refunded date": "Erstattungsdatum",
"Status": "Status",
"Advocate email": "E-Mail anfordern",
"Friend email": "E-Mail des Freundes",
"Campaign tag": "Kampagnen-Tag",
"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)",
"Select scope": "Bereich auswählen",
"Opt-in status true/false": "Opt-in-Status true/false",
"Unsubscribe status true/false": "Abmelde-Status true/false",
"Required for multi-currency sites": "Erforderlich für mehrwährende Sites",
"You can pass items with purchase": "Du kannst Gegenstände mit Kauf übergeben",
"Create offers for campaign": "Angebote für Kampagne erstellen",
"You can pass items with event": "Du kannst Items mit Event übergeben",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Empfehlungsstatus auswählen. Nur \"genehmigt\" oder \"Storniert\" werden akzeptiert",
"Example : advocate@example.com": "Beispiel : advocate@example.com",
"Example : friend@example.com": "Beispiel : friend@example.com",
"Example : invite": "Beispiel : Einladung",
"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..",
"General information": "Allgemeine Informationen",
"Referrals as advocate": "Empfehlungen als Befürworter",
"Referrals as friend": "Empfehlungen als Freund",
"Rewards": "Belohnung",
"Shares": "Aktien",
"Personal data": "Persönliche Daten",
"true": "ja",
"false": "nein",
"approved": "genehmigt",
"voided": "ungültig",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "Programas de marketing de referencia que generan ingresos",
"Talkable site ID": "ID del sitio calificable",
"API key": "Clave API",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n",
"Find person": "Buscar persona",
"Find coupon": "Buscar cupón",
"Update person": "Actualizar persona",
"Anonymize person": "Anonimizar persona",
"Unsubscribe person": "Desuscribirse persona",
"Create purchase": "Crear compra",
"Create batch of purchases": "Crear lote de compras",
"Create event": "Crear evento",
"Create batch of events": "Crear lote de eventos",
"Refund purchase/event": "Reembolso de compra/evento",
"Get loyalty actions": "Acciones de lealtad",
"Update referral status": "Actualizar estado de referencia",
"Share and claim offer": "Compartir y reclamar oferta",
"Custom API Call": "Llamada API personalizada",
"Find person by email": "Buscar persona por email",
"Find coupon code": "Buscar código de cupón",
"Update person by email": "Actualizar persona por email",
"Anonymize person by email": "Anonimizar persona por correo electrónico",
"Unsubscribe person by email": "Desuscribirse persona por correo electrónico",
"Create purchase in Talkable": "Crear compra en Talkable",
"Create batch of purchases in Talkable": "Crear un lote de compras en Talkable",
"Create event in Talkable": "Crear evento en Hablable",
"Create batch of events in Talkable": "Crear lote de eventos en Talkable",
"Mark origin as refund": "Marcar origen como reembolso",
"Get array of loyalty actions": "Obtener un array de acciones de lealtad",
"You can void or approve referral": "Puedes anular o aprobar la referencia",
"Using this action, you can share and get a friend's reward": "Usando esta acción, puedes compartir y obtener la recompensa de un amigo",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Person email": "Email de la persona",
"Scope": "Alcance",
"Coupon code": "Código del cupón",
"Person first name": "Nombre de la persona",
"Person last name": "Apellido de persona",
"Person phone number": "Número de teléfono de la persona",
"Person username": "Nombre de usuario",
"Customer ID": "ID del cliente",
"Custom properties": "Propiedades personalizadas",
"Opt-in status": "Estado opt-in",
"Unsubscribe status": "Estado de desuscripción",
"Unsubscribed date": "Fecha de cancelación",
"Email": "E-mail",
"Order number": "Número de pedido",
"Subtotal": "Subtotal",
"First name": "Nombre",
"Last name": "Apellido",
"Username": "Usuario",
"Customer id": "Id del cliente",
"Phone number": "Número de teléfono",
"Campaign tags": "Etiquetas de campaña",
"Sharing channels": "Canales compartidos",
"IP address": "Dirección IP",
"UUID": "UUID",
"Created at": "Creado el",
"Traffic source": "Fuente de Tricción",
"Coupon codes": "Códigos de cupón",
"Currency iso code": "Código de moneda ISO",
"Custom field": "Campo personalizado",
"Shipping address": "Dirección de envío",
"Shipping zip": "Envío zip",
"Items": "Elementos",
"Create offers": "Crear ofertas",
"Purchases": "Compras",
"Event category": "Categoría del evento",
"Event number": "Número de evento",
"Events": "Eventos",
"Order or event number": "Pedido o número de evento",
"Refund subtotal": "Subtotal del reembolso",
"Refunded date": "Fecha de reembolso",
"Status": "Estado",
"Advocate email": "Email de Abogado",
"Friend email": "Correo del amigo",
"Campaign tag": "Etiqueta de campaña",
"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)",
"Select scope": "Seleccionar ámbito",
"Opt-in status true/false": "Estado de confirmación verdadero/falso",
"Unsubscribe status true/false": "Estado de desuscripción verdadero/falso",
"Required for multi-currency sites": "Requerido para sitios multidivisas",
"You can pass items with purchase": "Puedes pasar artículos con la compra",
"Create offers for campaign": "Crear ofertas para la campaña",
"You can pass items with event": "Puedes pasar artículos con el evento",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Seleccione el estado de referencia. Sólo se aceptan \"aprobado\" o \"anulado\"",
"Example : advocate@example.com": "Ejemplo: advocate@example.com",
"Example : friend@example.com": "Ejemplo: friend@example.com",
"Example : invite": "Ejemplo: invitación",
"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 PDFs, imágenes, etc.",
"General information": "Información general",
"Referrals as advocate": "Referir como defensor",
"Referrals as friend": "Referir como amigo",
"Rewards": "Recompensas",
"Shares": "Acciones",
"Personal data": "Datos personales",
"true": "verdadero",
"false": "falso",
"approved": "aprobado",
"voided": "anulado",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "Programmes de marketing de parrainage qui génèrent des revenus",
"Talkable site ID": "Identifiant du site parlable",
"API key": "Clé API",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n",
"Find person": "Trouver une personne",
"Find coupon": "Trouver un coupon",
"Update person": "Mettre à jour la personne",
"Anonymize person": "Anonymiser la personne",
"Unsubscribe person": "Se désabonner",
"Create purchase": "Créer un achat",
"Create batch of purchases": "Créer un lot d'achats",
"Create event": "Créer un événement",
"Create batch of events": "Créer un lot d'événements",
"Refund purchase/event": "Rembourser l'achat/l'événement",
"Get loyalty actions": "Obtenir des actions de fidélité",
"Update referral status": "Mettre à jour le statut de parrainage",
"Share and claim offer": "Partager et réclamer l'offre",
"Custom API Call": "Appel d'API personnalisé",
"Find person by email": "Trouver une personne par e-mail",
"Find coupon code": "Trouver le code de coupon",
"Update person by email": "Mettre à jour personne par e-mail",
"Anonymize person by email": "Anonymiser personne par e-mail",
"Unsubscribe person by email": "Se désabonner par e-mail",
"Create purchase in Talkable": "Créer un achat dans Talkable",
"Create batch of purchases in Talkable": "Créer un lot d'achats dans Talkable",
"Create event in Talkable": "Créer un événement dans Talkable",
"Create batch of events in Talkable": "Créer un lot d'événements dans Talkable",
"Mark origin as refund": "Marquer l'origine comme remboursement",
"Get array of loyalty actions": "Obtenir un tableau d'actions de fidélité",
"You can void or approve referral": "Tu peux annuler ou approuver la recommandation",
"Using this action, you can share and get a friend's reward": "En utilisant cette action, vous pouvez partager et obtenir les récompenses d'un ami",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Person email": "E-mail de la personne",
"Scope": "Périmètre d'application",
"Coupon code": "Code promo",
"Person first name": "Prénom de la personne",
"Person last name": "Nom de la personne",
"Person phone number": "Numéro de téléphone de la personne",
"Person username": "Nom d'utilisateur de la personne",
"Customer ID": "ID du client",
"Custom properties": "Propriétés personnalisées",
"Opt-in status": "Statut de l'opt-in",
"Unsubscribe status": "Statut de désinscription",
"Unsubscribed date": "Date de désinscription",
"Email": "Courriel",
"Order number": "Numéro de commande",
"Subtotal": "Sous-total",
"First name": "Prénom",
"Last name": "Nom de famille",
"Username": "Nom d'utilisateur",
"Customer id": "Identifiant du client",
"Phone number": "Numéro de téléphone",
"Campaign tags": "Étiquettes de campagne",
"Sharing channels": "Partage des canaux",
"IP address": "Adresse IP",
"UUID": "UUID",
"Created at": "Créé le",
"Traffic source": "Source du trafic",
"Coupon codes": "Codes de coupon",
"Currency iso code": "Code iso de la devise",
"Custom field": "Champ personnalisé",
"Shipping address": "Adresse de livraison",
"Shipping zip": "Code postal de livraison",
"Items": "Éléments",
"Create offers": "Créer des offres",
"Purchases": "Achats",
"Event category": "Catégorie d'événement",
"Event number": "Numéro de l'événement",
"Events": "Évènements",
"Order or event number": "Numéro de commande ou d'événement",
"Refund subtotal": "Sous-total du remboursement",
"Refunded date": "Date de remboursement",
"Status": "Statut",
"Advocate email": "Advocate email",
"Friend email": "Courriel de l'ami",
"Campaign tag": "Balise de campagne",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"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)",
"Select scope": "Sélectionner le périmètre d'application",
"Opt-in status true/false": "Statut opt-in vrai/faux",
"Unsubscribe status true/false": "Statut de désinscription vrai/faux",
"Required for multi-currency sites": "Requis pour les sites multi-devises",
"You can pass items with purchase": "Vous pouvez passer des objets avec l'achat",
"Create offers for campaign": "Créer des offres pour la campagne",
"You can pass items with event": "Vous pouvez passer des objets avec un événement",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Sélectionnez le statut de parrainage. Seuls « approuvé» ou « annulé» sont acceptés.",
"Example : advocate@example.com": "Exemple : advocate@example.com",
"Example : friend@example.com": "Exemple : friend@example.com",
"Example : invite": "Exemple : invitation",
"Authorization headers are injected automatically from your connection.": "Les en-têtes 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.",
"General information": "Informations générales",
"Referrals as advocate": "Parrainage comme défenseur",
"Referrals as friend": "Parrainage comme ami",
"Rewards": "Récompenses",
"Shares": "Partages",
"Personal data": "Données personnelles",
"true": "vrai",
"false": "faux",
"approved": "approuvé",
"voided": "annulé",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "紹介マーケティングプログラムが収益を上げます",
"Talkable site ID": "トーク可能なサイトID",
"API key": "API キー",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n",
"Find person": "人を探す",
"Find coupon": "クーポンを検索",
"Update person": "担当者を更新",
"Anonymize person": "匿名化する",
"Unsubscribe person": "Unsubscribe person",
"Create purchase": "購入を作成",
"Create batch of purchases": "一括購入を作成",
"Create event": "予定を作成",
"Create batch of events": "一括イベントを作成",
"Refund purchase/event": "払い戻し購入/イベント",
"Get loyalty actions": "ロイヤルティアクションを取得する",
"Update referral status": "紹介状態を更新",
"Share and claim offer": "オファーを共有して請求する",
"Custom API Call": "カスタムAPI通話",
"Find person by email": "電子メールで人を検索",
"Find coupon code": "クーポンコードを検索",
"Update person by email": "電子メールで人を更新",
"Anonymize person by email": "メールアドレスで匿名化する",
"Unsubscribe person by email": "メールアドレスで購読を解除",
"Create purchase in Talkable": "Talkableで購入を作成",
"Create batch of purchases in Talkable": "Talkableで一括購入を作成する",
"Create event in Talkable": "トークテーブルでイベントを作成する",
"Create batch of events in Talkable": "Talkable で一括イベントを作成する",
"Mark origin as refund": "原点を返金としてマーク",
"Get array of loyalty actions": "ロイヤルティアクションの配列を取得",
"You can void or approve referral": "紹介を無効または承認することができます",
"Using this action, you can share and get a friend's reward": "この操作で友達の報酬を獲得できます",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Person email": "個人メールアドレス",
"Scope": "スコープ",
"Coupon code": "クーポンコード",
"Person first name": "ユーザー名",
"Person last name": "人の姓",
"Person phone number": "個人の電話番号",
"Person username": "個人のユーザー名",
"Customer ID": "顧客 ID",
"Custom properties": "カスタムプロパティ",
"Opt-in status": "オプトインの状態",
"Unsubscribe status": "Unsubscribe status",
"Unsubscribed date": "購読解除日",
"Email": "Eメールアドレス",
"Order number": "注文番号",
"Subtotal": "小計",
"First name": "名",
"Last name": "姓",
"Username": "ユーザー名",
"Customer id": "顧客 id",
"Phone number": "電話番号",
"Campaign tags": "キャンペーンタグ",
"Sharing channels": "チャンネルを共有",
"IP address": "IP アドレス",
"UUID": "UUID",
"Created at": "作成日時",
"Traffic source": "トラフィックソース",
"Coupon codes": "クーポンコード",
"Currency iso code": "通貨ISOコード",
"Custom field": "カスタムフィールド",
"Shipping address": "配送先住所",
"Shipping zip": "配送先郵便番号",
"Items": "アイテム",
"Create offers": "オファーを作成",
"Purchases": "購入",
"Event category": "イベントカテゴリ",
"Event number": "イベント番号",
"Events": "イベント",
"Order or event number": "注文またはイベント番号",
"Refund subtotal": "返金小計",
"Refunded date": "返金日",
"Status": "Status",
"Advocate email": "アドボケートのメール",
"Friend email": "友達メール",
"Campaign tag": "キャンペーンタグ",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"Select scope": "スコープを選択",
"Opt-in status true/false": "オプトインのステータスがtrue/false",
"Unsubscribe status true/false": "Unsubscribe status true/false",
"Required for multi-currency sites": "複数通貨サイトに必要です",
"You can pass items with purchase": "購入してアイテムを渡すことができます",
"Create offers for campaign": "キャンペーンのオファーを作成",
"You can pass items with event": "イベントでアイテムを渡すことができます",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "紹介状態を選択します。「承認済み」または「無効」のみが承認されます",
"Example : advocate@example.com": "例 : advocate@example.com",
"Example : friend@example.com": "例 : friend@example.com",
"Example : invite": "例 : 招待",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"General information": "一般情報",
"Referrals as advocate": "提唱者として紹介する",
"Referrals as friend": "友達として紹介する",
"Rewards": "Recompensas",
"Shares": "シェア",
"Personal data": "個人データ",
"true": "true",
"false": "false",
"approved": "承認済み",
"voided": "無効にしました",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "Referral marketing programma's die inkomsten aandrijven",
"Talkable site ID": "Talkable site ID",
"API key": "API sleutel",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nVolg deze stappen:\n\n1. **Log in op je Talkable account:** Open https://www.talkable.com/login.\n\n2. **Vul de Talkable site slug en API key in:** Ga naar **Alle site instellingen** > **API instellingen**, en kopieer Site ID en API key.\n\n",
"Find person": "Zoek persoon",
"Find coupon": "Coupon zoeken",
"Update person": "Persoon bijwerken",
"Anonymize person": "Persoon anonimiseren",
"Unsubscribe person": "Persoon afmelden",
"Create purchase": "Aankoop aanmaken",
"Create batch of purchases": "Maak een groep aankopen",
"Create event": "Creëer evenement",
"Create batch of events": "Maak een reeks van afspraken",
"Refund purchase/event": "Terugbetaling aankoop/evenement",
"Get loyalty actions": "Loyaliteit acties verkrijgen",
"Update referral status": "Referentiestatus bijwerken",
"Share and claim offer": "Deel en claim aanbod",
"Custom API Call": "Custom API Call",
"Find person by email": "Zoek persoon per e-mail",
"Find coupon code": "Zoek kortingscode",
"Update person by email": "Update persoon per e-mail",
"Anonymize person by email": "Persoon anoniem per e-mail",
"Unsubscribe person by email": "Persoon afmelden via e-mail",
"Create purchase in Talkable": "Maak een aankoop in Talkable",
"Create batch of purchases in Talkable": "Maak een groep aankopen in Talkable",
"Create event in Talkable": "Creëer een afspraak in Talkable",
"Create batch of events in Talkable": "Maak een reeks afspraken in Talkable",
"Mark origin as refund": "Markeer oorsprong als terugbetaling",
"Get array of loyalty actions": "Krijg array van loyaliteit acties",
"You can void or approve referral": "Je kunt de aanbeveling annuleren of goedkeuren",
"Using this action, you can share and get a friend's reward": "Met behulp van deze actie kunt u de beloning van een vriend delen en krijgen",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Person email": "E-mailadres persoon",
"Scope": "Bereik",
"Coupon code": "Kortingsbon code",
"Person first name": "Voornaam persoon",
"Person last name": "Achternaam persoon",
"Person phone number": "Telefoonnummer persoon",
"Person username": "Persoon gebruikersnaam",
"Customer ID": "Klant ID",
"Custom properties": "Aangepaste eigenschappen",
"Opt-in status": "Opt-in status",
"Unsubscribe status": "Status uitschrijven",
"Unsubscribed date": "Uitgeschreven datum",
"Email": "E-mail",
"Order number": "Bestelling nummer",
"Subtotal": "Subtotaal",
"First name": "Voornaam is vereist.",
"Last name": "Achternaam is vereist.",
"Username": "Gebruikersnaam",
"Customer id": "Klant ID",
"Phone number": "Telefoon nummer",
"Campaign tags": "Campagne tags",
"Sharing channels": "Kanalen delen",
"IP address": "IP adres",
"UUID": "UUID",
"Created at": "Aangemaakt op",
"Traffic source": "Data bron",
"Coupon codes": "Kortingsbon codes",
"Currency iso code": "Valuta iso code",
"Custom field": "Aangepast veld",
"Shipping address": "Verzend adres",
"Shipping zip": "Verzend postadres",
"Items": "Artikelen",
"Create offers": "Aanbiedingen aanmaken",
"Purchases": "Aankopen",
"Event category": "Event categorie",
"Event number": "Gebeurtenis nummer",
"Events": "Evenementen",
"Order or event number": "Bestelling of afspraak nummer",
"Refund subtotal": "Terugbetaling subtotaal",
"Refunded date": "Datum terugbetaald",
"Status": "status",
"Advocate email": "Advocate e-mail",
"Friend email": "Vriend e-mail",
"Campaign tag": "Campagne tag",
"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)",
"Select scope": "Selecteer bereik",
"Opt-in status true/false": "Opt-in status true/false",
"Unsubscribe status true/false": "Uitschrijven van status waar/onwaar",
"Required for multi-currency sites": "Vereist voor multi-valuta sites",
"You can pass items with purchase": "Je kunt items passeren met aankoop",
"Create offers for campaign": "Aanbiedingen voor campagne aanmaken",
"You can pass items with event": "Je kunt items passeren met een gebeurtenis",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Selecteer referral status. Alleen \"goedgekeurd\" of \"ongeldig\" worden geaccepteerd",
"Example : advocate@example.com": "Voorbeeld : advocate@example.com",
"Example : friend@example.com": "Voorbeeld : vriend@voorbeeld.com",
"Example : invite": "Voorbeeld : uitnodiging",
"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..",
"General information": "Algemene informatie",
"Referrals as advocate": "Verwijzingen als voorstander",
"Referrals as friend": "Verwijzingen als vriend",
"Rewards": "Beloningen",
"Shares": "Aandelen",
"Personal data": "Persoonlijke gegevens",
"true": "waar",
"false": "onwaar",
"approved": "goedgekeurd",
"voided": "ongeldig verklaard",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "Programas de marketing de referências que geram receitas",
"Talkable site ID": "ID do site Talkable",
"API key": "Chave da API",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nSiga estes passos:\n\n1. **Entre na sua conta Talkable:** Abra o Talkable https://www.talkable.com/login.\n\n2. **Digite a chave Slug do site e API Talkable:** Vá para **Todas as Configurações do Site** > **Configurações da API** e copie o ID do site e a chave de API.\n\n",
"Find person": "Encontrar pessoa",
"Find coupon": "Encontrar cupom",
"Update person": "Atualizar pessoa",
"Anonymize person": "Manter pessoa anônima",
"Unsubscribe person": "Desinscrever pessoa",
"Create purchase": "Criar compra",
"Create batch of purchases": "Criar lote de compras",
"Create event": "Criar evento",
"Create batch of events": "Criar lote de eventos",
"Refund purchase/event": "Reembolsar compra/evento",
"Get loyalty actions": "Obter ações de fidelidade",
"Update referral status": "Atualizar status de referência",
"Share and claim offer": "Compartilhar e reivindicar oferta",
"Custom API Call": "Chamada de API personalizada",
"Find person by email": "Encontrar pessoa por e-mail",
"Find coupon code": "Encontrar código de cupom",
"Update person by email": "Atualizar pessoa por e-mail",
"Anonymize person by email": "Anonimizar pessoa por e-mail",
"Unsubscribe person by email": "Cancelar inscrição da pessoa por e-mail",
"Create purchase in Talkable": "Crie uma compra em Talkable",
"Create batch of purchases in Talkable": "Crie um lote de compras no Talkable",
"Create event in Talkable": "Criar evento no Talkable",
"Create batch of events in Talkable": "Criar lote de eventos em Talkable",
"Mark origin as refund": "Marcar origem como reembolso",
"Get array of loyalty actions": "Obter matriz de ações de fidelidade",
"You can void or approve referral": "Você pode anular ou aprovar referência",
"Using this action, you can share and get a friend's reward": "Usando esta ação, você pode compartilhar e receber uma recompensa de um amigo",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Person email": "E-mail pessoal",
"Scope": "Escopo",
"Coupon code": "Código do cupom",
"Person first name": "Primeiro nome da pessoa",
"Person last name": "Sobrenome da pessoa",
"Person phone number": "Número do telefone pessoal",
"Person username": "Usuário pessoal",
"Customer ID": "ID do cliente",
"Custom properties": "Propriedades personalizadas",
"Opt-in status": "Status Opt-in",
"Unsubscribe status": "Status de descadastro",
"Unsubscribed date": "Data de descadastro",
"Email": "e-mail",
"Order number": "Número do pedido",
"Subtotal": "Sub-total",
"First name": "Primeiro nome",
"Last name": "Último Nome",
"Username": "Usuário:",
"Customer id": "Id do cliente",
"Phone number": "Número de telefone",
"Campaign tags": "Tags da Campanha",
"Sharing channels": "Canais de compartilhamento",
"IP address": "Endereço IP",
"UUID": "UUID",
"Created at": "Criado em",
"Traffic source": "Origem do tráfego",
"Coupon codes": "Códigos de cupom",
"Currency iso code": "Código ISO da moeda",
"Custom field": "Campo personalizado",
"Shipping address": "Endereço de Entrega",
"Shipping zip": "CEP de envio",
"Items": "Itens",
"Create offers": "Criar ofertas",
"Purchases": "Compras",
"Event category": "Categoria de evento",
"Event number": "Número do evento",
"Events": "Eventos",
"Order or event number": "Pedido ou número de evento",
"Refund subtotal": "Subtotal de reembolso",
"Refunded date": "Data de reembolso",
"Status": "Estado",
"Advocate email": "E-mail de advogado",
"Friend email": "E-mail de amigo",
"Campaign tag": "Tag da Campanha",
"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)",
"Select scope": "Selecionar escopo",
"Opt-in status true/false": "Opt-in status verdadeiro/falso",
"Unsubscribe status true/false": "Status de cancelamento verdadeiro/falso",
"Required for multi-currency sites": "Necessário para sites com múltiplas moedas",
"You can pass items with purchase": "Você pode passar itens com compra",
"Create offers for campaign": "Criar ofertas para a campanha",
"You can pass items with event": "Você pode passar itens com evento",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Selecione o status de referência. Apenas \"aprovado\" ou \"anulado\" são aceitos",
"Example : advocate@example.com": "Exemplo: advocate@example.com",
"Example : friend@example.com": "Exemplo: friend@example.com",
"Example : invite": "Exemplo: convite",
"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..",
"General information": "Informação Geral",
"Referrals as advocate": "Indicações como advogado",
"Referrals as friend": "Indicações como amigo",
"Rewards": "Prêmios",
"Shares": "Compartilhamentos",
"Personal data": "Dados pessoais",
"true": "verdadeiro",
"false": "falso",
"approved": "aprovado",
"voided": "anulado",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,113 @@
{
"Talkable": "Говорящий",
"Referral marketing programs that drive revenue": "Реферальная маркетинговая программа, приводящая к доходам",
"Talkable site ID": "Идентификатор сайта",
"API key": "API ключ",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n",
"Find person": "Найти человека",
"Find coupon": "Найти купон",
"Update person": "Обновить человека",
"Anonymize person": "Анонимизировать человека",
"Unsubscribe person": "Отписаться от человека",
"Create purchase": "Создать покупку",
"Create batch of purchases": "Создать партию покупок",
"Create event": "Создать событие",
"Create batch of events": "Создать партию событий",
"Refund purchase/event": "Возврат покупки/события",
"Get loyalty actions": "Получить действия лояльности",
"Update referral status": "Обновить статус реферала",
"Share and claim offer": "Поделиться и оферты",
"Custom API Call": "Пользовательский вызов API",
"Find person by email": "Найти человека по электронной почте",
"Find coupon code": "Найти код купона",
"Update person by email": "Обновить человека по электронной почте",
"Anonymize person by email": "Анонимизировать пользователя по электронной почте",
"Unsubscribe person by email": "Отписаться от человека по электронной почте",
"Create purchase in Talkable": "Создать покупку в Talkable",
"Create batch of purchases in Talkable": "Создание партии покупок в Talkable",
"Create event in Talkable": "Создать событие в Talkable",
"Create batch of events in Talkable": "Создать партию событий в Talkable",
"Mark origin as refund": "Отметить происхождение как возврат",
"Get array of loyalty actions": "Получить массив действий лояльности",
"You can void or approve referral": "Вы можете аннулировать или одобрить реферал",
"Using this action, you can share and get a friend's reward": "Используя это действие, вы можете поделиться и получить награду друга",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Person email": "Электронная почта",
"Scope": "Сфера охвата",
"Coupon code": "Код купона",
"Person first name": "Имя пользователя",
"Person last name": "Фамилия пользователя",
"Person phone number": "Номер телефона",
"Person username": "Имя пользователя",
"Customer ID": "ID клиента",
"Custom properties": "Пользовательские свойства",
"Opt-in status": "Статус участника",
"Unsubscribe status": "Статус отписки",
"Unsubscribed date": "Дата отказа от подписки",
"Email": "Почта",
"Order number": "Номер заказа",
"Subtotal": "Итого",
"First name": "Имя",
"Last name": "Фамилия",
"Username": "Имя пользователя",
"Customer id": "ID клиента",
"Phone number": "Номер телефона",
"Campaign tags": "Теги кампании",
"Sharing channels": "Обмен каналами",
"IP address": "IP-адрес",
"UUID": "UUID",
"Created at": "Создано в",
"Traffic source": "Источник трафика",
"Coupon codes": "Коды купонов",
"Currency iso code": "Код Валюты",
"Custom field": "Настраиваемое поле",
"Shipping address": "Адрес доставки",
"Shipping zip": "Почтовый индекс",
"Items": "Items",
"Create offers": "Создать предложения",
"Purchases": "Покупки",
"Event category": "Категория события",
"Event number": "Номер события",
"Events": "События",
"Order or event number": "Заказ или номер события",
"Refund subtotal": "Сумма возврата",
"Refunded date": "Дата возврата",
"Status": "Status",
"Advocate email": "Адвокатская почта",
"Friend email": "Email друга",
"Campaign tag": "Тег кампании",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"Select scope": "Выберите область",
"Opt-in status true/false": "Ввод в статус true/false",
"Unsubscribe status true/false": "Статус отмены подписки true/false",
"Required for multi-currency sites": "Требуется для многовалютных сайтов",
"You can pass items with purchase": "Вы можете передавать товары с покупкой",
"Create offers for campaign": "Создать предложения для кампании",
"You can pass items with event": "Вы можете передавать предметы с событием",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Выберите статус реферала. Принимаются только \"одобренные\" или \"аннулированные\"",
"Example : advocate@example.com": "Пример: advocate@example.com",
"Example : friend@example.com": "Пример: friend@example.com",
"Example : invite": "Пример : пригласить",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"General information": "Информация общего характера",
"Referrals as advocate": "Адресаты как адвокат",
"Referrals as friend": "Рефералы другу",
"Rewards": "Награды",
"Shares": "Акции",
"Personal data": "Личные данные",
"true": "верно",
"false": "неверно",
"approved": "одобрено",
"voided": "аннулирован",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "Referral marketing programs that drive revenue",
"Talkable site ID": "Talkable site ID",
"API key": "API key",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n",
"Find person": "Find person",
"Find coupon": "Find coupon",
"Update person": "Update person",
"Anonymize person": "Anonymize person",
"Unsubscribe person": "Unsubscribe person",
"Create purchase": "Create purchase",
"Create batch of purchases": "Create batch of purchases",
"Create event": "Create event",
"Create batch of events": "Create batch of events",
"Refund purchase/event": "Refund purchase/event",
"Get loyalty actions": "Get loyalty actions",
"Update referral status": "Update referral status",
"Share and claim offer": "Share and claim offer",
"Custom API Call": "Custom API Call",
"Find person by email": "Find person by email",
"Find coupon code": "Find coupon code",
"Update person by email": "Update person by email",
"Anonymize person by email": "Anonymize person by email",
"Unsubscribe person by email": "Unsubscribe person by email",
"Create purchase in Talkable": "Create purchase in Talkable",
"Create batch of purchases in Talkable": "Create batch of purchases in Talkable",
"Create event in Talkable": "Create event in Talkable",
"Create batch of events in Talkable": "Create batch of events in Talkable",
"Mark origin as refund": "Mark origin as refund",
"Get array of loyalty actions": "Get array of loyalty actions",
"You can void or approve referral": "You can void or approve referral",
"Using this action, you can share and get a friend's reward": "Using this action, you can share and get a friend's reward",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Person email": "Person email",
"Scope": "Scope",
"Coupon code": "Coupon code",
"Person first name": "Person first name",
"Person last name": "Person last name",
"Person phone number": "Person phone number",
"Person username": "Person username",
"Customer ID": "Customer ID",
"Custom properties": "Custom properties",
"Opt-in status": "Opt-in status",
"Unsubscribe status": "Unsubscribe status",
"Unsubscribed date": "Unsubscribed date",
"Email": "Email",
"Order number": "Order number",
"Subtotal": "Subtotal",
"First name": "First name",
"Last name": "Last name",
"Username": "Username",
"Customer id": "Customer id",
"Phone number": "Phone number",
"Campaign tags": "Campaign tags",
"Sharing channels": "Sharing channels",
"IP address": "IP address",
"UUID": "UUID",
"Created at": "Created at",
"Traffic source": "Traffic source",
"Coupon codes": "Coupon codes",
"Currency iso code": "Currency iso code",
"Custom field": "Custom field",
"Shipping address": "Shipping address",
"Shipping zip": "Shipping zip",
"Items": "Items",
"Create offers": "Create offers",
"Purchases": "Purchases",
"Event category": "Event category",
"Event number": "Event number",
"Events": "Events",
"Order or event number": "Order or event number",
"Refund subtotal": "Refund subtotal",
"Refunded date": "Refunded date",
"Status": "Status",
"Advocate email": "Advocate email",
"Friend email": "Friend email",
"Campaign tag": "Campaign tag",
"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)",
"Select scope": "Select scope",
"Opt-in status true/false": "Opt-in status true/false",
"Unsubscribe status true/false": "Unsubscribe status true/false",
"Required for multi-currency sites": "Required for multi-currency sites",
"You can pass items with purchase": "You can pass items with purchase",
"Create offers for campaign": "Create offers for campaign",
"You can pass items with event": "You can pass items with event",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Select referral status. Only \"approved\" or \"voided\" are accepted",
"Example : advocate@example.com": "Example : advocate@example.com",
"Example : friend@example.com": "Example : friend@example.com",
"Example : invite": "Example : invite",
"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..",
"General information": "General information",
"Referrals as advocate": "Referrals as advocate",
"Referrals as friend": "Referrals as friend",
"Rewards": "Rewards",
"Shares": "Shares",
"Personal data": "Personal data",
"true": "true",
"false": "false",
"approved": "approved",
"voided": "voided",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,113 @@
{
"Talkable": "Talkable",
"Referral marketing programs that drive revenue": "Referral marketing programs that drive revenue",
"Talkable site ID": "Talkable site ID",
"API key": "API key",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n",
"Find person": "Find person",
"Find coupon": "Find coupon",
"Update person": "Update person",
"Anonymize person": "Anonymize person",
"Unsubscribe person": "Unsubscribe person",
"Create purchase": "Create purchase",
"Create batch of purchases": "Create batch of purchases",
"Create event": "Create event",
"Create batch of events": "Create batch of events",
"Refund purchase/event": "Refund purchase/event",
"Get loyalty actions": "Get loyalty actions",
"Update referral status": "Update referral status",
"Share and claim offer": "Share and claim offer",
"Custom API Call": "Custom API Call",
"Find person by email": "Find person by email",
"Find coupon code": "Find coupon code",
"Update person by email": "Update person by email",
"Anonymize person by email": "Anonymize person by email",
"Unsubscribe person by email": "Unsubscribe person by email",
"Create purchase in Talkable": "Create purchase in Talkable",
"Create batch of purchases in Talkable": "Create batch of purchases in Talkable",
"Create event in Talkable": "Create event in Talkable",
"Create batch of events in Talkable": "Create batch of events in Talkable",
"Mark origin as refund": "Mark origin as refund",
"Get array of loyalty actions": "Get array of loyalty actions",
"You can void or approve referral": "You can void or approve referral",
"Using this action, you can share and get a friend's reward": "Using this action, you can share and get a friend's reward",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Person email": "Person email",
"Scope": "Scope",
"Coupon code": "Coupon code",
"Person first name": "Person first name",
"Person last name": "Person last name",
"Person phone number": "Person phone number",
"Person username": "Person username",
"Customer ID": "Customer ID",
"Custom properties": "Custom properties",
"Opt-in status": "Opt-in status",
"Unsubscribe status": "Unsubscribe status",
"Unsubscribed date": "Unsubscribed date",
"Email": "Email",
"Order number": "Order number",
"Subtotal": "Subtotal",
"First name": "First name",
"Last name": "Last name",
"Username": "Username",
"Customer id": "Customer id",
"Phone number": "Phone number",
"Campaign tags": "Campaign tags",
"Sharing channels": "Sharing channels",
"IP address": "IP address",
"UUID": "UUID",
"Created at": "Created at",
"Traffic source": "Traffic source",
"Coupon codes": "Coupon codes",
"Currency iso code": "Currency iso code",
"Custom field": "Custom field",
"Shipping address": "Shipping address",
"Shipping zip": "Shipping zip",
"Items": "Các mục",
"Create offers": "Create offers",
"Purchases": "Purchases",
"Event category": "Event category",
"Event number": "Event number",
"Events": "Events",
"Order or event number": "Order or event number",
"Refund subtotal": "Refund subtotal",
"Refunded date": "Refunded date",
"Status": "Status",
"Advocate email": "Advocate email",
"Friend email": "Friend email",
"Campaign tag": "Campaign tag",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Select scope": "Select scope",
"Opt-in status true/false": "Opt-in status true/false",
"Unsubscribe status true/false": "Unsubscribe status true/false",
"Required for multi-currency sites": "Required for multi-currency sites",
"You can pass items with purchase": "You can pass items with purchase",
"Create offers for campaign": "Create offers for campaign",
"You can pass items with event": "You can pass items with event",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Select referral status. Only \"approved\" or \"voided\" are accepted",
"Example : advocate@example.com": "Example : advocate@example.com",
"Example : friend@example.com": "Example : friend@example.com",
"Example : invite": "Example : invite",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"General information": "General information",
"Referrals as advocate": "Referrals as advocate",
"Referrals as friend": "Referrals as friend",
"Rewards": "Rewards",
"Shares": "Shares",
"Personal data": "Personal data",
"true": "đúng",
"false": "sai",
"approved": "approved",
"voided": "voided",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,114 @@
{
"Referral marketing programs that drive revenue": "Referral marketing programs that drive revenue",
"Talkable site ID": "Talkable site ID",
"API key": "API key",
"\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n": "\nFollow these steps:\n\n1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.\n\n2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.\n\n",
"Find person": "Find person",
"Find coupon": "Find coupon",
"Update person": "Update person",
"Anonymize person": "Anonymize person",
"Unsubscribe person": "Unsubscribe person",
"Create purchase": "Create purchase",
"Create batch of purchases": "Create batch of purchases",
"Create event": "Create event",
"Create batch of events": "Create batch of events",
"Refund purchase/event": "Refund purchase/event",
"Get loyalty actions": "Get loyalty actions",
"Update referral status": "Update referral status",
"Share and claim offer": "Share and claim offer",
"Custom API Call": "自定义 API 呼叫",
"Find person by email": "Find person by email",
"Find coupon code": "Find coupon code",
"Update person by email": "Update person by email",
"Anonymize person by email": "Anonymize person by email",
"Unsubscribe person by email": "Unsubscribe person by email",
"Create purchase in Talkable": "Create purchase in Talkable",
"Create batch of purchases in Talkable": "Create batch of purchases in Talkable",
"Create event in Talkable": "Create event in Talkable",
"Create batch of events in Talkable": "Create batch of events in Talkable",
"Mark origin as refund": "Mark origin as refund",
"Get array of loyalty actions": "Get array of loyalty actions",
"You can void or approve referral": "You can void or approve referral",
"Using this action, you can share and get a friend's reward": "Using this action, you can share and get a friend's reward",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Person email": "Person email",
"Scope": "Scope",
"Coupon code": "Coupon code",
"Person first name": "Person first name",
"Person last name": "Person last name",
"Person phone number": "Person phone number",
"Person username": "Person username",
"Customer ID": "Customer ID",
"Custom properties": "Custom properties",
"Opt-in status": "Opt-in status",
"Unsubscribe status": "Unsubscribe status",
"Unsubscribed date": "Unsubscribed date",
"Email": "电子邮件地址",
"Order number": "Order number",
"Subtotal": "Subtotal",
"First name": "First name",
"Last name": "Last name",
"Username": "用户名",
"Customer id": "Customer id",
"Phone number": "Phone number",
"Campaign tags": "Campaign tags",
"Sharing channels": "Sharing channels",
"IP address": "IP address",
"UUID": "UUID",
"Created at": "Created at",
"Traffic source": "Traffic source",
"Coupon codes": "Coupon codes",
"Currency iso code": "Currency iso code",
"Custom field": "Custom field",
"Shipping address": "Shipping address",
"Shipping zip": "Shipping zip",
"Items": "项目",
"Create offers": "Create offers",
"Purchases": "Purchases",
"Event category": "Event category",
"Event number": "Event number",
"Events": "Events",
"Order or event number": "Order or event number",
"Refund subtotal": "Refund subtotal",
"Refunded date": "Refunded date",
"Status": "状态",
"Advocate email": "Advocate email",
"Friend email": "Friend email",
"Campaign tag": "Campaign tag",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"Select scope": "Select scope",
"Opt-in status true/false": "Opt-in status true/false",
"Unsubscribe status true/false": "Unsubscribe status true/false",
"Required for multi-currency sites": "Required for multi-currency sites",
"You can pass items with purchase": "You can pass items with purchase",
"Create offers for campaign": "Create offers for campaign",
"You can pass items with event": "You can pass items with event",
"Select referral status. Only \"approved\" or \"voided\" are accepted": "Select referral status. Only \"approved\" or \"voided\" are accepted",
"Example : advocate@example.com": "Example : advocate@example.com",
"Example : friend@example.com": "Example : friend@example.com",
"Example : invite": "Example : invite",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"General information": "General information",
"Referrals as advocate": "Referrals as advocate",
"Referrals as friend": "Referrals as friend",
"Rewards": "Rewards",
"Shares": "Shares",
"Personal data": "Personal data",
"true": "眞",
"false": "偽",
"approved": "approved",
"voided": "voided",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,82 @@
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import {
createPiece,
PieceAuth,
Property,
} from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import {
anonymizePerson,
createEvent,
createEventsBatch,
createPurchase,
createPurchasesBatch,
findCoupon,
findPerson,
getLoyaltyRedeemActions,
refund,
unsubscribePerson,
updatePerson,
updateReferralStatus,
claimOffer,
} from './lib/actions';
const markdownDescription = `
Follow these steps:
1. **Log in to your Talkable account:** Open Talkable https://www.talkable.com/login.
2. **Enter the Talkable site slug and API key:** Go to **All site Settings** > **API Settings**, and copy Site ID and API key.
`;
export const talkableAuth = PieceAuth.CustomAuth({
description: markdownDescription,
props: {
site: Property.ShortText({
displayName: 'Talkable site ID',
required: true,
}),
api_key: Property.ShortText({
displayName: 'API key',
required: true,
}),
},
required: true,
});
export const talkable = createPiece({
displayName: 'Talkable',
description: 'Referral marketing programs that drive revenue',
auth: talkableAuth,
minimumSupportedRelease: '0.30.0',
logoUrl:
'https://www.talkable.com/wp-content/uploads/2021/12/talkable-favicon.svg',
authors: ["Vitalini","kishanprmr","MoShizzle","abuaboud"],
categories: [PieceCategory.MARKETING],
actions: [
findPerson,
findCoupon,
updatePerson,
anonymizePerson,
unsubscribePerson,
createPurchase,
createPurchasesBatch,
createEvent,
createEventsBatch,
refund,
getLoyaltyRedeemActions,
updateReferralStatus,
claimOffer,
createCustomApiCallAction({
baseUrl: () => 'https://www.talkable.com/api/v2',
auth: talkableAuth,
authMapping: async (auth) => ({
Authorization: `Bearer ${auth.props.api_key}`,
}),
}),
],
triggers: [],
});

View File

@@ -0,0 +1,34 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const findCoupon = createAction({
name: 'find_coupon', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Find coupon',
description: 'Find coupon code',
props: {
code: Property.ShortText({
displayName: 'Coupon code',
description: undefined,
required: true,
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const couponInfoResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.GET,
url: `${TALKABLE_API_URL}/coupons/${context.propsValue['code']}`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
},
});
return couponInfoResponse.body;
},
});

View File

@@ -0,0 +1,19 @@
// People
export { findPerson } from './people/find-person';
export { updatePerson } from './people/update-person';
export { anonymizePerson } from './people/anonymize-person';
export { unsubscribePerson } from './people/unsubscribe-person';
// Origins
export { createPurchase } from './origins/create-purchase';
export { createEvent } from './origins/create-event';
export { createEventsBatch } from './origins/create-events-batch';
export { createPurchasesBatch } from './origins/create-purchases-batch';
export { refund } from './origins/refund';
// Loyalty
export { getLoyaltyRedeemActions } from './loyalty/get-loyalty-redeem-actions';
// Referral
export { updateReferralStatus } from './referrals/update-referral-status';
// Coupons
export { findCoupon } from './coupons/find-coupon';
// Rewards
export { claimOffer } from './rewards/claim-offer';

View File

@@ -0,0 +1,34 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const getLoyaltyRedeemActions = createAction({
name: 'get_loyalty_redeem_actions', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Get loyalty actions',
description: 'Get array of loyalty actions',
props: {
person_email: Property.ShortText({
displayName: 'Person email',
description: undefined,
required: true,
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const getLoyaltyRedeemActionsResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.GET,
url: `${TALKABLE_API_URL}/loyalty/members/${context.propsValue['person_email']}/redeem_actions`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
},
});
return getLoyaltyRedeemActionsResponse.body;
},
});

View File

@@ -0,0 +1,147 @@
import {
createAction,
Property,
} from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const createEvent = createAction({
name: 'create_event', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Create event',
description: 'Create event in Talkable',
props: {
email: Property.ShortText({
displayName: 'Email',
description: undefined,
required: true,
}),
event_category: Property.ShortText({
displayName: 'Event category',
description: undefined,
required: true,
}),
event_number: Property.ShortText({
displayName: 'Event number',
description: undefined,
required: true,
}),
subtotal: Property.Number({
displayName: 'Subtotal',
description: undefined,
required: true,
}),
first_name: Property.ShortText({
displayName: 'First name',
description: undefined,
required: false,
}),
last_name: Property.ShortText({
displayName: 'Last name',
description: undefined,
required: false,
}),
username: Property.ShortText({
displayName: 'Username',
description: undefined,
required: false,
}),
customer_id: Property.ShortText({
displayName: 'Customer id',
description: undefined,
required: false,
}),
custom_properties: Property.Object({
displayName: 'Custom properties',
description: undefined,
required: false,
}),
phone_number: Property.ShortText({
displayName: 'Phone number',
description: undefined,
required: false,
}),
campaign_tags: Property.ShortText({
displayName: 'Campaign tags',
description: undefined,
required: false,
}),
sharing_channels: Property.Array({
displayName: 'Sharing channels',
description: undefined,
required: false,
}),
ip_address: Property.ShortText({
displayName: 'IP address',
description: undefined,
required: false,
}),
uuid: Property.ShortText({
displayName: 'UUID',
description: undefined,
required: false,
}),
created_at: Property.ShortText({
displayName: 'Created at',
description: undefined,
required: false,
}),
traffic_source: Property.ShortText({
displayName: 'Traffic source',
description: undefined,
required: false,
}),
coupon_codes: Property.Array({
displayName: 'Coupon codes',
description: undefined,
required: false,
}),
currency_iso_code: Property.ShortText({
displayName: 'Currency iso code',
description: 'Required for multi-currency sites',
required: false,
defaultValue: 'USD',
}),
custom_field: Property.ShortText({
displayName: 'Custom field',
description: undefined,
required: false,
}),
shipping_address: Property.ShortText({
displayName: 'Shipping address',
description: undefined,
required: false,
}),
shipping_zip: Property.ShortText({
displayName: 'Shipping zip',
description: undefined,
required: false,
}),
items: Property.Json({
displayName: 'Items',
description: "You can pass items with event",
required: false,
defaultValue: [
{ price: 10, quantity: 1, product_id: 'SKU1' },
],
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const createEventResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/origins/event`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
data: context.propsValue,
},
});
return createEventResponse.body;
},
});

View File

@@ -0,0 +1,79 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const createEventsBatch = createAction({
name: 'create_events_batch', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Create batch of events',
description: 'Create batch of events in Talkable',
props: {
create_offers: Property.Checkbox({
displayName: 'Create offers',
description: 'Create offers for campaign',
required: false,
defaultValue: false,
}),
events: Property.Json({
displayName: 'Events',
description: undefined,
required: false,
defaultValue: [
{
email: 'user@store.com',
event_category: 'newsletter_subscription',
event_number: '42',
subtotal: 100.44,
first_name: 'John',
last_name: 'Doe',
username: 'johndoe1992',
customer_id: '1024',
custom_properties: {
country: 'US',
eye_color: 'brown',
person_occupation: 'marketing',
},
custom_field: '',
phone_number: '+12025551111',
campaign_tags: 'post-purchase',
sharing_channels: ['facebook', 'custom'],
ip_address: '192.0.2.255',
uuid: '123e4567-e89b-32d1-a456-426614174000',
created_at: '2023-04-27T11:30:42.769-07:00',
traffic_source: 'in-store',
coupon_codes: ['C0001', 'C0002'],
currency_iso_code: 'USD',
shipping_address:
'456 White Finch St., North Augusta, South Carolina, 29860, United States',
shipping_zip: '29860',
items: [
{
price: 100.44,
quantity: 1,
product_id: 'SUBSCRIPTION',
},
],
},
],
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const createEventsBatch = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/origins/batch/events`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
data: context.propsValue.events,
create_offers: context.propsValue.create_offers,
},
});
return createEventsBatch.body;
},
});

View File

@@ -0,0 +1,142 @@
import {
createAction,
Property,
} from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const createPurchase = createAction({
name: 'create_purchase', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Create purchase',
description: 'Create purchase in Talkable',
props: {
email: Property.ShortText({
displayName: 'Email',
description: undefined,
required: true,
}),
order_number: Property.ShortText({
displayName: 'Order number',
description: undefined,
required: true,
}),
subtotal: Property.Number({
displayName: 'Subtotal',
description: undefined,
required: true,
}),
first_name: Property.ShortText({
displayName: 'First name',
description: undefined,
required: false,
}),
last_name: Property.ShortText({
displayName: 'Last name',
description: undefined,
required: false,
}),
username: Property.ShortText({
displayName: 'Username',
description: undefined,
required: false,
}),
customer_id: Property.ShortText({
displayName: 'Customer id',
description: undefined,
required: false,
}),
custom_properties: Property.Object({
displayName: 'Custom properties',
description: undefined,
required: false,
}),
phone_number: Property.ShortText({
displayName: 'Phone number',
description: undefined,
required: false,
}),
campaign_tags: Property.ShortText({
displayName: 'Campaign tags',
description: undefined,
required: false,
}),
sharing_channels: Property.Array({
displayName: 'Sharing channels',
description: undefined,
required: false,
}),
ip_address: Property.ShortText({
displayName: 'IP address',
description: undefined,
required: false,
}),
uuid: Property.ShortText({
displayName: 'UUID',
description: undefined,
required: false,
}),
created_at: Property.ShortText({
displayName: 'Created at',
description: undefined,
required: false,
}),
traffic_source: Property.ShortText({
displayName: 'Traffic source',
description: undefined,
required: false,
}),
coupon_codes: Property.Array({
displayName: 'Coupon codes',
description: undefined,
required: false,
}),
currency_iso_code: Property.ShortText({
displayName: 'Currency iso code',
description: 'Required for multi-currency sites',
required: false,
defaultValue: 'USD',
}),
custom_field: Property.ShortText({
displayName: 'Custom field',
description: undefined,
required: false,
}),
shipping_address: Property.ShortText({
displayName: 'Shipping address',
description: undefined,
required: false,
}),
shipping_zip: Property.ShortText({
displayName: 'Shipping zip',
description: undefined,
required: false,
}),
items: Property.Json({
displayName: 'Items',
description: "You can pass items with purchase",
required: false,
defaultValue: [
{ price: 10, quantity: 1, product_id: 'SKU1' },
],
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const createPurchaseResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/origins/purchase`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
data: context.propsValue,
},
});
return createPurchaseResponse.body;
},
});

View File

@@ -0,0 +1,78 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const createPurchasesBatch = createAction({
name: 'create_purchases_batch', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Create batch of purchases',
description: 'Create batch of purchases in Talkable',
props: {
create_offers: Property.Checkbox({
displayName: 'Create offers',
description: 'Create offers for campaign',
required: false,
defaultValue: false,
}),
purchases: Property.Json({
displayName: 'Purchases',
description: undefined,
required: false,
defaultValue: [
{
email: 'customer@store.com',
order_number: '20',
subtotal: 100.44,
first_name: 'John',
last_name: 'Doe',
username: 'johndoe1992',
customer_id: '1024',
custom_properties: {
country: 'US',
eye_color: 'brown',
person_occupation: 'marketing',
},
custom_field: '',
phone_number: '+12025551111',
campaign_tags: 'post-purchase',
sharing_channels: ['facebook', 'custom'],
ip_address: '192.0.2.255',
uuid: '123e4567-e89b-32d1-a456-426614174000',
created_at: '2023-04-27T11:30:42.769-07:00',
traffic_source: 'in-store',
coupon_codes: ['C0001', 'C0002'],
currency_iso_code: 'USD',
shipping_address:
'456 White Finch St., North Augusta, South Carolina, 29860, United States',
shipping_zip: '29860',
items: [
{
price: 25.11,
quantity: 4,
product_id: 'TSHIRT',
},
],
},
],
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const createPurchasesBatch = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/origins/batch/purchases`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
data: context.propsValue.purchases,
create_offers: context.propsValue.create_offers,
},
});
return createPurchasesBatch.body;
},
});

View File

@@ -0,0 +1,49 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const refund = createAction({
name: 'refund', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Refund purchase/event',
description: 'Mark origin as refund',
props: {
origin_slug: Property.ShortText({
displayName: 'Order or event number',
description: undefined,
required: true,
}),
refund_subtotal: Property.Number({
displayName: 'Refund subtotal',
description: undefined,
required: false,
}),
refunded_at: Property.DateTime({
displayName: 'Refunded date',
description: undefined,
required: false,
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const { origin_slug, refund_subtotal, refunded_at } = context.propsValue;
const refundResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/origins/${origin_slug}/refund`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
data: {
refunded_at,
refund_subtotal,
},
},
});
return refundResponse.body;
},
});

View File

@@ -0,0 +1,34 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const anonymizePerson = createAction({
name: 'anonymize_person', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Anonymize person',
description: 'Anonymize person by email',
props: {
email: Property.ShortText({
displayName: 'Person email',
description: undefined,
required: true,
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const personAnonymizeResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/people/${context.propsValue['email']}/anonymize`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
},
});
return personAnonymizeResponse.body;
},
});

View File

@@ -0,0 +1,67 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const findPerson = createAction({
name: 'find_person', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Find person',
description: 'Find person by email',
props: {
email: Property.ShortText({
displayName: 'Person email',
description: undefined,
required: true,
}),
scope: Property.StaticDropdown({
displayName: 'Scope',
description: 'Select scope',
required: true,
options: {
options: [
{
label: 'General information',
value: '/',
},
{
label: 'Referrals as advocate',
value: '/referrals_as_advocate',
},
{
label: 'Referrals as friend',
value: '/referrals_as_friend',
},
{
label: 'Rewards',
value: '/rewards',
},
{
label: 'Shares',
value: '/shares_by',
},
{
label: 'Personal data',
value: '/personal_data',
},
],
},
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const personInfoResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.GET,
url: `${TALKABLE_API_URL}/people/${context.propsValue['email']}${context.propsValue['scope']}`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
},
});
return personInfoResponse.body;
},
});

View File

@@ -0,0 +1,34 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const unsubscribePerson = createAction({
name: 'unsubscribe_person', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Unsubscribe person',
description: 'Unsubscribe person by email',
props: {
email: Property.ShortText({
displayName: 'Person email',
description: undefined,
required: true,
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const personUnsubscribeResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/people/${context.propsValue['email']}/unsubscribe`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
},
});
return personUnsubscribeResponse.body;
},
});

View File

@@ -0,0 +1,126 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const updatePerson = createAction({
name: 'update_person', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Update person',
description: 'Update person by email',
props: {
email: Property.ShortText({
displayName: 'Person email',
description: undefined,
required: true,
}),
first_name: Property.ShortText({
displayName: 'Person first name',
description: undefined,
required: false,
}),
last_name: Property.ShortText({
displayName: 'Person last name',
description: undefined,
required: false,
}),
phone_number: Property.ShortText({
displayName: 'Person phone number',
description: undefined,
required: false,
}),
username: Property.ShortText({
displayName: 'Person username',
description: undefined,
required: false,
}),
customer_id: Property.Number({
displayName: 'Customer ID',
description: undefined,
required: false,
}),
custom_properties: Property.Object({
displayName: 'Custom properties',
description: undefined,
required: false,
}),
gated_param_subscribed: Property.StaticDropdown({
displayName: 'Opt-in status',
description: 'Opt-in status true/false',
required: false,
options: {
options: [
{
label: 'true',
value: 'true',
},
{
label: 'false',
value: 'false',
},
],
},
}),
unsubscribed: Property.StaticDropdown({
displayName: 'Unsubscribe status',
description: 'Unsubscribe status true/false',
required: false,
options: {
options: [
{
label: 'true',
value: 'true',
},
{
label: 'false',
value: 'false',
},
],
},
}),
unsubscribed_at: Property.DateTime({
displayName: 'Unsubscribed date',
description: undefined,
required: false,
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const {
email,
first_name,
last_name,
phone_number,
username,
customer_id,
custom_properties,
gated_param_subscribed,
unsubscribed,
unsubscribed_at,
} = context.propsValue;
const personUpdateResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.PUT,
url: `${TALKABLE_API_URL}/people/${email}`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
data: {
first_name,
last_name,
phone_number,
username,
customer_id,
custom_properties,
gated_param_subscribed,
unsubscribed,
unsubscribed_at,
},
},
});
return personUpdateResponse.body;
},
});

View File

@@ -0,0 +1,47 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const updateReferralStatus = createAction({
name: 'update-referral-status', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Update referral status',
description: 'You can void or approve referral',
props: {
origin_slug: Property.ShortText({
displayName: 'Order or event number',
description: undefined,
required: true,
}),
status: Property.StaticDropdown({
displayName: 'Status',
description:
'Select referral status. Only "approved" or "voided" are accepted',
required: true,
options: {
options: [
{ label: 'approved', value: 'approved' },
{ label: 'voided', value: 'voided' },
],
},
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const updateReferralStatusResponse = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/origins/${context.propsValue['origin_slug']}/referral`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
status: context.propsValue['status'], // we have only one status so it's hardcoded
},
});
return updateReferralStatusResponse.body;
},
});

View File

@@ -0,0 +1,47 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { talkableAuth } from '../../..';
export const claimOffer = createAction({
name: 'claim-offer', // Must be a unique across the piece, this shouldn't be changed.
auth: talkableAuth,
displayName: 'Share and claim offer',
description: "Using this action, you can share and get a friend's reward",
props: {
advocate_email: Property.ShortText({
displayName: 'Advocate email',
description: "Example : advocate@example.com",
required: true,
}),
friend_email: Property.ShortText({
displayName: 'Friend email',
description: "Example : friend@example.com",
required: true,
}),
campaign_tag: Property.ShortText({
displayName: 'Campaign tag',
description: "Example : invite",
required: true,
}),
},
async run(context) {
const TALKABLE_API_URL = 'https://www.talkable.com/api/v2';
const { site, api_key } = context.auth.props;
const claimOffer = await httpClient
.sendRequest<string[]>({
method: HttpMethod.POST,
url: `${TALKABLE_API_URL}/offer_claims`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body: {
site_slug: site,
advocate_email: context.propsValue['advocate_email'],
friend_email: context.propsValue['friend_email'],
campaign_tag: context.propsValue['campaign_tag'],
},
});
return claimOffer.body;
},
});

View File

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

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}