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-sessions-us
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-sessions-us` to build the library.

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-sessions-us",
"version": "0.0.12"
}

View File

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

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "Videokonferenz-Plattform für Unternehmen und Fachleute",
"Create Session": "Sitzung erstellen",
"Create Event": "Ereignis erstellen",
"Publish Event": "Ereignis veröffentlichen",
"Custom API Call": "Eigener API-Aufruf",
"Quickly create a session.": "Sitzung schnell erstellen.",
"Quickly create an event.": "Ereignis schnell erstellen.",
"Quickly publish an event.": "Event schnell veröffentlichen.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Session Name": "Sitzungsname",
"Starts At": "Beginnt am",
"Ends At": "Endet am",
"Timezone": "Timezone",
"Event Name": "Ereignisname",
"Event": "Ereignis",
"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 name of the session": "Der Name der Sitzungsperiode",
"Select a date and time": "Datum und Uhrzeit auswählen",
"The timezone which the session will take place.": "Die Zeitzone, in der die Sitzung stattfinden wird.",
"The name of the event": "Der Name des Ereignisses",
"The event you want to publish.": "Das Ereignis, das Sie veröffentlichen möchten.",
"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",
"Booking Created": "Buchung erstellt",
"Booking Started": "Buchung gestartet",
"Booking Ended": "Buchung beendet",
"Event Created": "Ereignis erstellt",
"Event Published": "Event veröffentlicht",
"Event Started": "Ereignis gestartet",
"Event Ended": "Event beendet",
"Event New Registration": "Event Neue Registrierung",
"Session Created": "Sitzung erstellt",
"Session Started": "Sitzung gestartet",
"Session Ended": "Sitzung beendet",
"Takeaway Ready": "Takeaway bereit",
"Transcript Ready": "Transkript bereit",
"Triggered when a new booking is created.": "Wird ausgelöst, wenn eine neue Buchung erstellt wird.",
"Triggered when a booking starts.": "Wird beim Start einer Buchung ausgelöst.",
"Triggered when a booking ends.": "Wird ausgelöst, wenn eine Buchung endet.",
"Triggered when a new event is created.": "Wird ausgelöst, wenn ein neues Ereignis erstellt wird.",
"Triggered when an event is published.": "Wird ausgelöst, wenn ein Ereignis veröffentlicht wird.",
"Triggered when an event starts.": "Wird ausgelöst, wenn ein Ereignis beginnt.",
"Triggered when an event ends.": "Wird ausgelöst, wenn ein Ereignis endet.",
"Triggered when a new registration for an event occurs.": "Wird ausgelöst, wenn eine neue Registrierung für ein Ereignis stattfindet.",
"Triggered when a new session is created.": "Wird ausgelöst, wenn eine neue Sitzung erstellt wird.",
"Triggered when a session starts.": "Wird ausgelöst, wenn eine Sitzung beginnt.",
"Triggered when a session has ended.": "Ausgelöst, wenn eine Sitzung beendet ist.",
"Triggered when a takeaway becomes available.": "Wird ausgelöst, wenn ein Abflug verfügbar ist.",
"Permission": "Berechtigung",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Persönlich gilt nur für den Benutzer, die Organisation gilt für jede Veranstaltung, die von einem Nutzer der Organisation gemacht wird.",
"Personal": "Persönlich",
"Organization": "Organisation"
}

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "Plataforma de videoconferencia para empresas y profesionales",
"Create Session": "Crear sesión",
"Create Event": "Crear Evento",
"Publish Event": "Publicar Evento",
"Custom API Call": "Llamada API personalizada",
"Quickly create a session.": "Crea rápidamente una sesión.",
"Quickly create an event.": "Crea rápidamente un evento.",
"Quickly publish an event.": "Publicar rápidamente un evento.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Session Name": "Nombre de sesión",
"Starts At": "Comienza el",
"Ends At": "Termina en",
"Timezone": "Timezone",
"Event Name": "Nombre del evento",
"Event": "Evento",
"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 name of the session": "El nombre de la sesión",
"Select a date and time": "Seleccione una fecha y hora",
"The timezone which the session will take place.": "Zona horaria que tendrá lugar la sesión.",
"The name of the event": "El nombre del evento",
"The event you want to publish.": "El evento que desea publicar.",
"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",
"Booking Created": "Reserva creada",
"Booking Started": "Reserva iniciada",
"Booking Ended": "Reserva finalizada",
"Event Created": "Evento creado",
"Event Published": "Evento Publicado",
"Event Started": "Evento iniciado",
"Event Ended": "Evento finalizado",
"Event New Registration": "Evento Nuevo Registro",
"Session Created": "Sesión creada",
"Session Started": "Sesión iniciada",
"Session Ended": "Sesión finalizada",
"Takeaway Ready": "Listo Takeaway",
"Transcript Ready": "Transcripción preparada",
"Triggered when a new booking is created.": "Se activa cuando se crea una nueva reserva.",
"Triggered when a booking starts.": "Se activa cuando comienza una reserva.",
"Triggered when a booking ends.": "Activado cuando termina una reserva.",
"Triggered when a new event is created.": "Se activa cuando se crea un nuevo evento.",
"Triggered when an event is published.": "Se activa cuando se publica un evento.",
"Triggered when an event starts.": "Se activa cuando comienza un evento.",
"Triggered when an event ends.": "Se activa cuando termina un evento.",
"Triggered when a new registration for an event occurs.": "Se activa cuando se produce un nuevo registro para un evento.",
"Triggered when a new session is created.": "Se activa cuando se crea una nueva sesión.",
"Triggered when a session starts.": "Se activa cuando comienza una sesión.",
"Triggered when a session has ended.": "Activado cuando una sesión ha terminado.",
"Triggered when a takeaway becomes available.": "Se activa cuando una retirada está disponible.",
"Permission": "Permiso",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Únicamente se aplica personal al usuario, la organización se aplica a cada evento que realiza un usuario de la organización.",
"Personal": "Personal",
"Organization": "Organización"
}

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "Plateforme de vidéoconférence pour les entreprises et les professionnels",
"Create Session": "Créer une session",
"Create Event": "Créer un événement",
"Publish Event": "Publier l'événement",
"Custom API Call": "Appel d'API personnalisé",
"Quickly create a session.": "Créer rapidement une session.",
"Quickly create an event.": "Créer rapidement un événement.",
"Quickly publish an event.": "Publie rapidement un événement.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Session Name": "Nom de la session",
"Starts At": "Commence à",
"Ends At": "Se termine à",
"Timezone": "Fuseau horaire",
"Event Name": "Nom de l'événement",
"Event": "Evénement",
"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 name of the session": "Le nom de la session",
"Select a date and time": "Sélectionnez une date et une heure",
"The timezone which the session will take place.": "Le fuseau horaire de la session aura lieu.",
"The name of the event": "Le nom de l'événement",
"The event you want to publish.": "L'événement que vous voulez publier.",
"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",
"Booking Created": "Réservation créée",
"Booking Started": "Réservation commencée",
"Booking Ended": "Réservation terminée",
"Event Created": "Événement créé",
"Event Published": "Événement publié",
"Event Started": "L'événement a commencé",
"Event Ended": "Événement terminé",
"Event New Registration": "Nouvelle inscription à l'événement",
"Session Created": "Session créée",
"Session Started": "Session démarrée",
"Session Ended": "Session terminée",
"Takeaway Ready": "Prêt à emporter",
"Transcript Ready": "Transcription prête",
"Triggered when a new booking is created.": "Déclenché lorsqu'une nouvelle réservation est créée.",
"Triggered when a booking starts.": "Déclenché quand une réservation commence.",
"Triggered when a booking ends.": "Déclenché quand une réservation se termine.",
"Triggered when a new event is created.": "Déclenché lorsqu'un nouvel événement est créé.",
"Triggered when an event is published.": "Déclenché lorsqu'un événement est publié.",
"Triggered when an event starts.": "Déclenché quand un événement démarre.",
"Triggered when an event ends.": "Déclenché quand un événement se termine.",
"Triggered when a new registration for an event occurs.": "Déclenché lorsqu'une nouvelle inscription à un événement se produit.",
"Triggered when a new session is created.": "Déclenché lorsqu'une nouvelle session est créée.",
"Triggered when a session starts.": "Déclenché quand une session démarre.",
"Triggered when a session has ended.": "Déclenché quand une session est terminée.",
"Triggered when a takeaway becomes available.": "Déclenché quand un emménagement devient disponible.",
"Permission": "Permission",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Les demandes personnelles pour l'utilisateur uniquement, l'organisation s'applique à tous les événements qui sont faits par un utilisateur de l'organisation.",
"Personal": "Personnels",
"Organization": "Organisation"
}

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "企業と専門家のためのビデオ会議プラットフォーム",
"Create Session": "セッションを作成",
"Create Event": "イベントを作成",
"Publish Event": "イベントを公開",
"Custom API Call": "カスタムAPI通話",
"Quickly create a session.": "セッションをすばやく作成します。",
"Quickly create an event.": "イベントをすばやく作成します。",
"Quickly publish an event.": "イベントをすばやく公開します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Session Name": "セッション名",
"Starts At": "開始時刻",
"Ends At": "終了日時",
"Timezone": "Timezone",
"Event Name": "イベント名",
"Event": "イベント",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The name of the session": "セッション名",
"Select a date and time": "日付と時刻を選択",
"The timezone which the session will take place.": "セッションが行われるタイムゾーン。",
"The name of the event": "イベントの名前",
"The event you want to publish.": "公開するイベント。",
"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": "頭",
"Booking Created": "作成された予約",
"Booking Started": "予約を開始しました",
"Booking Ended": "予約が終了しました",
"Event Created": "イベントが作成されました",
"Event Published": "イベントが公開されました",
"Event Started": "イベント開始",
"Event Ended": "イベント終了",
"Event New Registration": "イベントの新規登録",
"Session Created": "セッションが作成されました",
"Session Started": "セッション開始",
"Session Ended": "セッション終了",
"Takeaway Ready": "テイクアウト準備完了",
"Transcript Ready": "トランスクリプトの準備完了",
"Triggered when a new booking is created.": "新しい予約が作成されたときにトリガーされます。",
"Triggered when a booking starts.": "予約開始時にトリガーされます。",
"Triggered when a booking ends.": "予約が終了したときにトリガーされます。",
"Triggered when a new event is created.": "新しいイベントが作成されたときにトリガーされます。",
"Triggered when an event is published.": "イベントが公開されたときにトリガーされます。",
"Triggered when an event starts.": "イベントが開始したときにトリガーされます。",
"Triggered when an event ends.": "イベントが終了したときにトリガーされます。",
"Triggered when a new registration for an event occurs.": "イベントの新しい登録が発生したときにトリガーされます。",
"Triggered when a new session is created.": "新しいセッションが作成されたときにトリガーされます。",
"Triggered when a session starts.": "セッションが開始したときにトリガーされます。",
"Triggered when a session has ended.": "セッションが終了したときにトリガーされます。",
"Triggered when a takeaway becomes available.": "持ち帰りが可能になったときにトリガーされます。",
"Permission": "アクセス許可",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "個人はユーザーにのみ適用されます。Organization は、組織のユーザーによって行われたすべてのイベントに適用されます。",
"Personal": "個人用",
"Organization": "組織"
}

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "Videoconferentie platform voor bedrijven en professionals",
"Create Session": "Sessie aanmaken",
"Create Event": "Gebeurtenis aanmaken",
"Publish Event": "Publiceer gebeurtenis",
"Custom API Call": "Custom API Call",
"Quickly create a session.": "Maak snel een sessie.",
"Quickly create an event.": "Maak snel een evenement.",
"Quickly publish an event.": "Publiceer snel een evenement.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Session Name": "Sessie Naam",
"Starts At": "Begint bij",
"Ends At": "Eindigt om",
"Timezone": "Timezone",
"Event Name": "Naam van gebeurtenis",
"Event": "Gebeurtenis",
"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 name of the session": "De naam van de sessie",
"Select a date and time": "Selecteer een datum en tijd",
"The timezone which the session will take place.": "De tijdzone die de zitting zal plaatsvinden.",
"The name of the event": "De naam van het evenement",
"The event you want to publish.": "De gebeurtenis die u wilt publiceren.",
"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",
"Booking Created": "Boeking gemaakt",
"Booking Started": "Boeking gestart",
"Booking Ended": "Boeking afgelopen",
"Event Created": "Event aangemaakt",
"Event Published": "Gebeurtenis gepubliceerd",
"Event Started": "Evenement gestart",
"Event Ended": "Afspraak beëindigd",
"Event New Registration": "Nieuwe event registratie",
"Session Created": "Sessie aangemaakt",
"Session Started": "Sessie gestart",
"Session Ended": "Sessie beëindigd",
"Takeaway Ready": "Afhaal klaar",
"Transcript Ready": "Transcriptie klaar",
"Triggered when a new booking is created.": "Uitgelokt wanneer een nieuwe boeking wordt gemaakt.",
"Triggered when a booking starts.": "Uitgelokt wanneer een boeking start.",
"Triggered when a booking ends.": "Uitgelokt wanneer een reservering eindigde.",
"Triggered when a new event is created.": "Uitgelokt wanneer een nieuw evenement is aangemaakt.",
"Triggered when an event is published.": "Uitgelokt wanneer een gebeurtenis wordt gepubliceerd.",
"Triggered when an event starts.": "Uitgelokt wanneer een evenement start.",
"Triggered when an event ends.": "Uitgelokt wanneer een gebeurtenis eindigt.",
"Triggered when a new registration for an event occurs.": "Uitgelokt wanneer een nieuwe registratie voor een gebeurtenis plaatsvindt.",
"Triggered when a new session is created.": "Uitgelokt wanneer een nieuwe sessie wordt gemaakt.",
"Triggered when a session starts.": "Uitgelokt wanneer een sessie wordt gestart.",
"Triggered when a session has ended.": "Uitgelokt wanneer een sessie is beëindigd.",
"Triggered when a takeaway becomes available.": "Uitgelokt wanneer er een opname beschikbaar is.",
"Permission": "Bevoegdheden",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Persoonlijk geldt alleen voor de gebruiker, de organisatie is van toepassing op elk evenement dat wordt gemaakt door een gebruiker van de organisatie.",
"Personal": "Persoonlijk",
"Organization": "Rekening"
}

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "Plataforma de videoconferência para empresas e profissionais",
"Create Session": "Criar sessão",
"Create Event": "Criar evento",
"Publish Event": "Publicar evento",
"Custom API Call": "Chamada de API personalizada",
"Quickly create a session.": "Crie rapidamente uma sessão.",
"Quickly create an event.": "Crie rapidamente um evento.",
"Quickly publish an event.": "Publique rapidamente um evento.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Session Name": "Nome da sessão",
"Starts At": "Começa em",
"Ends At": "Termina em",
"Timezone": "Timezone",
"Event Name": "Nome do Evento",
"Event": "Evento",
"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 name of the session": "O nome da sessão",
"Select a date and time": "Selecione uma data e hora",
"The timezone which the session will take place.": "O fuso horário que a sessão terá lugar.",
"The name of the event": "O nome do evento",
"The event you want to publish.": "O evento que você deseja publicar.",
"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",
"Booking Created": "Reserva criada",
"Booking Started": "Reserva iniciada",
"Booking Ended": "Reserva terminada",
"Event Created": "Evento criado",
"Event Published": "Evento publicado",
"Event Started": "Evento Iniciado",
"Event Ended": "Evento Terminado",
"Event New Registration": "Nova inscrição no evento",
"Session Created": "Sessão Criada",
"Session Started": "Sessão Iniciada",
"Session Ended": "Sessão Encerrada",
"Takeaway Ready": "Takeaway Pronto",
"Transcript Ready": "Pronto para transcrição",
"Triggered when a new booking is created.": "Acionada quando uma nova reserva é criada.",
"Triggered when a booking starts.": "Acionada quando inicia uma reserva.",
"Triggered when a booking ends.": "Acionada quando uma reserva termina.",
"Triggered when a new event is created.": "Acionada quando um novo evento é criado.",
"Triggered when an event is published.": "Acionada quando um evento é publicado.",
"Triggered when an event starts.": "Acionada quando um evento é iniciado.",
"Triggered when an event ends.": "Acionada quando um evento termina.",
"Triggered when a new registration for an event occurs.": "Acionada quando um novo registro para um evento ocorre.",
"Triggered when a new session is created.": "Acionada quando uma nova sessão é criada.",
"Triggered when a session starts.": "Acionada quando uma sessão é iniciada.",
"Triggered when a session has ended.": "Acionada quando uma sessão é encerrada.",
"Triggered when a takeaway becomes available.": "Acionada quando uma retirada se torna disponível.",
"Permission": "Permisschar@@0o",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Pessoal se aplica apenas ao usuário, organização aplica-se a todos os eventos que são feitos por um usuário da organização.",
"Personal": "pessoal",
"Organization": "Cliente"
}

View File

@@ -0,0 +1,65 @@
{
"Sessions.us": "Сессии",
"Video conferencing platform for businesses and professionals": "Видеоконференции для бизнеса и профессионалов",
"Create Session": "Создать сессию",
"Create Event": "Создать событие",
"Publish Event": "Опубликовать событие",
"Custom API Call": "Пользовательский вызов API",
"Quickly create a session.": "Быстро создать сессию.",
"Quickly create an event.": "Быстро создать событие.",
"Quickly publish an event.": "Быстро опубликовать событие.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Session Name": "Название сессии",
"Starts At": "Начинается в",
"Ends At": "Закончится",
"Timezone": "Timezone",
"Event Name": "Название события",
"Event": "Событие",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The name of the session": "Название сессии",
"Select a date and time": "Выберите дату и время",
"The timezone which the session will take place.": "Часовой пояс, который будет проходить сессии.",
"The name of the event": "Название события",
"The event you want to publish.": "Событие, которое вы хотите опубликовать.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"Booking Created": "Бронирование создано",
"Booking Started": "Бронирование началось",
"Booking Ended": "Бронирование завершено",
"Event Created": "Событие создано",
"Event Published": "Событие опубликовано",
"Event Started": "Событие началось",
"Event Ended": "Событие закончилось",
"Event New Registration": "Событие Новая Регистрация",
"Session Created": "Сеанс создан",
"Session Started": "Сессия началась",
"Session Ended": "Сессия завершена",
"Takeaway Ready": "Готово к выходу",
"Transcript Ready": "Транскрипт готов",
"Triggered when a new booking is created.": "Срабатывает при создании нового заказа.",
"Triggered when a booking starts.": "Срабатывает при начале бронирования.",
"Triggered when a booking ends.": "Срабатывает при завершении заказа.",
"Triggered when a new event is created.": "Срабатывает при создании нового события.",
"Triggered when an event is published.": "Срабатывает при публикации события.",
"Triggered when an event starts.": "Срабатывает при запуске события.",
"Triggered when an event ends.": "Срабатывает, когда событие заканчивается.",
"Triggered when a new registration for an event occurs.": "Срабатывает при новой регистрации на событие.",
"Triggered when a new session is created.": "Срабатывает при создании новой сессии.",
"Triggered when a session starts.": "Срабатывает при запуске сессии.",
"Triggered when a session has ended.": "Срабатывает при завершении сеанса.",
"Triggered when a takeaway becomes available.": "Срабатывает, когда взлет становится доступен.",
"Permission": "Разрешение",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Личные заявки подаются только на пользователя, организация применяется к любому событию, происшедшему пользователем организации.",
"Personal": "Личные сведения",
"Organization": "Организация"
}

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "Video conferencing platform for businesses and professionals",
"Create Session": "Create Session",
"Create Event": "Create Event",
"Publish Event": "Publish Event",
"Custom API Call": "Custom API Call",
"Quickly create a session.": "Quickly create a session.",
"Quickly create an event.": "Quickly create an event.",
"Quickly publish an event.": "Quickly publish an event.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Session Name": "Session Name",
"Starts At": "Starts At",
"Ends At": "Ends At",
"Timezone": "Timezone",
"Event Name": "Event Name",
"Event": "Event",
"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 name of the session": "The name of the session",
"Select a date and time": "Select a date and time",
"The timezone which the session will take place.": "The timezone which the session will take place.",
"The name of the event": "The name of the event",
"The event you want to publish.": "The event you want to publish.",
"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",
"Booking Created": "Booking Created",
"Booking Started": "Booking Started",
"Booking Ended": "Booking Ended",
"Event Created": "Event Created",
"Event Published": "Event Published",
"Event Started": "Event Started",
"Event Ended": "Event Ended",
"Event New Registration": "Event New Registration",
"Session Created": "Session Created",
"Session Started": "Session Started",
"Session Ended": "Session Ended",
"Takeaway Ready": "Takeaway Ready",
"Transcript Ready": "Transcript Ready",
"Triggered when a new booking is created.": "Triggered when a new booking is created.",
"Triggered when a booking starts.": "Triggered when a booking starts.",
"Triggered when a booking ends.": "Triggered when a booking ends.",
"Triggered when a new event is created.": "Triggered when a new event is created.",
"Triggered when an event is published.": "Triggered when an event is published.",
"Triggered when an event starts.": "Triggered when an event starts.",
"Triggered when an event ends.": "Triggered when an event ends.",
"Triggered when a new registration for an event occurs.": "Triggered when a new registration for an event occurs.",
"Triggered when a new session is created.": "Triggered when a new session is created.",
"Triggered when a session starts.": "Triggered when a session starts.",
"Triggered when a session has ended.": "Triggered when a session has ended.",
"Triggered when a takeaway becomes available.": "Triggered when a takeaway becomes available.",
"Permission": "Permission",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Personal applies for the user only, organization applies to every event that is made by a user of the organization.",
"Personal": "Personal",
"Organization": "Organization"
}

View File

@@ -0,0 +1,65 @@
{
"Sessions.us": "Sessions.us",
"Video conferencing platform for businesses and professionals": "Video conferencing platform for businesses and professionals",
"Create Session": "Create Session",
"Create Event": "Create Event",
"Publish Event": "Publish Event",
"Custom API Call": "Custom API Call",
"Quickly create a session.": "Quickly create a session.",
"Quickly create an event.": "Quickly create an event.",
"Quickly publish an event.": "Quickly publish an event.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Session Name": "Session Name",
"Starts At": "Starts At",
"Ends At": "Ends At",
"Timezone": "Timezone",
"Event Name": "Event Name",
"Event": "Event",
"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 name of the session": "The name of the session",
"Select a date and time": "Select a date and time",
"The timezone which the session will take place.": "The timezone which the session will take place.",
"The name of the event": "The name of the event",
"The event you want to publish.": "The event you want to publish.",
"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",
"Booking Created": "Booking Created",
"Booking Started": "Booking Started",
"Booking Ended": "Booking Ended",
"Event Created": "Event Created",
"Event Published": "Event Published",
"Event Started": "Event Started",
"Event Ended": "Event Ended",
"Event New Registration": "Event New Registration",
"Session Created": "Session Created",
"Session Started": "Session Started",
"Session Ended": "Session Ended",
"Takeaway Ready": "Takeaway Ready",
"Transcript Ready": "Transcript Ready",
"Triggered when a new booking is created.": "Triggered when a new booking is created.",
"Triggered when a booking starts.": "Triggered when a booking starts.",
"Triggered when a booking ends.": "Triggered when a booking ends.",
"Triggered when a new event is created.": "Triggered when a new event is created.",
"Triggered when an event is published.": "Triggered when an event is published.",
"Triggered when an event starts.": "Triggered when an event starts.",
"Triggered when an event ends.": "Triggered when an event ends.",
"Triggered when a new registration for an event occurs.": "Triggered when a new registration for an event occurs.",
"Triggered when a new session is created.": "Triggered when a new session is created.",
"Triggered when a session starts.": "Triggered when a session starts.",
"Triggered when a session has ended.": "Triggered when a session has ended.",
"Triggered when a takeaway becomes available.": "Triggered when a takeaway becomes available.",
"Permission": "Permission",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Personal applies for the user only, organization applies to every event that is made by a user of the organization.",
"Personal": "Personal",
"Organization": "Organization"
}

View File

@@ -0,0 +1,66 @@
{
"Video conferencing platform for businesses and professionals": "Video conferencing platform for businesses and professionals",
"Create Session": "Create Session",
"Create Event": "Create Event",
"Publish Event": "Publish Event",
"Custom API Call": "自定义 API 呼叫",
"Quickly create a session.": "Quickly create a session.",
"Quickly create an event.": "Quickly create an event.",
"Quickly publish an event.": "Quickly publish an event.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Session Name": "Session Name",
"Starts At": "Starts At",
"Ends At": "Ends At",
"Timezone": "Timezone",
"Event Name": "Event Name",
"Event": "Event",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The name of the session": "The name of the session",
"Select a date and time": "Select a date and time",
"The timezone which the session will take place.": "The timezone which the session will take place.",
"The name of the event": "The name of the event",
"The event you want to publish.": "The event you want to publish.",
"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": "黑色",
"Booking Created": "Booking Created",
"Booking Started": "Booking Started",
"Booking Ended": "Booking Ended",
"Event Created": "Event Created",
"Event Published": "Event Published",
"Event Started": "Event Started",
"Event Ended": "Event Ended",
"Event New Registration": "Event New Registration",
"Session Created": "Session Created",
"Session Started": "Session Started",
"Session Ended": "Session Ended",
"Takeaway Ready": "Takeaway Ready",
"Transcript Ready": "Transcript Ready",
"Triggered when a new booking is created.": "Triggered when a new booking is created.",
"Triggered when a booking starts.": "Triggered when a booking starts.",
"Triggered when a booking ends.": "Triggered when a booking ends.",
"Triggered when a new event is created.": "Triggered when a new event is created.",
"Triggered when an event is published.": "Triggered when an event is published.",
"Triggered when an event starts.": "Triggered when an event starts.",
"Triggered when an event ends.": "Triggered when an event ends.",
"Triggered when a new registration for an event occurs.": "Triggered when a new registration for an event occurs.",
"Triggered when a new session is created.": "Triggered when a new session is created.",
"Triggered when a session starts.": "Triggered when a session starts.",
"Triggered when a session has ended.": "Triggered when a session has ended.",
"Triggered when a takeaway becomes available.": "Triggered when a takeaway becomes available.",
"Permission": "Permission",
"Personal applies for the user only, organization applies to every event that is made by a user of the organization.": "Personal applies for the user only, organization applies to every event that is made by a user of the organization.",
"Personal": "Personal",
"Organization": "Organization"
}

View File

@@ -0,0 +1,86 @@
import {
createCustomApiCallAction,
httpClient,
HttpMethod,
} from '@activepieces/pieces-common';
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { createEvent } from './lib/actions/create-event';
import { createSession } from './lib/actions/create-session';
import { publishEvent } from './lib/actions/publish-event';
import { bookingCreated } from './lib/triggers/booking-created';
import { bookingEnded } from './lib/triggers/booking-ended';
import { bookingStarted } from './lib/triggers/booking-started';
import { eventCreated } from './lib/triggers/event-created';
import { eventEnded } from './lib/triggers/event-ended';
import { eventNewRegistration } from './lib/triggers/event-new-registration';
import { eventPublished } from './lib/triggers/event-published';
import { eventStarted } from './lib/triggers/event-started';
import { sessionCreated } from './lib/triggers/session-created';
import { sessionEnded } from './lib/triggers/session-ended';
import { sessionStarted } from './lib/triggers/session-started';
import { takeawayReady } from './lib/triggers/takeaway-ready';
import { transcriptReady } from './lib/triggers/transcript-ready';
export const sessionAuth = PieceAuth.SecretText({
displayName: 'API Key',
required: true,
validate: async ({ auth }) => {
try {
await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.app.sessions.us/api/sessions',
headers: {
accept: 'application/json',
'x-api-key': `${auth}`,
},
});
return {
valid: true,
};
} catch (e) {
return {
error: 'Invalid API Key',
valid: false,
};
}
},
});
export const sessionsUs = createPiece({
displayName: 'Sessions.us',
description: 'Video conferencing platform for businesses and professionals',
auth: sessionAuth,
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/sessions-us.png',
authors: ["kishanprmr","MoShizzle","abuaboud"],
categories: [PieceCategory.BUSINESS_INTELLIGENCE],
actions: [
createSession,
createEvent,
publishEvent,
createCustomApiCallAction({
baseUrl: () => 'https://api.app.sessions.us/api',
auth: sessionAuth,
authMapping: async (auth) => ({
'x-api-key': `${auth.secret_text}`,
}),
}),
],
triggers: [
bookingCreated,
bookingStarted,
bookingEnded,
eventCreated,
eventPublished,
eventStarted,
eventEnded,
eventNewRegistration,
sessionCreated,
sessionStarted,
sessionEnded,
takeawayReady,
transcriptReady,
],
});

View File

@@ -0,0 +1,73 @@
import { baseUrl, getTimezones, slugify } from '../common';
import { sessionAuth } from '../..';
import {
HttpMethod,
httpClient,
HttpRequest,
} from '@activepieces/pieces-common';
import { Property, createAction } from '@activepieces/pieces-framework';
export const createEvent = createAction({
auth: sessionAuth,
name: 'create_event',
displayName: 'Create Event',
description: 'Quickly create an event.',
props: {
name: Property.ShortText({
displayName: 'Event Name',
description: 'The name of the event',
required: true,
}),
startAt: Property.DateTime({
displayName: 'Starts At',
description: 'Select a date and time',
required: true,
defaultValue: new Date().toISOString(),
}),
plannedEnd: Property.DateTime({
displayName: 'Ends At',
description: 'Select a date and time',
required: true,
defaultValue: new Date().toISOString(),
}),
timezone: Property.Dropdown({
auth: sessionAuth,
displayName: 'Timezone',
description: 'The timezone which the session will take place.',
required: true,
refreshers: [],
options: async () => {
const timezones = await getTimezones();
return {
options: timezones.map((timezone) => {
return {
label: timezone,
value: timezone,
};
}),
};
},
}),
},
async run({ propsValue, auth }) {
const request: HttpRequest = {
method: HttpMethod.POST,
url: `${baseUrl}/events`,
headers: {
'x-api-key': auth.secret_text,
},
body: {
name: propsValue['name'],
slug: slugify(propsValue['name']),
startAt: propsValue['startAt'],
plannedEnd: propsValue['plannedEnd'],
timeZone: propsValue['timezone'],
},
};
const response = await httpClient.sendRequest(request);
return response.body;
},
});

View File

@@ -0,0 +1,76 @@
import { baseUrl, getTimezones } from '../common';
import { sessionAuth } from '../..';
import {
HttpMethod,
httpClient,
HttpRequest,
} from '@activepieces/pieces-common';
import { Property, createAction } from '@activepieces/pieces-framework';
export const createSession = createAction({
auth: sessionAuth,
name: 'create_session',
displayName: 'Create Session',
description: 'Quickly create a session.',
props: {
name: Property.ShortText({
displayName: 'Session Name',
description: 'The name of the session',
required: true,
}),
startAt: Property.DateTime({
displayName: 'Starts At',
description: 'Select a date and time',
required: true,
defaultValue: new Date().toISOString(),
}),
plannedEnd: Property.DateTime({
displayName: 'Ends At',
description: 'Select a date and time',
required: true,
defaultValue: new Date().toISOString(),
}),
timezone: Property.Dropdown({
auth: sessionAuth,
displayName: 'Timezone',
description: 'The timezone which the session will take place.',
required: true,
refreshers: [],
options: async () => {
const timezones = await getTimezones();
return {
options: timezones.map((timezone) => {
return {
label: timezone,
value: timezone,
};
}),
};
},
}),
},
async run({ propsValue, auth }) {
const request: HttpRequest = {
method: HttpMethod.POST,
url: `${baseUrl}/sessions`,
headers: {
'x-api-key': auth.secret_text,
},
body: {
name: propsValue['name'],
startAt: propsValue['startAt'],
plannedEnd: propsValue['plannedEnd'],
timeZone: propsValue['timezone'],
},
};
const response = await httpClient.sendRequest(request);
return {
id: response.body['id'],
name: response.body['name'],
link: response.body['sessionLink'],
};
},
});

View File

@@ -0,0 +1,49 @@
import { baseUrl, getEvents } from '../common';
import { sessionAuth } from '../..';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { Property, createAction } from '@activepieces/pieces-framework';
export const publishEvent = createAction({
auth: sessionAuth,
name: 'publish_event',
displayName: 'Publish Event',
description: 'Quickly publish an event.',
props: {
event: Property.Dropdown({
auth: sessionAuth,
displayName: 'Event',
description: 'The event you want to publish.',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
};
}
const events = await getEvents(auth.secret_text);
return {
options: events.map((event) => {
return {
label: event.session.name,
value: event.id,
};
}),
};
},
}),
},
async run({ propsValue, auth }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${baseUrl}/events/${propsValue.event}/publish`,
headers: {
'x-api-key': auth.secret_text,
},
});
return response.body;
},
});

View File

@@ -0,0 +1,174 @@
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import {
createTrigger,
Property,
Trigger,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { sessionAuth } from '../..';
export const baseUrl = 'https://api.app.sessions.us/api';
export const properties = {
permission: Property.StaticDropdown({
displayName: 'Permission',
description:
'Personal applies for the user only, organization applies to every event that is made by a user of the organization.',
required: true,
defaultValue: 'personal',
options: {
options: [
{
label: 'Personal',
value: 'personal',
},
{
label: 'Organization',
value: 'organization',
},
],
},
}),
};
export async function getTimezones(): Promise<string[]> {
const timezones = await httpClient.sendRequest({
url: 'http://worldtimeapi.org/api/timezone',
method: HttpMethod.GET,
});
return timezones.body as string[];
}
export async function getEvents(
auth: string
): Promise<{ id: string; session: { name: string } }[]> {
const response = await httpClient.sendRequest<
{ id: string; session: { name: string } }[]
>({
method: HttpMethod.GET,
url: `${baseUrl}/events`,
headers: {
'x-api-key': auth,
},
});
return response.body;
}
export function slugify(string: string) {
// Remove leading and trailing whitespaces
const trimmedStr = string.trim();
// Replace spaces with dashes, remove special characters, and convert to lowercase
const slug = trimmedStr
.toLowerCase()
.replace(/[^\w\s-]/g, '') // Remove non-word characters (alphanumeric, underscores, and dashes)
.replace(/\s+/g, '-') // Replace spaces with dashes
.replace(/-+/g, '-'); // Replace consecutive dashes with a single dash
return slug;
}
export async function createWebhook(
trigger: SessionsUsWebhookTrigger,
auth: string,
webhookUrl: string,
permission: string
): Promise<{ id: string }> {
const response = await httpClient.sendRequest({
url: `${baseUrl}/webhooks`,
method: HttpMethod.POST,
headers: {
'x-api-key': auth,
},
body: {
url: webhookUrl,
trigger: trigger,
permission: permission,
// If the API key used to create this webhook is deleted, deletes the webhook
linkPublicKey: true,
// This needs to be ACTIVE_PIECES as set up by the Sessions.us team, makes the webhook not editable from the frontend
integration: 'ACTIVE_PIECES',
},
});
return response.body as { id: string };
}
export async function deleteWebhook(webhookId: string, auth: string) {
const response = await httpClient.sendRequest({
url: `${baseUrl}/webhooks/${webhookId}`,
method: HttpMethod.DELETE,
headers: {
'x-api-key': auth,
},
});
return response.body;
}
export enum SessionsUsWebhookTrigger {
SESSION_CREATED = 'SESSION_CREATED',
SESSION_STARTED = 'SESSION_STARTED',
SESSION_ENDED = 'SESSION_ENDED',
BOOKING_CREATED = 'BOOKING_CREATED',
BOOKING_STARTED = 'BOOKING_STARTED',
BOOKING_ENDED = 'BOOKING_ENDED',
EVENT_CREATED = 'EVENT_CREATED',
EVENT_STARTED = 'EVENT_STARTED',
EVENT_ENDED = 'EVENT_ENDED',
EVENT_PUBLISHED = 'EVENT_PUBLISHED',
EVENT_NEW_REGISTRATION = 'EVENT_NEW_REGISTRATION',
TRANSCRIPT_READY = 'TRANSCRIPT_READY',
TAKEAWAY_READY = 'TAKEAWAY_READY',
}
export function createSessionsUsWebhookTrigger(
data: CreateWebhookTriggerDto
) {
return createTrigger({
auth: sessionAuth,
name: data.name,
displayName: data.displayName,
description: data.description,
type: TriggerStrategy.WEBHOOK,
sampleData: data.sampleData ?? {},
props: {
permission: properties.permission,
},
async onEnable({ auth, store, webhookUrl, propsValue }) {
const webhookId = await createWebhook(
data.trigger,
auth.secret_text,
webhookUrl,
propsValue.permission
);
await store.put(data.storeKey, {
webhookId: webhookId.id,
});
},
async onDisable({ auth, store }) {
const webhookId: {
webhookId: string;
} | null = await store.get(data.storeKey);
if (webhookId) {
await deleteWebhook(webhookId.webhookId, auth.secret_text);
}
},
async run({ payload }) {
const body = payload.body as { trigger: string; data: unknown };
return [body.data];
},
});
}
export interface CreateWebhookTriggerDto {
name: string;
displayName: string;
description: string;
sampleData?: unknown;
trigger: SessionsUsWebhookTrigger;
storeKey: string;
}

View File

@@ -0,0 +1,57 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const bookingCreated = createSessionsUsWebhookTrigger({
name: 'booking_created',
displayName: 'Booking Created',
description: 'Triggered when a new booking is created.',
trigger: SessionsUsWebhookTrigger.BOOKING_CREATED,
storeKey: 'sessions_booking_created_trigger',
sampleData: {
session: {
id: '2f8547a5-5c36-49ea-bc21-c61e337d89a3',
name: 'Talk with Active Pieces',
description: '',
quickSession: false,
room: null,
createdAt: '2023-11-30T10:21:41.372Z',
startAt: '2023-11-30T10:30:00.000Z',
actualStart: '2023-11-30T10:34:37.799Z',
endedAt: null,
booking: {
id: '3df6dbdb-9a6c-41e6-89b2-d7a38233163e',
name: 'Talk with Active Pieces',
participantName: 'Active Pieces',
participantEmail: 'example@gmail.com',
guests: [],
},
event: null,
participants: [
{
id: '2021014e-5e28-498f-9fe3-3428ce40c9c4',
isOwner: false,
guest: {
id: '529e6bc0-af38-4365-a0b2-5530d8207ecb',
email: 'example@gmail.com',
lastName: null,
firstName: 'Active Pieces',
},
user: null,
},
{
id: '529b967f-de3d-4dec-a865-35637c294f9c',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,57 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const bookingEnded = createSessionsUsWebhookTrigger({
name: 'booking_ended',
displayName: 'Booking Ended',
description: 'Triggered when a booking ends.',
trigger: SessionsUsWebhookTrigger.BOOKING_ENDED,
storeKey: 'sessions_booking_ended_trigger',
sampleData: {
session: {
id: '2f8547a5-5c36-49ea-bc21-c61e337d89a3',
name: 'Talk with Active Pieces',
description: '',
quickSession: false,
room: null,
createdAt: '2023-11-30T10:21:41.372Z',
startAt: '2023-11-30T10:30:00.000Z',
actualStart: '2023-11-30T10:34:37.799Z',
endedAt: null,
booking: {
id: '3df6dbdb-9a6c-41e6-89b2-d7a38233163e',
name: 'Talk with Active Pieces',
participantName: 'Active Pieces',
participantEmail: 'example@gmail.com',
guests: [],
},
event: null,
participants: [
{
id: '2021014e-5e28-498f-9fe3-3428ce40c9c4',
isOwner: false,
guest: {
id: '529e6bc0-af38-4365-a0b2-5530d8207ecb',
email: 'example@gmail.com',
lastName: null,
firstName: 'Active Pieces',
},
user: null,
},
{
id: '529b967f-de3d-4dec-a865-35637c294f9c',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,57 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const bookingStarted = createSessionsUsWebhookTrigger({
name: 'booking_started',
displayName: 'Booking Started',
description: 'Triggered when a booking starts.',
trigger: SessionsUsWebhookTrigger.BOOKING_STARTED,
storeKey: 'sessions_booking_started_trigger',
sampleData: {
session: {
id: '2f8547a5-5c36-49ea-bc21-c61e337d89a3',
name: 'Talk with Active Pieces',
description: '',
quickSession: false,
room: null,
createdAt: '2023-11-30T10:21:41.372Z',
startAt: '2023-11-30T10:30:00.000Z',
actualStart: '2023-11-30T10:34:37.799Z',
endedAt: null,
booking: {
id: '3df6dbdb-9a6c-41e6-89b2-d7a38233163e',
name: 'Talk with Active Pieces',
participantName: 'Active Pieces',
participantEmail: 'example@gmail.com',
guests: [],
},
event: null,
participants: [
{
id: '2021014e-5e28-498f-9fe3-3428ce40c9c4',
isOwner: false,
guest: {
id: '529e6bc0-af38-4365-a0b2-5530d8207ecb',
email: 'example@gmail.com',
lastName: null,
firstName: 'Active Pieces',
},
user: null,
},
{
id: '529b967f-de3d-4dec-a865-35637c294f9c',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,43 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const eventCreated = createSessionsUsWebhookTrigger({
name: 'event_created',
displayName: 'Event Created',
description: 'Triggered when a new event is created.',
trigger: SessionsUsWebhookTrigger.EVENT_CREATED,
storeKey: 'sessions_event_created_trigger',
sampleData: {
session: {
id: '8208f783-fba9-4045-ae6e-dea64f5ab7ea',
name: 'My Best Event',
description: null,
quickSession: false,
room: null,
createdAt: '2023-11-30T10:46:13.675Z',
startAt: '2023-11-30T11:00:00.000Z',
actualStart: null,
endedAt: null,
booking: null,
event: {
id: '52259a5f-f706-41d9-8b58-1b8796bd0ffc',
slug: 'f34bd8a5-a7d9-47f2-aee9-031d10a76b75-83897/my-best-event',
},
participants: [
{
id: 'd98f984f-982b-4a17-8a3d-093a4a774b49',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,43 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const eventEnded = createSessionsUsWebhookTrigger({
name: 'event_ended',
displayName: 'Event Ended',
description: 'Triggered when an event ends.',
trigger: SessionsUsWebhookTrigger.EVENT_ENDED,
storeKey: 'sessions_event_ended_trigger',
sampleData: {
session: {
id: '8208f783-fba9-4045-ae6e-dea64f5ab7ea',
name: 'My Best Event',
description: null,
quickSession: false,
room: null,
createdAt: '2023-11-30T10:46:13.675Z',
startAt: '2023-11-30T11:00:00.000Z',
actualStart: null,
endedAt: null,
booking: null,
event: {
id: '52259a5f-f706-41d9-8b58-1b8796bd0ffc',
slug: 'f34bd8a5-a7d9-47f2-aee9-031d10a76b75-83897/my-best-event',
},
participants: [
{
id: 'd98f984f-982b-4a17-8a3d-093a4a774b49',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,31 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const eventNewRegistration = createSessionsUsWebhookTrigger({
name: 'event_new_registration',
displayName: 'Event New Registration',
description: 'Triggered when a new registration for an event occurs.',
trigger: SessionsUsWebhookTrigger.EVENT_NEW_REGISTRATION,
storeKey: 'sessions_event_new_registration_trigger',
sampleData: {
eventId: '52259a5f-f706-41d9-8b58-1b8796bd0ffc',
sessionId: '8208f783-fba9-4045-ae6e-dea64f5ab7ea',
registeredParticipant: {
id: '5164d6de-5f72-4990-8a42-8b5c9b7d5670',
email: 'email@example.com',
firstName: 'Active Pieces',
form: [
{
question: 'Name',
answer: 'Active Pieces',
},
{
question: 'Email',
answer: 'email@example.com',
},
],
},
},
});

View File

@@ -0,0 +1,43 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const eventPublished = createSessionsUsWebhookTrigger({
name: 'event_published',
displayName: 'Event Published',
description: 'Triggered when an event is published.',
trigger: SessionsUsWebhookTrigger.EVENT_PUBLISHED,
storeKey: 'sessions_event_published_trigger',
sampleData: {
session: {
id: '8208f783-fba9-4045-ae6e-dea64f5ab7ea',
name: 'My Best Event',
description: null,
quickSession: false,
room: null,
createdAt: '2023-11-30T10:46:13.675Z',
startAt: '2023-11-30T11:00:00.000Z',
actualStart: null,
endedAt: null,
booking: null,
event: {
id: '52259a5f-f706-41d9-8b58-1b8796bd0ffc',
slug: 'f34bd8a5-a7d9-47f2-aee9-031d10a76b75-83897/my-best-event',
},
participants: [
{
id: 'd98f984f-982b-4a17-8a3d-093a4a774b49',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,43 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const eventStarted = createSessionsUsWebhookTrigger({
name: 'event_started',
displayName: 'Event Started',
description: 'Triggered when an event starts.',
trigger: SessionsUsWebhookTrigger.EVENT_STARTED,
storeKey: 'sessions_event_started_trigger',
sampleData: {
session: {
id: '8208f783-fba9-4045-ae6e-dea64f5ab7ea',
name: 'My Best Event',
description: null,
quickSession: false,
room: null,
createdAt: '2023-11-30T10:46:13.675Z',
startAt: '2023-11-30T11:00:00.000Z',
actualStart: null,
endedAt: null,
booking: null,
event: {
id: '52259a5f-f706-41d9-8b58-1b8796bd0ffc',
slug: 'f34bd8a5-a7d9-47f2-aee9-031d10a76b75-83897/my-best-event',
},
participants: [
{
id: 'd98f984f-982b-4a17-8a3d-093a4a774b49',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,40 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const sessionCreated = createSessionsUsWebhookTrigger({
name: 'session_created',
displayName: 'Session Created',
description: 'Triggered when a new session is created.',
trigger: SessionsUsWebhookTrigger.SESSION_CREATED,
storeKey: 'sessions_session_created_trigger',
sampleData: {
session: {
id: '5645d810-4e29-4c2c-b9a5-84d71a6429dd',
name: 'My Talking Session',
description: '',
quickSession: false,
room: null,
createdAt: '2023-11-30T10:30:16.535Z',
startAt: '2023-11-30T10:31:00.000Z',
actualStart: null,
endedAt: null,
booking: null,
event: null,
participants: [
{
id: '0f2aced6-e099-424b-9448-4dd94d9ba3a0',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,40 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const sessionEnded = createSessionsUsWebhookTrigger({
name: 'session_ended',
displayName: 'Session Ended',
description: 'Triggered when a session has ended.',
trigger: SessionsUsWebhookTrigger.SESSION_ENDED,
storeKey: 'sessions_session_ended_trigger',
sampleData: {
session: {
id: '5645d810-4e29-4c2c-b9a5-84d71a6429dd',
name: 'My Talking Session',
description: '',
quickSession: false,
room: null,
createdAt: '2023-11-30T10:30:16.535Z',
startAt: '2023-11-30T10:31:00.000Z',
actualStart: null,
endedAt: null,
booking: null,
event: null,
participants: [
{
id: '0f2aced6-e099-424b-9448-4dd94d9ba3a0',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,40 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const sessionStarted = createSessionsUsWebhookTrigger({
name: 'session_started',
displayName: 'Session Started',
description: 'Triggered when a session starts.',
trigger: SessionsUsWebhookTrigger.SESSION_STARTED,
storeKey: 'sessions_session_started_trigger',
sampleData: {
session: {
id: '5645d810-4e29-4c2c-b9a5-84d71a6429dd',
name: 'My Talking Session',
description: '',
quickSession: false,
room: null,
createdAt: '2023-11-30T10:30:16.535Z',
startAt: '2023-11-30T10:31:00.000Z',
actualStart: null,
endedAt: null,
booking: null,
event: null,
participants: [
{
id: '0f2aced6-e099-424b-9448-4dd94d9ba3a0',
isOwner: true,
guest: null,
user: {
id: '9090bd7c-0cf9-4716-837e-43f3821a65c4',
email: 'email@example.com',
lastName: 'Pieces',
firstName: 'Active',
},
},
],
},
},
});

View File

@@ -0,0 +1,36 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const takeawayReady = createSessionsUsWebhookTrigger({
name: 'takeaway_ready',
displayName: 'Takeaway Ready',
description: 'Triggered when a takeaway becomes available.',
trigger: SessionsUsWebhookTrigger.TAKEAWAY_READY,
storeKey: 'sessions_takeaway_ready_trigger',
sampleData: {
session: {
id: 'e5ebb4a1-a5a5-4a10-b18b-e1a89ddac27e',
takeawaysText: 'Hello',
takeawaysRaw: {
type: 'doc',
content: [
{
type: 'paragraph',
attrs: {
textAlign: 'left',
indent: 0,
},
content: [
{
type: 'text',
text: 'Hello',
},
],
},
],
},
},
},
});

View File

@@ -0,0 +1,30 @@
import {
createSessionsUsWebhookTrigger,
SessionsUsWebhookTrigger,
} from '../common';
export const transcriptReady = createSessionsUsWebhookTrigger({
name: 'transcript_ready',
displayName: 'Transcript Ready',
description: 'Triggered when a session has ended.',
trigger: SessionsUsWebhookTrigger.TRANSCRIPT_READY,
storeKey: 'sessions_transcript_ready_trigger',
sampleData: {
session: {
id: '8208f783-fba9-4045-ae6e-dea64f5ab7ea',
transcripts: [
{
content: [
{
text: 'Hello, my name is...',
language: 'en',
},
],
participantId: 'd98f984f-982b-4a17-8a3d-093a4a774b49',
sourceTimestamp: '2023-11-30T10:50:26.363Z',
sourceLanguage: 'en',
},
],
},
},
});

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