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,7 @@
# pieces-square
This library was generated with [Nx](https://nx.dev).
## Running lint
Run `nx lint pieces-square` to execute the lint via [ESLint](https://eslint.org/).

View File

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

View File

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

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "Zahlungslösungen für jedes Unternehmen",
"Authentication": "Authentifizierung",
"New Order": "Neue Bestellung",
"Order Updated": "Bestellung aktualisiert",
"New Customer": "Neuer Kunde",
"Customer Updated": "Kunde aktualisiert",
"New Appointment": "Neuer Termin",
"New Payment": "Neue Zahlung",
"New Invoice": "Neue Rechnung",
"Triggered when a new order is created": "Wird ausgelöst, wenn eine neue Bestellung erstellt wird",
"Triggered when an order is updated": "Wird ausgelöst, wenn eine Bestellung aktualisiert wird",
"Triggered when a customer is created": "Wird ausgelöst, wenn ein Kunde erstellt wird",
"Triggered when a customer is updated": "Wird ausgelöst, wenn ein Kunde aktualisiert wird",
"Triggered when a new appointment is created": "Wird ausgelöst, wenn ein neuer Termin erstellt wird",
"Triggered when a new payment is created": "Wird ausgelöst, wenn eine neue Zahlung erstellt wird",
"Triggered when a new invoice is created": "Wird ausgelöst, wenn eine neue Rechnung erstellt wird"
}

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "Soluciones de pago para cada negocio",
"Authentication": "Autenticación",
"New Order": "Nuevo pedido",
"Order Updated": "Pedido actualizado",
"New Customer": "Nuevo cliente",
"Customer Updated": "Cliente actualizado",
"New Appointment": "Nueva cita",
"New Payment": "Nuevo pago",
"New Invoice": "Nueva factura",
"Triggered when a new order is created": "Activado cuando se crea un nuevo pedido",
"Triggered when an order is updated": "Activado cuando se actualiza un pedido",
"Triggered when a customer is created": "Se activa cuando se crea un cliente",
"Triggered when a customer is updated": "Se activa cuando un cliente es actualizado",
"Triggered when a new appointment is created": "Se activa cuando se crea una nueva cita",
"Triggered when a new payment is created": "Se activa cuando se crea un nuevo pago",
"Triggered when a new invoice is created": "Activado cuando se crea una nueva factura"
}

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "Solutions de paiement pour chaque entreprise",
"Authentication": "Authentification",
"New Order": "Nouvelle commande",
"Order Updated": "Commande mise à jour",
"New Customer": "Nouveau client",
"Customer Updated": "Client mis à jour",
"New Appointment": "Nouveau Rendez-vous",
"New Payment": "Nouveau paiement",
"New Invoice": "Nouvelle facture",
"Triggered when a new order is created": "Déclenché lorsqu'une nouvelle commande est créée",
"Triggered when an order is updated": "Déclenché lorsqu'une commande est mise à jour",
"Triggered when a customer is created": "Déclenché lorsqu'un client est créé",
"Triggered when a customer is updated": "Déclenché lorsqu'un client est mis à jour",
"Triggered when a new appointment is created": "Déclenché lorsqu'un nouveau rendez-vous est créé",
"Triggered when a new payment is created": "Déclenché lorsqu'un nouveau paiement est créé",
"Triggered when a new invoice is created": "Déclenché lorsqu'une nouvelle facture est créée"
}

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "すべての企業に対する支払いソリューション",
"Authentication": "認証",
"New Order": "新規注文",
"Order Updated": "注文が更新されました",
"New Customer": "新規顧客",
"Customer Updated": "顧客の更新",
"New Appointment": "新しい予約",
"New Payment": "新しい支払い",
"New Invoice": "新しい請求書",
"Triggered when a new order is created": "新しい注文が作成されたときにトリガーされます",
"Triggered when an order is updated": "注文が更新されたときにトリガーされます",
"Triggered when a customer is created": "顧客が作成されたときにトリガーされます",
"Triggered when a customer is updated": "顧客が更新されたときにトリガーされます",
"Triggered when a new appointment is created": "新しい予定が作成されたときにトリガーされます",
"Triggered when a new payment is created": "新しい支払いが作成されたときにトリガーされます",
"Triggered when a new invoice is created": "新しい請求書が作成されたときにトリガーされます"
}

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "Betalingsoplossingen voor elk bedrijf",
"Authentication": "Authenticatie",
"New Order": "Nieuwe bestelling",
"Order Updated": "Order bijgewerkt",
"New Customer": "Nieuwe klant",
"Customer Updated": "Klant bijgewerkt",
"New Appointment": "Nieuwe afspraak",
"New Payment": "Nieuwe betaling",
"New Invoice": "Nieuwe factuur",
"Triggered when a new order is created": "Uitgelokt wanneer een nieuwe order wordt aangemaakt",
"Triggered when an order is updated": "Uitgelokt wanneer een bestelling wordt bijgewerkt",
"Triggered when a customer is created": "Uitgelokt wanneer een klant wordt aangemaakt",
"Triggered when a customer is updated": "Uitgelokt wanneer een klant wordt bijgewerkt",
"Triggered when a new appointment is created": "Uitgelokt wanneer een nieuwe afspraak wordt gemaakt",
"Triggered when a new payment is created": "Uitgelokt wanneer een nieuwe betaling wordt aangemaakt",
"Triggered when a new invoice is created": "Uitgelokt wanneer een nieuwe factuur is aangemaakt"
}

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "Soluções de pagamento para cada empresa",
"Authentication": "Autenticação",
"New Order": "Novo Pedido",
"Order Updated": "Pedido atualizado",
"New Customer": "Novo Cliente",
"Customer Updated": "Cliente atualizado",
"New Appointment": "Novo Compromisso",
"New Payment": "Novo pagamento",
"New Invoice": "Nova fatura",
"Triggered when a new order is created": "Acionada quando uma nova ordem é criada",
"Triggered when an order is updated": "Acionada quando uma ordem é atualizada",
"Triggered when a customer is created": "Acionada quando um cliente é criado",
"Triggered when a customer is updated": "Acionada quando um cliente é atualizado",
"Triggered when a new appointment is created": "Acionada quando uma nova nomeação é criada",
"Triggered when a new payment is created": "Acionada quando um novo pagamento é criado",
"Triggered when a new invoice is created": "Acionada quando uma nova fatura é criada"
}

View File

@@ -0,0 +1,19 @@
{
"Square": "Квадрат",
"Payment solutions for every business": "Платежные решения для каждого бизнеса",
"Authentication": "Проверка подлинности",
"New Order": "Новый заказ",
"Order Updated": "Заказ обновлен",
"New Customer": "Новый клиент",
"Customer Updated": "Клиент обновлен",
"New Appointment": "Новая встреча",
"New Payment": "Новый платеж",
"New Invoice": "Новый счет",
"Triggered when a new order is created": "Срабатывает при создании нового заказа",
"Triggered when an order is updated": "Срабатывает при обновлении заказа",
"Triggered when a customer is created": "Срабатывает при создании клиента",
"Triggered when a customer is updated": "Срабатывает при обновлении клиента",
"Triggered when a new appointment is created": "Срабатывает при создании новой записи",
"Triggered when a new payment is created": "Срабатывает при создании нового платежа",
"Triggered when a new invoice is created": "Срабатывает при создании новой счета"
}

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "Payment solutions for every business",
"Authentication": "Authentication",
"New Order": "New Order",
"Order Updated": "Order Updated",
"New Customer": "New Customer",
"Customer Updated": "Customer Updated",
"New Appointment": "New Appointment",
"New Payment": "New Payment",
"New Invoice": "New Invoice",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when an order is updated": "Triggered when an order is updated",
"Triggered when a customer is created": "Triggered when a customer is created",
"Triggered when a customer is updated": "Triggered when a customer is updated",
"Triggered when a new appointment is created": "Triggered when a new appointment is created",
"Triggered when a new payment is created": "Triggered when a new payment is created",
"Triggered when a new invoice is created": "Triggered when a new invoice is created"
}

View File

@@ -0,0 +1,19 @@
{
"Square": "Square",
"Payment solutions for every business": "Payment solutions for every business",
"Authentication": "Authentication",
"New Order": "New Order",
"Order Updated": "Order Updated",
"New Customer": "New Customer",
"Customer Updated": "Customer Updated",
"New Appointment": "New Appointment",
"New Payment": "New Payment",
"New Invoice": "New Invoice",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when an order is updated": "Triggered when an order is updated",
"Triggered when a customer is created": "Triggered when a customer is created",
"Triggered when a customer is updated": "Triggered when a customer is updated",
"Triggered when a new appointment is created": "Triggered when a new appointment is created",
"Triggered when a new payment is created": "Triggered when a new payment is created",
"Triggered when a new invoice is created": "Triggered when a new invoice is created"
}

View File

@@ -0,0 +1,18 @@
{
"Payment solutions for every business": "Payment solutions for every business",
"Authentication": "认证",
"New Order": "New Order",
"Order Updated": "Order Updated",
"New Customer": "New Customer",
"Customer Updated": "Customer Updated",
"New Appointment": "New Appointment",
"New Payment": "New Payment",
"New Invoice": "New Invoice",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when an order is updated": "Triggered when an order is updated",
"Triggered when a customer is created": "Triggered when a customer is created",
"Triggered when a customer is updated": "Triggered when a customer is updated",
"Triggered when a new appointment is created": "Triggered when a new appointment is created",
"Triggered when a new payment is created": "Triggered when a new payment is created",
"Triggered when a new invoice is created": "Triggered when a new invoice is created"
}

View File

@@ -0,0 +1,58 @@
import { PieceAuth, createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import crypto from 'crypto';
import { triggers } from './lib/triggers';
export const squareAuth = PieceAuth.OAuth2({
description: 'Authentication',
authUrl: 'https://connect.squareup.com/oauth2/authorize',
tokenUrl: 'https://connect.squareup.com/oauth2/token',
required: true,
scope: [
'MERCHANT_PROFILE_READ',
'CUSTOMERS_READ',
'CUSTOMERS_WRITE',
'ITEMS_READ',
'ITEMS_WRITE',
'ORDERS_READ',
'ORDERS_WRITE',
'PAYMENTS_READ',
'INVOICES_READ',
'APPOINTMENTS_READ',
'APPOINTMENTS_WRITE',
],
});
export const square = createPiece({
displayName: 'Square',
description: 'Payment solutions for every business',
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/square.png',
categories: [PieceCategory.COMMERCE],
authors: ["kishanprmr","MoShizzle","khaledmashaly","abuaboud"],
auth: squareAuth,
events: {
verify: ({ webhookSecret, payload, appWebhookUrl }) => {
const signature = payload.headers['x-square-hmacsha256-signature'];
const hmac = crypto.createHmac('sha256', webhookSecret as string);
hmac.update(appWebhookUrl + payload.rawBody);
const hash = hmac.digest('base64');
return hash === signature;
},
parseAndReply: ({ payload }) => {
const payloadBody = payload.body as Payload | undefined;
return {
event: payloadBody?.type,
identifierValue: payloadBody?.merchant_id,
};
},
},
actions: [],
triggers,
});
type Payload = {
type: string;
merchant_id: string;
};

View File

@@ -0,0 +1,401 @@
import { squareAuth } from '../../';
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
const triggerData = [
{
name: 'new_order',
displayName: 'New Order',
description: 'Triggered when a new order is created',
event: 'order.created',
sampleData: {
merchant_id: 'MLTZ79VE64YTN',
type: 'order.created',
event_id: '03441e3a-47f1-49a7-a64c-55ab26703f8d',
created_at: '2023-03-14T01:42:54.984089903Z',
data: {
type: 'order',
id: 'eA3vssLHKJrv9H0IdJCM3gNqfdcZY',
object: {
order_created: {
created_at: '2020-04-16T23:14:26.129Z',
location_id: 'FPYCBCHYMXFK1',
order_id: 'eA3vssLHKJrv9H0IdJCM3gNqfdcZY',
state: 'OPEN',
version: 1,
},
},
},
},
},
{
name: 'order_updated',
displayName: 'Order Updated',
description: 'Triggered when an order is updated',
event: 'order.updated',
sampleData: {
merchant_id: 'MLTZ79VE64YTN',
type: 'order.updated',
event_id: '7e1d596e-ebf1-443d-87aa-a5f397bce1e5',
created_at: '2023-03-14T01:56:10.454184371Z',
data: {
type: 'order',
id: 'eA3vssLHKJrv9H0IdJCM3gNqfdcZY',
object: {
order_updated: {
created_at: '2020-04-16T23:14:26.129Z',
location_id: 'FPYCBCHYMXFK1',
order_id: 'eA3vssLHKJrv9H0IdJCM3gNqfdcZY',
state: 'OPEN',
updated_at: '2020-04-16T23:14:26.359Z',
version: 2,
},
},
},
},
},
{
name: 'new_customer',
displayName: 'New Customer',
description: 'Triggered when a customer is created',
event: 'customer.created',
sampleData: {
merchant_id: 'MLTZ79VE64YTN',
type: 'customer.created',
event_id: '2985c7c7-2ccc-409e-8aba-998684732cab',
created_at: '2023-03-14T01:57:28.679389163Z',
data: {
type: 'customer',
id: 'QPTXM8PQNX3Q726ZYHPMNP46XC',
object: {
customer: {
address: {
address_line_1: '1018 40th Street',
administrative_district_level_1: 'CA',
locality: 'Oakland',
postal_code: '94608',
},
birthday: '1962-03-04',
created_at: '2022-11-09T21:23:25.519Z',
creation_source: 'DIRECTORY',
email_address: 'jenkins+smorly@squareup.com',
family_name: 'Smorly',
given_name: 'Jenkins',
group_ids: ['JGJCW9S0G68NE.APPOINTMENTS'],
id: 'QPTXM8PQNX3Q726ZYHPMNP46XC',
phone_number: '+12126668929',
preferences: {
email_unsubscribed: false,
},
updated_at: '2022-11-09T21:23:25Z',
version: 0,
},
},
},
},
},
{
name: 'customer_updated',
displayName: 'Customer Updated',
description: 'Triggered when a customer is updated',
event: 'customer.updated',
sampleData: {
merchant_id: 'MLTZ79VE64YTN',
type: 'customer.updated',
event_id: 'f6e89469-de2f-4ae4-84c7-83a95681759a',
created_at: '2023-03-14T01:58:22.076902762Z',
data: {
type: 'customer',
id: 'A0AP25A6SCVTH8JES9BX01GXM4',
object: {
customer: {
created_at: '2022-07-09T18:23:01.795Z',
creation_source: 'THIRD_PARTY',
email_address: 'jenkins+smorly@squareup.com',
family_name: 'Smorly',
given_name: 'Jenkins',
id: 'A0AP25A6SCVTH8JES9BX01GXM4',
phone_number: '+13477947111',
preferences: {
email_unsubscribed: false,
},
updated_at: '2022-11-09T21:38:30Z',
version: 1,
},
},
},
},
},
{
name: 'new_appointment',
displayName: 'New Appointment',
description: 'Triggered when a new appointment is created',
event: 'booking.created',
sampleData: {
merchant_id: 'MLTZ79VE64YTN',
location_id: 'ES0RJRZYEC39A',
type: 'invoice.created',
event_id: 'ee17dc22-5e38-4aba-ad15-af8e25adcc93',
created_at: '2023-03-14T02:01:46.497709569Z',
data: {
type: 'invoice',
id: 'inv:0-ChCHu2mZEabLeeHahQnXDjZQECY',
object: {
invoice: {
accepted_payment_methods: {
bank_account: false,
buy_now_pay_later: false,
card: true,
square_gift_card: false,
},
created_at: '2020-06-18T17:45:13Z',
custom_fields: [
{
label: 'Event Reference Number',
placement: 'ABOVE_LINE_ITEMS',
value: 'Ref. #1234',
},
{
label: 'Terms of Service',
placement: 'BELOW_LINE_ITEMS',
value: 'The terms of service are...',
},
],
delivery_method: 'EMAIL',
description: 'We appreciate your business!',
id: 'inv:0-ChCHu2mZEabLeeHahQnXDjZQECY',
invoice_number: 'inv-100',
location_id: 'ES0RJRZYEC39A',
order_id: 'CAISENgvlJ6jLWAzERDzjyHVybY',
payment_requests: [
{
automatic_payment_source: 'NONE',
computed_amount_money: {
amount: 10000,
currency: 'USD',
},
due_date: '2030-01-24',
reminders: [
{
message: 'Your invoice is due tomorrow',
relative_scheduled_days: -1,
status: 'PENDING',
uid: 'beebd363-e47f-4075-8785-c235aaa7df11',
},
],
request_type: 'BALANCE',
tipping_enabled: true,
total_completed_amount_money: {
amount: 0,
currency: 'USD',
},
uid: '2da7964f-f3d2-4f43-81e8-5aa220bf3355',
},
],
primary_recipient: {
customer_id: 'JDKYHBWT1D4F8MFH63DBMEN8Y4',
email_address: 'Amelia.Earhart@example.com',
family_name: 'Earhart',
given_name: 'Amelia',
phone_number: '1-212-555-4240',
},
sale_or_service_date: '2030-01-24',
scheduled_at: '2030-01-13T10:00:00Z',
status: 'DRAFT',
store_payment_method_enabled: false,
timezone: 'America/Los_Angeles',
title: 'Event Planning Services',
updated_at: '2020-06-18T17:45:13Z',
version: 0,
},
},
},
},
},
{
name: 'new_payment',
displayName: 'New Payment',
description: 'Triggered when a new payment is created',
event: 'payment.created',
sampleData: {
merchant_id: 'MLTZ79VE64YTN',
type: 'payment.created',
event_id: '11fb274d-6882-417a-879c-faec367e0665',
created_at: '2023-03-14T02:00:56.000119371Z',
data: {
type: 'payment',
id: 'KkAkhdMsgzn59SM8A89WgKwekxLZY',
object: {
payment: {
amount_money: {
amount: 100,
currency: 'USD',
},
approved_money: {
amount: 100,
currency: 'USD',
},
capabilities: [
'EDIT_TIP_AMOUNT',
'EDIT_TIP_AMOUNT_UP',
'EDIT_TIP_AMOUNT_DOWN',
],
card_details: {
avs_status: 'AVS_ACCEPTED',
card: {
bin: '540988',
card_brand: 'MASTERCARD',
card_type: 'CREDIT',
exp_month: 11,
exp_year: 2022,
fingerprint:
'sq-1-Tvruf3vPQxlvI6n0IcKYfBukrcv6IqWr8UyBdViWXU2yzGn5VMJvrsHMKpINMhPmVg',
last_4: '9029',
prepaid_type: 'NOT_PREPAID',
},
card_payment_timeline: {
authorized_at: '2020-11-22T21:16:51.198Z',
},
cvv_status: 'CVV_ACCEPTED',
entry_method: 'KEYED',
statement_description: 'SQ *DEFAULT TEST ACCOUNT',
status: 'AUTHORIZED',
},
created_at: '2020-11-22T21:16:51.086Z',
delay_action: 'CANCEL',
delay_duration: 'PT168H',
delayed_until: '2020-11-29T21:16:51.086Z',
id: 'hYy9pRFVxpDsO1FB05SunFWUe9JZY',
location_id: 'S8GWD5R9QB376',
order_id: '03O3USaPaAaFnI6kkwB1JxGgBsUZY',
receipt_number: 'hYy9',
risk_evaluation: {
created_at: '2020-11-22T21:16:51.198Z',
risk_level: 'NORMAL',
},
source_type: 'CARD',
status: 'APPROVED',
total_money: {
amount: 100,
currency: 'USD',
},
updated_at: '2020-11-22T21:16:51.198Z',
version_token: 'FfQhQJf9r3VSQIgyWBk1oqhIwiznLwVwJbVVA0bdyEv6o',
},
},
},
},
},
{
name: 'new_invoice',
displayName: 'New Invoice',
description: 'Triggered when a new invoice is created',
event: 'invoice.created',
sampleData: {
merchant_id: 'MLTZ79VE64YTN',
location_id: 'ES0RJRZYEC39A',
type: 'invoice.created',
event_id: 'ee17dc22-5e38-4aba-ad15-af8e25adcc93',
created_at: '2023-03-14T02:01:46.497709569Z',
data: {
type: 'invoice',
id: 'inv:0-ChCHu2mZEabLeeHahQnXDjZQECY',
object: {
invoice: {
accepted_payment_methods: {
bank_account: false,
buy_now_pay_later: false,
card: true,
square_gift_card: false,
},
created_at: '2020-06-18T17:45:13Z',
custom_fields: [
{
label: 'Event Reference Number',
placement: 'ABOVE_LINE_ITEMS',
value: 'Ref. #1234',
},
{
label: 'Terms of Service',
placement: 'BELOW_LINE_ITEMS',
value: 'The terms of service are...',
},
],
delivery_method: 'EMAIL',
description: 'We appreciate your business!',
id: 'inv:0-ChCHu2mZEabLeeHahQnXDjZQECY',
invoice_number: 'inv-100',
location_id: 'ES0RJRZYEC39A',
order_id: 'CAISENgvlJ6jLWAzERDzjyHVybY',
payment_requests: [
{
automatic_payment_source: 'NONE',
computed_amount_money: {
amount: 10000,
currency: 'USD',
},
due_date: '2030-01-24',
reminders: [
{
message: 'Your invoice is due tomorrow',
relative_scheduled_days: -1,
status: 'PENDING',
uid: 'beebd363-e47f-4075-8785-c235aaa7df11',
},
],
request_type: 'BALANCE',
tipping_enabled: true,
total_completed_amount_money: {
amount: 0,
currency: 'USD',
},
uid: '2da7964f-f3d2-4f43-81e8-5aa220bf3355',
},
],
primary_recipient: {
customer_id: 'JDKYHBWT1D4F8MFH63DBMEN8Y4',
email_address: 'Amelia.Earhart@example.com',
family_name: 'Earhart',
given_name: 'Amelia',
phone_number: '1-212-555-4240',
},
sale_or_service_date: '2030-01-24',
scheduled_at: '2030-01-13T10:00:00Z',
status: 'DRAFT',
store_payment_method_enabled: false,
timezone: 'America/Los_Angeles',
title: 'Event Planning Services',
updated_at: '2020-06-18T17:45:13Z',
version: 0,
},
},
},
},
},
];
export const triggers = triggerData.map((trigger) =>
createTrigger({
auth: squareAuth,
name: trigger.name,
displayName: trigger.displayName,
description: trigger.description,
props: {},
type: TriggerStrategy.APP_WEBHOOK,
sampleData: trigger.sampleData,
onEnable: async (context) => {
context.app.createListeners({
events: [trigger.event],
identifierValue: context.auth.data['merchant_id'],
});
},
onDisable: async () => {
// Ignored
},
test: async () => {
return [trigger.sampleData];
},
run: async (context) => {
return [context.payload.body];
},
})
);

View File

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

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"]
}