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,41 @@
{
"Revenue and churn analytics for Stripe": "Umsatz- und Kirchenanalytik für Streifen",
" You can find your projects API key here: https://saastic.com/settings/developers": " Hier finden Sie den API-Schlüssel Ihres Projekts: https://saastic.com/settings/developers",
"Create or Update a Customer": "Kunde erstellen oder aktualisieren",
"Create a Customer Charge": "Erstellen Sie eine Kundengebühr",
"Custom API Call": "Eigener API-Aufruf",
"Create or update a customer.": "Kunden erstellen oder aktualisieren.",
"Creates a customer charge.": "Erstellt eine Kundengebühr.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"First Name": "Vorname",
"Last Name": "Nachname",
"Email": "E-Mail",
"Phone": "Telefon",
"Signup Date": "Anmeldedatum",
"Amount": "Betrag",
"Currency": "Währung",
"Charge date": "Abrechnungsdatum",
"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)",
"The customer's first name.": "Der Vorname des Kunden.",
"The customer's last name.": "Nachname des Kunden.",
"The customer's email address.": "Die E-Mail-Adresse des Kunden.",
"The customer's phone number. Ex: +15555555555": "Telefonnummer des Kunden. Beispiel: +15555555555",
"The date the customer signed up.": "Das Datum an dem sich der Kunde angemeldet hat.",
"The amount charged in the smallest currency unit.": "Der Betrag, der in der kleinsten Währungseinheit berechnet wird.",
"The ISO currency code.": "Der ISO-Währungscode.",
"The date the customer was charged.": "Das Datum an dem der Kunde belastet wurde.",
"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..",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,41 @@
{
"Revenue and churn analytics for Stripe": "Análisis de ingresos y estragos de Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " Puedes encontrar la clave API de tu proyecto aquí: https://saastic.com/settings/developers",
"Create or Update a Customer": "Crear o actualizar un cliente",
"Create a Customer Charge": "Crear un Cargo de Cliente",
"Custom API Call": "Llamada API personalizada",
"Create or update a customer.": "Crear o actualizar un cliente.",
"Creates a customer charge.": "Crea un cargo al cliente.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"First Name": "Nombre",
"Last Name": "Apellido",
"Email": "E-mail",
"Phone": "Teléfono",
"Signup Date": "Fecha de registro",
"Amount": "Cantidad",
"Currency": "Moneda",
"Charge date": "Fecha de carga",
"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)",
"The customer's first name.": "Nombre del cliente.",
"The customer's last name.": "Apellido del cliente.",
"The customer's email address.": "Dirección de correo electrónico del cliente.",
"The customer's phone number. Ex: +15555555555": "Número de teléfono del cliente. Ej: +15555555555",
"The date the customer signed up.": "La fecha en la que el cliente se registró.",
"The amount charged in the smallest currency unit.": "La cantidad que se cobró en la unidad de moneda más pequeña.",
"The ISO currency code.": "El código de moneda ISO.",
"The date the customer was charged.": "La fecha en la que se cobró al cliente.",
"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.",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,41 @@
{
"Revenue and churn analytics for Stripe": "Revenus et analyses des abysses pour Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " Vous pouvez trouver la clé API de votre projet ici : https://saastic.com/settings/developers",
"Create or Update a Customer": "Créer ou mettre à jour un client",
"Create a Customer Charge": "Créer une facture client",
"Custom API Call": "Appel d'API personnalisé",
"Create or update a customer.": "Créer ou mettre à jour un client.",
"Creates a customer charge.": "Crée une charge client.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"First Name": "First Name",
"Last Name": "Last Name",
"Email": "Courriel",
"Phone": "Téléphone",
"Signup Date": "Date d'inscription",
"Amount": "Montant",
"Currency": "Devise",
"Charge date": "Date de facturation",
"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)",
"The customer's first name.": "Le prénom du client",
"The customer's last name.": "Nom de famille du client",
"The customer's email address.": "L'adresse e-mail du client.",
"The customer's phone number. Ex: +15555555555": "Le numéro de téléphone du client. Ex: +1555555555555",
"The date the customer signed up.": "La date d'inscription du client.",
"The amount charged in the smallest currency unit.": "Le montant débité dans la plus petite unité de devise.",
"The ISO currency code.": "Le code de la devise ISO.",
"The date the customer was charged.": "La date à laquelle le client a été facturé.",
"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.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,41 @@
{
"Revenue and churn analytics for Stripe": "Stripeの収益と分析を解析する",
" You can find your projects API key here: https://saastic.com/settings/developers": " プロジェクトのAPIキーはこちらから確認できます: https://saastic.com/settings/developers",
"Create or Update a Customer": "顧客を作成または更新",
"Create a Customer Charge": "顧客課金を作成",
"Custom API Call": "カスタムAPI通話",
"Create or update a customer.": "顧客を作成または更新する。",
"Creates a customer charge.": "顧客課金を作成します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"First Name": "名",
"Last Name": "Last Name",
"Email": "Eメールアドレス",
"Phone": "電話番号",
"Signup Date": "登録日",
"Amount": "金額",
"Currency": "通貨",
"Charge date": "請求日",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The customer's first name.": "顧客の名",
"The customer's last name.": "顧客の姓",
"The customer's email address.": "顧客のメールアドレス",
"The customer's phone number. Ex: +15555555555": "顧客の電話番号。例:+555555555",
"The date the customer signed up.": "顧客がサインアップした日",
"The amount charged in the smallest currency unit.": "最小通貨単位で請求される金額。",
"The ISO currency code.": "ISO 通貨コード。",
"The date the customer was charged.": "顧客が請求された日",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,41 @@
{
"Revenue and churn analytics for Stripe": "Omzet en kerk analytics voor Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " U kunt de API-sleutel van uw project hier vinden: https://saastic.com/settings/developers",
"Create or Update a Customer": "Een klant aanmaken of bijwerken",
"Create a Customer Charge": "Maak een klanttoeslag aan",
"Custom API Call": "Custom API Call",
"Create or update a customer.": "Klant aanmaken of bijwerken.",
"Creates a customer charge.": "Maakt een klant toeslag aan.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"First Name": "Voornaam",
"Last Name": "Achternaam",
"Email": "E-mail",
"Phone": "Telefoonnummer",
"Signup Date": "Datum aanmelding",
"Amount": "Hoeveelheid",
"Currency": "valuta",
"Charge date": "Datum van betaling",
"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)",
"The customer's first name.": "De klant's voornaam",
"The customer's last name.": "De klant's achternaam",
"The customer's email address.": "E-mailadres van de klant",
"The customer's phone number. Ex: +15555555555": "Het telefoonnummer van de klant. Bijv: +155555555",
"The date the customer signed up.": "De datum waarop de klant zich aangemeld heeft.",
"The amount charged in the smallest currency unit.": "Het bedrag in rekening gebracht in de kleinste valuta eenheid.",
"The ISO currency code.": "De ISO valuta code.",
"The date the customer was charged.": "De datum waarop de klant in rekening is gebracht.",
"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..",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,41 @@
{
"Revenue and churn analytics for Stripe": "Receita e análise de igreja para Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " Você pode encontrar a chave da API do seu projeto aqui: https://saastic.com/settings/developers",
"Create or Update a Customer": "Criar ou atualizar um cliente",
"Create a Customer Charge": "Criar uma taxa de cliente",
"Custom API Call": "Chamada de API personalizada",
"Create or update a customer.": "Criar ou atualizar um cliente.",
"Creates a customer charge.": "Cria uma carga do cliente.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"First Name": "Nome",
"Last Name": "Sobrenome",
"Email": "e-mail",
"Phone": "Smartphone",
"Signup Date": "Data da Inscrição",
"Amount": "Quantidade",
"Currency": "moeda",
"Charge date": "Data de cobrança",
"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)",
"The customer's first name.": "O primeiro nome do cliente.",
"The customer's last name.": "O sobrenome do cliente.",
"The customer's email address.": "E-mail do cliente",
"The customer's phone number. Ex: +15555555555": "Número de telefone do cliente. Ex: +1555555555555",
"The date the customer signed up.": "A data do cliente se inscreveu.",
"The amount charged in the smallest currency unit.": "A quantia cobrada na menor unidade de moeda.",
"The ISO currency code.": "O código de moeda ISO",
"The date the customer was charged.": "A data em que o cliente foi cobrado.",
"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..",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,40 @@
{
"Saastic": "Saastic",
"Revenue and churn analytics for Stripe": "Статистика доходов и церкви для Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " Вы можете найти API-ключ вашего проекта здесь: https://saastic.com/settings/developers",
"Create or Update a Customer": "Создать или обновить клиента",
"Create a Customer Charge": "Создать платеж за клиента",
"Custom API Call": "Пользовательский вызов API",
"Create or update a customer.": "Создать или обновить клиента.",
"Creates a customer charge.": "Создает тариф клиента.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"First Name": "First Name",
"Last Name": "Фамилия",
"Email": "Почта",
"Phone": "Телефон",
"Signup Date": "Дата регистрации",
"Amount": "Сумма",
"Currency": "Валюта",
"Charge date": "Дата зарядки",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The customer's first name.": "Имя клиента.",
"The customer's last name.": "Фамилия клиента.",
"The customer's email address.": "Адрес электронной почты клиента.",
"The customer's phone number. Ex: +15555555555": "Номер телефона клиента: +15555555555",
"The date the customer signed up.": "Дата, когда клиент зарегистрировался.",
"The amount charged in the smallest currency unit.": "Сумма, взимаемая в самой маленькой валюте.",
"The ISO currency code.": "Код валюты ISO.",
"The date the customer was charged.": "Дата, когда клиент был списан.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,41 @@
{
"Revenue and churn analytics for Stripe": "Revenue and churn analytics for Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " You can find your projects API key here: https://saastic.com/settings/developers",
"Create or Update a Customer": "Create or Update a Customer",
"Create a Customer Charge": "Create a Customer Charge",
"Custom API Call": "Custom API Call",
"Create or update a customer.": "Create or update a customer.",
"Creates a customer charge.": "Creates a customer charge.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"First Name": "First Name",
"Last Name": "Last Name",
"Email": "Email",
"Phone": "Phone",
"Signup Date": "Signup Date",
"Amount": "Amount",
"Currency": "Currency",
"Charge date": "Charge date",
"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)",
"The customer's first name.": "The customer's first name.",
"The customer's last name.": "The customer's last name.",
"The customer's email address.": "The customer's email address.",
"The customer's phone number. Ex: +15555555555": "The customer's phone number. Ex: +15555555555",
"The date the customer signed up.": "The date the customer signed up.",
"The amount charged in the smallest currency unit.": "The amount charged in the smallest currency unit.",
"The ISO currency code.": "The ISO currency code.",
"The date the customer was charged.": "The date the customer was charged.",
"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..",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,40 @@
{
"Saastic": "Saastic",
"Revenue and churn analytics for Stripe": "Revenue and churn analytics for Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " You can find your projects API key here: https://saastic.com/settings/developers",
"Create or Update a Customer": "Create or Update a Customer",
"Create a Customer Charge": "Create a Customer Charge",
"Custom API Call": "Custom API Call",
"Create or update a customer.": "Create or update a customer.",
"Creates a customer charge.": "Creates a customer charge.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"First Name": "First Name",
"Last Name": "Last Name",
"Email": "Email",
"Phone": "Phone",
"Signup Date": "Signup Date",
"Amount": "Amount",
"Currency": "Currency",
"Charge date": "Charge date",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The customer's first name.": "The customer's first name.",
"The customer's last name.": "The customer's last name.",
"The customer's email address.": "The customer's email address.",
"The customer's phone number. Ex: +15555555555": "The customer's phone number. Ex: +15555555555",
"The date the customer signed up.": "The date the customer signed up.",
"The amount charged in the smallest currency unit.": "The amount charged in the smallest currency unit.",
"The ISO currency code.": "The ISO currency code.",
"The date the customer was charged.": "The date the customer was charged.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,41 @@
{
"Revenue and churn analytics for Stripe": "Revenue and churn analytics for Stripe",
" You can find your projects API key here: https://saastic.com/settings/developers": " You can find your projects API key here: https://saastic.com/settings/developers",
"Create or Update a Customer": "Create or Update a Customer",
"Create a Customer Charge": "Create a Customer Charge",
"Custom API Call": "自定义 API 呼叫",
"Create or update a customer.": "Create or update a customer.",
"Creates a customer charge.": "Creates a customer charge.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"First Name": "First Name",
"Last Name": "名字",
"Email": "电子邮件地址",
"Phone": "Phone",
"Signup Date": "Signup Date",
"Amount": "Amount",
"Currency": "Currency",
"Charge date": "Charge date",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The customer's first name.": "The customer's first name.",
"The customer's last name.": "The customer's last name.",
"The customer's email address.": "The customer's email address.",
"The customer's phone number. Ex: +15555555555": "The customer's phone number. Ex: +15555555555",
"The date the customer signed up.": "The date the customer signed up.",
"The amount charged in the smallest currency unit.": "The amount charged in the smallest currency unit.",
"The ISO currency code.": "The ISO currency code.",
"The date the customer was charged.": "The date the customer was charged.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,62 @@
import {
AuthenticationType,
createCustomApiCallAction,
httpClient,
HttpMethod,
} from '@activepieces/pieces-common';
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { createCharge } from './lib/actions/create-charge';
import { createCustomer } from './lib/actions/create-customer';
export const saasticAuth = PieceAuth.SecretText({
description:
' You can find your projects API key here: https://saastic.com/settings/developers',
displayName: 'Api Key',
required: true,
validate: async (auth) => {
try {
await httpClient.sendRequest<{
data: { id: string }[];
}>({
url: 'https://api.saastic.com/beacon/customers',
method: HttpMethod.GET,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: auth.auth,
},
});
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid API token',
};
}
},
});
export const saastic = createPiece({
displayName: 'Saastic',
description: 'Revenue and churn analytics for Stripe',
auth: saasticAuth,
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/saastic.png',
categories: [PieceCategory.MARKETING],
authors: ["joselupianez","kishanprmr","MoShizzle","abuaboud"],
actions: [
createCustomer,
createCharge,
createCustomApiCallAction({
baseUrl: () => 'https://api.saastic.com',
auth: saasticAuth,
authMapping: async (auth) => ({
Authorization: `Bearer ${auth.secret_text}`,
}),
}),
],
triggers: [],
});

View File

@@ -0,0 +1,73 @@
import {
createAction,
Property,
} from '@activepieces/pieces-framework';
import {
HttpMethod,
AuthenticationType,
httpClient,
HttpRequest,
propsValidation,
} from '@activepieces/pieces-common';
import { z } from 'zod';
import { saasticCommon } from '../common';
import { saasticAuth } from '../..';
export const createCharge = createAction({
auth: saasticAuth,
name: 'create_charge',
displayName: 'Create a Customer Charge',
description: 'Creates a customer charge.',
props: {
email: Property.LongText({
displayName: 'Email',
description: "The customer's email address.",
required: true,
}),
amount: Property.Number({
displayName: 'Amount',
description: 'The amount charged in the smallest currency unit.',
required: false,
}),
currency: Property.ShortText({
displayName: 'Currency',
description: 'The ISO currency code.',
required: false,
defaultValue: 'USD',
}),
charged_at: Property.DateTime({
displayName: 'Charge date',
description: 'The date the customer was charged.',
required: false,
}),
},
async run(context) {
await propsValidation.validateZod(context.propsValue, {
email: z.string().email(),
});
const request: HttpRequest = {
method: HttpMethod.POST,
url: `${saasticCommon.baseUrl}/charges`,
body: {
email: context.propsValue.email || '',
amount: context.propsValue.amount || '',
currency: context.propsValue.currency || '',
charged_at: context.propsValue.charged_at || '',
},
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: context.auth.secret_text,
},
queryParams: {},
};
await httpClient.sendRequest(request);
return {
success: true,
};
},
});

View File

@@ -0,0 +1,78 @@
import {
createAction,
Property,
} from '@activepieces/pieces-framework';
import {
HttpMethod,
AuthenticationType,
httpClient,
HttpRequest,
propsValidation,
} from '@activepieces/pieces-common';
import { z } from 'zod';
import { saasticCommon } from '../common';
import { saasticAuth } from '../..';
export const createCustomer = createAction({
auth: saasticAuth,
name: 'create_customer',
displayName: 'Create or Update a Customer',
description: 'Create or update a customer.',
props: {
first_name: Property.LongText({
displayName: 'First Name',
description: "The customer's first name.",
required: true,
}),
last_name: Property.LongText({
displayName: 'Last Name',
description: "The customer's last name.",
required: true,
}),
email: Property.LongText({
displayName: 'Email',
description: "The customer's email address.",
required: true,
}),
phone: Property.LongText({
displayName: 'Phone',
description: "The customer's phone number. Ex: +15555555555",
required: false,
}),
signed_up_at: Property.DateTime({
displayName: 'Signup Date',
description: 'The date the customer signed up.',
required: false,
}),
},
async run(context) {
await propsValidation.validateZod(context.propsValue, {
email: z.string().email(),
signed_up_at: z.string().datetime().optional(),
});
const request: HttpRequest = {
method: HttpMethod.POST,
url: `${saasticCommon.baseUrl}/customers`,
body: {
first_name: context.propsValue.first_name || '',
last_name: context.propsValue.last_name || '',
email: context.propsValue.email || '',
phone: context.propsValue.phone || '',
signed_up_at: context.propsValue.signed_up_at || '',
},
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: context.auth.secret_text,
},
queryParams: {},
};
await httpClient.sendRequest(request);
return {
success: true,
};
},
});

View File

@@ -0,0 +1,3 @@
export const saasticCommon = {
baseUrl: 'https://api.saastic.com/beacon',
};