Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "Bildgenerierung API für Banner und Social Media Beiträge",
|
||||
"Public API Key": "Öffentlicher API-Schlüssel",
|
||||
"Secret API Key": "Geheimer API-Schlüssel",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nUm Ihre GenerateBanners öffentlichen und geheimen API-Schlüssel zu erhalten, folgen Sie den folgenden Schritten:\n\n1. Gehe zur [GenerateBanners Homepage](https://www.generatebanners.com/).\n2. Melde dich an oder melde dich bei deinem Konto an.\n3. Gehe zu deiner [Kontoseite](https://www.generatebanners.com/app/account).\n4. Die öffentlichen und geheimen API-Schlüssel werden nun angezeigt, kopieren Sie sie einzeln in die richtigen Activepieces Felder.\n",
|
||||
"Render Template": "Vorlage rendern",
|
||||
"Render a GenerateBanners template": "GenerateBanner-Template rendern",
|
||||
"Template": "Vorlage",
|
||||
"File type": "Dateityp",
|
||||
"Variables": "Variablen",
|
||||
"Image (jpg)": "Bild (jpg)",
|
||||
"Image (png)": "Bild (png)",
|
||||
"Document (pdf)": "Dokument (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "API de generación de imágenes para banners y publicaciones de redes sociales",
|
||||
"Public API Key": "Clave pública de API",
|
||||
"Secret API Key": "Clave API secreta",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n",
|
||||
"Render Template": "Procesar plantilla",
|
||||
"Render a GenerateBanners template": "Procesar una plantilla GenerateBanners",
|
||||
"Template": "Plantilla",
|
||||
"File type": "Tipo de archivo",
|
||||
"Variables": "Variables",
|
||||
"Image (jpg)": "Imagen (jpg)",
|
||||
"Image (png)": "Imagen (png)",
|
||||
"Document (pdf)": "Documento (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "API de génération d'images pour les bannières et les publications des médias sociaux",
|
||||
"Public API Key": "Clé d'API publique",
|
||||
"Secret API Key": "Clé secrète API",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n",
|
||||
"Render Template": "Modèle de rendu",
|
||||
"Render a GenerateBanners template": "Rendre un modèle GenerateBanners",
|
||||
"Template": "Gabarit",
|
||||
"File type": "Type de fichier",
|
||||
"Variables": "Variables",
|
||||
"Image (jpg)": "Image (jpg)",
|
||||
"Image (png)": "Image (png)",
|
||||
"Document (pdf)": "Document (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "バナーやソーシャルメディア投稿用の画像生成API",
|
||||
"Public API Key": "パブリック API キー",
|
||||
"Secret API Key": "シークレットAPIキー",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n",
|
||||
"Render Template": "テンプレートをレンダリング",
|
||||
"Render a GenerateBanners template": "GenerateBannersテンプレートをレンダリングする",
|
||||
"Template": "テンプレート",
|
||||
"File type": "ファイルの種類",
|
||||
"Variables": "変数",
|
||||
"Image (jpg)": "画像 (jpg)",
|
||||
"Image (png)": "画像 (png)",
|
||||
"Document (pdf)": "ドキュメント (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "API voor afbeeldingen genereren voor banners en social media berichten",
|
||||
"Public API Key": "Publieke API-sleutel",
|
||||
"Secret API Key": "Geheime API Sleutel",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nOm publieke en geheime API-sleutels van uw GenerateBanners te verkrijgen, kunt u de volgende stappen zetten:\n\n1. Ga naar de [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Meld u aan of log in op uw account.\n3. Ga naar uw [accountpagina](https://www.generatebanners.com/app/account).\n4. De publieke en geheime API-sleutels worden nu weergegeven, kopieer ze één voor één naar de juiste Activepieces velden.\n",
|
||||
"Render Template": "Sjabloon weergeven",
|
||||
"Render a GenerateBanners template": "Geef een GenerateBanners sjabloon weer",
|
||||
"Template": "Sjabloon",
|
||||
"File type": "Soort bestand",
|
||||
"Variables": "Variabelen",
|
||||
"Image (jpg)": "Afbeelding (jpg)",
|
||||
"Image (png)": "Afbeelding (png)",
|
||||
"Document (pdf)": "Document (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "API de geração de imagem para banners e mensagens de mídia social",
|
||||
"Public API Key": "Chave pública da API",
|
||||
"Secret API Key": "Chave secreta da API",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n",
|
||||
"Render Template": "Modelo de Renderização",
|
||||
"Render a GenerateBanners template": "Renderizar um modelo de GenerateBanners",
|
||||
"Template": "Modelo",
|
||||
"File type": "Tipo de arquivo",
|
||||
"Variables": "Variáveis",
|
||||
"Image (jpg)": "Imagem (jpg)",
|
||||
"Image (png)": "Imagem (png)",
|
||||
"Document (pdf)": "Documento (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"GenerateBanners": "Генерировать баннеры",
|
||||
"Image generation API for banners and social media posts": "API генерации изображений для баннеров и сообщений в социальных сетях",
|
||||
"Public API Key": "Публичный ключ API",
|
||||
"Secret API Key": "Секретный API ключ",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nДля получения публичных и секретных ключей API GenerateBanners, вы можете выполнить следующие действия:\n\n1. Перейдите на страницу [GenerateBanner](https://www.generatebanners.com/).\n2. Зарегистрируйтесь или войдите в свою учетную запись.\n3. Перейдите на свою [страницу счета](https://www.generatebanners.com/app/account).\n4. Публичные и секретные ключи API теперь отображаются, скопируйте их по одному в правильные поля Activepieces .\n",
|
||||
"Render Template": "Шаблон рендера",
|
||||
"Render a GenerateBanners template": "Шаблон генерации баннеров",
|
||||
"Template": "Шаблон",
|
||||
"File type": "Тип файла",
|
||||
"Variables": "Переменные",
|
||||
"Image (jpg)": "Изображение (jpg)",
|
||||
"Image (png)": "Изображение (png)",
|
||||
"Document (pdf)": "Документ (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "Image generation API for banners and social media posts",
|
||||
"Public API Key": "Public API Key",
|
||||
"Secret API Key": "Secret API Key",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n",
|
||||
"Render Template": "Render Template",
|
||||
"Render a GenerateBanners template": "Render a GenerateBanners template",
|
||||
"Template": "Template",
|
||||
"File type": "File type",
|
||||
"Variables": "Variables",
|
||||
"Image (jpg)": "Image (jpg)",
|
||||
"Image (png)": "Image (png)",
|
||||
"Document (pdf)": "Document (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"GenerateBanners": "GenerateBanners",
|
||||
"Image generation API for banners and social media posts": "Image generation API for banners and social media posts",
|
||||
"Public API Key": "Public API Key",
|
||||
"Secret API Key": "Secret API Key",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n",
|
||||
"Render Template": "Render Template",
|
||||
"Render a GenerateBanners template": "Render a GenerateBanners template",
|
||||
"Template": "Template",
|
||||
"File type": "File type",
|
||||
"Variables": "Variables",
|
||||
"Image (jpg)": "Image (jpg)",
|
||||
"Image (png)": "Image (png)",
|
||||
"Document (pdf)": "Document (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Image generation API for banners and social media posts": "Image generation API for banners and social media posts",
|
||||
"Public API Key": "Public API Key",
|
||||
"Secret API Key": "Secret API Key",
|
||||
"\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n": "\nTo obtain your GenerateBanners public and secret API Keys, you can follow the steps below:\n\n1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).\n2. Sign up or log in into your account.\n3. Go to your [account page](https://www.generatebanners.com/app/account).\n4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.\n",
|
||||
"Render Template": "Render Template",
|
||||
"Render a GenerateBanners template": "Render a GenerateBanners template",
|
||||
"Template": "模板",
|
||||
"File type": "File type",
|
||||
"Variables": "Variables",
|
||||
"Image (jpg)": "Image (jpg)",
|
||||
"Image (png)": "Image (png)",
|
||||
"Document (pdf)": "Document (pdf)"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import { PieceAuth, createPiece } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { renderTemplate } from './lib/actions/renderTemplate.action';
|
||||
|
||||
const markdownDescription = `
|
||||
To obtain your GenerateBanners public and secret API Keys, you can follow the steps below:
|
||||
|
||||
1. Go to the [GenerateBanners homepage](https://www.generatebanners.com/).
|
||||
2. Sign up or log in into your account.
|
||||
3. Go to your [account page](https://www.generatebanners.com/app/account).
|
||||
4. The public and secret API keys are now displayed, copy them one by one into the right Activepieces fields.
|
||||
`;
|
||||
|
||||
export const generatebannersAuth = PieceAuth.BasicAuth({
|
||||
description: markdownDescription,
|
||||
required: true,
|
||||
username: {
|
||||
displayName: 'Public API Key',
|
||||
},
|
||||
password: {
|
||||
displayName: 'Secret API Key',
|
||||
},
|
||||
});
|
||||
|
||||
export const generatebanners = createPiece({
|
||||
displayName: 'GenerateBanners',
|
||||
description: 'Image generation API for banners and social media posts',
|
||||
|
||||
minimumSupportedRelease: '0.30.0',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/generatebanners.png',
|
||||
categories: [PieceCategory.CONTENT_AND_FILES],
|
||||
authors: ["tpatel","kishanprmr","khaledmashaly","abuaboud"],
|
||||
auth: generatebannersAuth,
|
||||
actions: [renderTemplate],
|
||||
triggers: [],
|
||||
});
|
||||
@@ -0,0 +1,175 @@
|
||||
import {
|
||||
createAction,
|
||||
Property,
|
||||
BasicAuthPropertyValue,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
AuthenticationType,
|
||||
HttpRequest,
|
||||
HttpMethod,
|
||||
httpClient,
|
||||
} from '@activepieces/pieces-common';
|
||||
import { generatebannersAuth } from '../../';
|
||||
|
||||
export const renderTemplate = createAction({
|
||||
auth: generatebannersAuth,
|
||||
name: 'render_template',
|
||||
description: 'Render a GenerateBanners template',
|
||||
displayName: 'Render Template',
|
||||
props: {
|
||||
template_id: Property.Dropdown({
|
||||
displayName: 'Template',
|
||||
auth: generatebannersAuth,
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
const authentication = auth;
|
||||
if (!authentication) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please enter your API key first.',
|
||||
};
|
||||
}
|
||||
|
||||
const response =
|
||||
await httpClient.sendRequest<GenerateBannersTemplateList>({
|
||||
method: HttpMethod.GET,
|
||||
url: `https://api.generatebanners.com/api/v1/${authentication.username}/template`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: authentication.password,
|
||||
},
|
||||
});
|
||||
|
||||
if (response.status === 200) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.templates.map((template) => {
|
||||
return {
|
||||
label: template.name,
|
||||
value: template.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Error fetching templates',
|
||||
};
|
||||
},
|
||||
}),
|
||||
filetype: Property.StaticDropdown({
|
||||
displayName: 'File type',
|
||||
required: true,
|
||||
defaultValue: 'jpg',
|
||||
options: {
|
||||
options: [
|
||||
{
|
||||
label: 'Image (jpg)',
|
||||
value: 'jpg',
|
||||
},
|
||||
{
|
||||
label: 'Image (png)',
|
||||
value: 'png',
|
||||
},
|
||||
{
|
||||
label: 'Document (pdf)',
|
||||
value: 'pdf',
|
||||
},
|
||||
],
|
||||
},
|
||||
}),
|
||||
variables: Property.DynamicProperties({
|
||||
displayName: 'Variables',
|
||||
auth: generatebannersAuth,
|
||||
required: true,
|
||||
refreshers: ['template_id'],
|
||||
props: async ({ auth, template_id }) => {
|
||||
if (!auth || !template_id) {
|
||||
return {};
|
||||
}
|
||||
const request: HttpRequest = {
|
||||
method: HttpMethod.GET,
|
||||
url: `https://api.generatebanners.com/api/v1/${auth['username']}/template/${template_id}`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: auth['password'],
|
||||
},
|
||||
};
|
||||
const result = await httpClient.sendRequest(request);
|
||||
if (result.status === 200) {
|
||||
// Allowing any because the properties are defined on GenerateBanners
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const properties: any = {};
|
||||
for (const variable of result.body['template']['variables']) {
|
||||
if (!variable.hidden) {
|
||||
switch (variable.property) {
|
||||
case 'text':
|
||||
properties[variable.name] = Property.LongText({
|
||||
displayName: variable.name,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
default:
|
||||
properties[variable.name] = Property.ShortText({
|
||||
displayName: variable.name,
|
||||
required: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return properties;
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
// Build the querystring from the dynamic properties
|
||||
const query = [];
|
||||
if (propsValue.variables) {
|
||||
const props = Object.entries(propsValue.variables);
|
||||
for (const [propertyKey, propertyValue] of props) {
|
||||
if (propertyValue) {
|
||||
query.push(
|
||||
`${propertyKey}=${encodeURIComponent(propertyValue as string)}`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Get the signed url
|
||||
const request: HttpRequest = {
|
||||
method: HttpMethod.GET,
|
||||
url: `https://api.generatebanners.com/api/v1/${auth.username}/template/${
|
||||
propsValue.template_id
|
||||
}/sign-url?filetype=${encodeURIComponent(
|
||||
propsValue.filetype
|
||||
)}&${query.join('&')}`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: auth.password,
|
||||
},
|
||||
};
|
||||
const result = await httpClient.sendRequest(request);
|
||||
if (result.status === 200 || result.status === 202) {
|
||||
// Return an url for more flexibility
|
||||
return result.body['url'];
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
interface GenerateBannersTemplateList {
|
||||
templates: GenerateBannersTemplate[];
|
||||
}
|
||||
|
||||
interface GenerateBannersTemplate {
|
||||
id: string;
|
||||
name: string;
|
||||
variables: [];
|
||||
}
|
||||
Reference in New Issue
Block a user