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,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../../../.eslintrc.base.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-nuelink
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-nuelink` to build the library.
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "@activepieces/piece-nuelink",
|
||||
"version": "0.0.2"
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "pieces-nuelink",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/nuelink/src",
|
||||
"projectType": "library",
|
||||
"release": {
|
||||
"version": {
|
||||
"currentVersionResolver": "git-tag",
|
||||
"preserveLocalDependencyProtocols": false,
|
||||
"manifestRootsToUpdate": [
|
||||
"dist/{projectRoot}"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tags": [],
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/nuelink",
|
||||
"tsConfig": "packages/pieces/community/nuelink/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/nuelink/package.json",
|
||||
"main": "packages/pieces/community/nuelink/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/nuelink/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/nuelink/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build",
|
||||
"prebuild"
|
||||
]
|
||||
},
|
||||
"nx-release-publish": {
|
||||
"options": {
|
||||
"packageRoot": "dist/{projectRoot}"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
},
|
||||
"prebuild": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/pieces/community/nuelink",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "Bitte verwenden Sie den **Nuelink API Schlüssel**.",
|
||||
"Create Post": "Beitrag erstellen",
|
||||
"Creates a post on nuelink.": "Erstellt einen Beitrag auf nuelink.",
|
||||
"Caption": "Überschrift",
|
||||
"Media": "Medien",
|
||||
"Title": "Titel",
|
||||
"Alt Text": "Alt Text",
|
||||
"Share Instagram Reel to Feed": "Instagram-Rollen mit Feed teilen",
|
||||
"Treat videos as short-form vertical videos": "Videos als kurzformige vertikale Videos behandeln",
|
||||
"The your post caption here": "Die Beschriftung deines Beitrags hier",
|
||||
"Enter the media URL here": "Geben Sie hier die Medienadresse ein",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "Geben Sie einen Titel für Ihre Rollen, Videos und/oder Pinterest Beiträge ein.",
|
||||
"Enter an alt text for your image or video.": "Geben Sie einen Alt-Text für Ihr Bild oder Video ein.",
|
||||
"Share your Instagram Reel to your feed as well.": "Teile deine Instagram Rolle auch mit deinem Feed.",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "Wir behandeln die importierten Videos als kurzformige vertikale Videos (Rollen, Shorts, Tiktoks usw.)."
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "Por favor usa **Nuelink API Key**.",
|
||||
"Create Post": "Crear publicación",
|
||||
"Creates a post on nuelink.": "Crea una publicación en nuelink.",
|
||||
"Caption": "Leyenda",
|
||||
"Media": "Medios",
|
||||
"Title": "Título",
|
||||
"Alt Text": "Texto Alt",
|
||||
"Share Instagram Reel to Feed": "Compartir Instagram Reel para alimentar",
|
||||
"Treat videos as short-form vertical videos": "Tratar videos como videos verticales de forma corta",
|
||||
"The your post caption here": "El título de tu post aquí",
|
||||
"Enter the media URL here": "Introduzca la URL de medios aquí",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "Introduzca un título para usar en Reels, vídeos y/o publicaciones de Pinterest.",
|
||||
"Enter an alt text for your image or video.": "Introduzca un texto alternativo para su imagen o vídeo.",
|
||||
"Share your Instagram Reel to your feed as well.": "Comparte tu Instagram Reel en tu feed también.",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "Trataremos los videos importados como videos verticales de forma corta (Reels, Shorts, Tiktoks, etc...)."
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "Veuillez utiliser la **Clé API Nuelink**.",
|
||||
"Create Post": "Créer un message",
|
||||
"Creates a post on nuelink.": "Crée un message sur nuelink.",
|
||||
"Caption": "Légende",
|
||||
"Media": "Médias",
|
||||
"Title": "Titre de la feuille de calcul",
|
||||
"Alt Text": "Texte Alt",
|
||||
"Share Instagram Reel to Feed": "Partager Instagram Reel sur Flux",
|
||||
"Treat videos as short-form vertical videos": "Traiter les vidéos comme des vidéos verticales courtes",
|
||||
"The your post caption here": "La légende de votre message ici",
|
||||
"Enter the media URL here": "Entrez l'URL du média ici",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "Entrez un titre à utiliser pour vos rouleaux, vos vidéos et/ou vos messages Pinterest.",
|
||||
"Enter an alt text for your image or video.": "Entrez un texte alt pour votre image ou vidéo.",
|
||||
"Share your Instagram Reel to your feed as well.": "Partagez également votre rouleau Instagram dans votre flux.",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "Nous traiterons les vidéos importées comme des vidéos verticales courtes (rouleaux, courts, Tiktoks etc...)."
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "**Nuelink API Key**を使用してください。",
|
||||
"Create Post": "投稿を作成",
|
||||
"Creates a post on nuelink.": "Nuelinkに投稿を作成します。",
|
||||
"Caption": "図表番号",
|
||||
"Media": "メディア",
|
||||
"Title": "タイトル",
|
||||
"Alt Text": "代替テキスト",
|
||||
"Share Instagram Reel to Feed": "Instagramのリールを共有してフィードする",
|
||||
"Treat videos as short-form vertical videos": "動画を縦長の短い動画として扱います",
|
||||
"The your post caption here": "ここにあなたの投稿の説明",
|
||||
"Enter the media URL here": "メディア URL をここに入力してください",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "リール、動画、Pinterest の投稿に使用するタイトルを入力します。",
|
||||
"Enter an alt text for your image or video.": "画像または動画の代替テキストを入力します。",
|
||||
"Share your Instagram Reel to your feed as well.": "あなたのInstagramのリールもフィードに共有してください。",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "インポートされた動画を縦長の動画(リール、ショートパンツ、ティクトークなど)として扱います。"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "Gebruik **Nuelink API Key**.",
|
||||
"Create Post": "Post aanmaken",
|
||||
"Creates a post on nuelink.": "Maakt een bericht op nuelink.",
|
||||
"Caption": "Onderschrift",
|
||||
"Media": "Medium",
|
||||
"Title": "Aanspreektitel",
|
||||
"Alt Text": "Alternatieve tekst",
|
||||
"Share Instagram Reel to Feed": "Deel Instagram Reel om te Feed",
|
||||
"Treat videos as short-form vertical videos": "Video's behandelen als verticale kortingsvorm video's",
|
||||
"The your post caption here": "Het bijschrift van je post hier",
|
||||
"Enter the media URL here": "Voer de media-URL hier in",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "Voer een titel in om te gebruiken voor uw Reels, video's en/of Pinterest berichten.",
|
||||
"Enter an alt text for your image or video.": "Voer een Alt-tekst in voor uw afbeelding of video.",
|
||||
"Share your Instagram Reel to your feed as well.": "Deel ook uw Instagram Rel met uw feed",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "We behandelen de geïmporteerde video's als verticale video's (Reels, Kortingen, Tiktoks etc...)."
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "Por favor use **Chave de API Nuelin**.",
|
||||
"Create Post": "Criar publicação",
|
||||
"Creates a post on nuelink.": "Cria uma postagem na nuelink.",
|
||||
"Caption": "Legenda",
|
||||
"Media": "Multimídia",
|
||||
"Title": "Título",
|
||||
"Alt Text": "Texto Alternativo",
|
||||
"Share Instagram Reel to Feed": "Compartilhar Instagram Reel para Feed",
|
||||
"Treat videos as short-form vertical videos": "Tratar vídeos como vídeos verticais curtos",
|
||||
"The your post caption here": "Aqui a legenda da sua postagem",
|
||||
"Enter the media URL here": "Digite a URL de mídia aqui",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "Digite um título para usar em suas Reels, vídeos e/ou publicações do Pinterest.",
|
||||
"Enter an alt text for your image or video.": "Digite um texto alternativo para sua imagem ou vídeo.",
|
||||
"Share your Instagram Reel to your feed as well.": "Compartilhe seu Instagram Reel ao seu feed também.",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "Trataremos os vídeos importados como vídeos verticais curtos (Reels, Shorts, Tiktoks etc...)."
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "Please use **Nuelink API Key**.",
|
||||
"Create Post": "Create Post",
|
||||
"Creates a post on nuelink.": "Creates a post on nuelink.",
|
||||
"Caption": "Caption",
|
||||
"Media": "Media",
|
||||
"Title": "Title",
|
||||
"Alt Text": "Alt Text",
|
||||
"Share Instagram Reel to Feed": "Share Instagram Reel to Feed",
|
||||
"Treat videos as short-form vertical videos": "Treat videos as short-form vertical videos",
|
||||
"The your post caption here": "The your post caption here",
|
||||
"Enter the media URL here": "Enter the media URL here",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "Enter a title to use for your Reels, videos and/or Pinterest posts.",
|
||||
"Enter an alt text for your image or video.": "Enter an alt text for your image or video.",
|
||||
"Share your Instagram Reel to your feed as well.": "Share your Instagram Reel to your feed as well.",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...)."
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Please use **Nuelink API Key**.": "Please use **Nuelink API Key**.",
|
||||
"Create Post": "Create Post",
|
||||
"Creates a post on nuelink.": "Creates a post on nuelink.",
|
||||
"Caption": "Caption",
|
||||
"Media": "Media",
|
||||
"Title": "标题",
|
||||
"Alt Text": "Alt Text",
|
||||
"Share Instagram Reel to Feed": "Share Instagram Reel to Feed",
|
||||
"Treat videos as short-form vertical videos": "Treat videos as short-form vertical videos",
|
||||
"The your post caption here": "The your post caption here",
|
||||
"Enter the media URL here": "Enter the media URL here",
|
||||
"Enter a title to use for your Reels, videos and/or Pinterest posts.": "Enter a title to use for your Reels, videos and/or Pinterest posts.",
|
||||
"Enter an alt text for your image or video.": "Enter an alt text for your image or video.",
|
||||
"Share your Instagram Reel to your feed as well.": "Share your Instagram Reel to your feed as well.",
|
||||
"We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).": "We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...)."
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
|
||||
import { createPost } from "./lib/actions/create-post";
|
||||
import { PieceCategory } from "@activepieces/shared";
|
||||
|
||||
export const nuelinkAuth = PieceAuth.SecretText({
|
||||
displayName: 'API Key',
|
||||
required: true,
|
||||
description: 'Please use **Nuelink API Key**.',
|
||||
});
|
||||
|
||||
export const nuelink = createPiece({
|
||||
displayName: "Nuelink",
|
||||
auth: nuelinkAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: "https://cdn.activepieces.com/pieces/nuelink.png",
|
||||
categories:[PieceCategory.CONTENT_AND_FILES,PieceCategory.MARKETING],
|
||||
authors: ['AouladLahceneOussama'],
|
||||
actions: [createPost],
|
||||
triggers: [],
|
||||
});
|
||||
@@ -0,0 +1,65 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { nuelinkAuth } from '../..';
|
||||
|
||||
export const createPost = createAction({
|
||||
// auth: check https://www.activepieces.com/docs/developers/piece-reference/authentication,
|
||||
name: 'createPost',
|
||||
auth: nuelinkAuth,
|
||||
displayName: 'Create Post',
|
||||
description: 'Creates a post on nuelink.',
|
||||
props: {
|
||||
body: Property.LongText({
|
||||
displayName: 'Caption',
|
||||
required: true,
|
||||
description: 'The your post caption here',
|
||||
}),
|
||||
media: Property.LongText({
|
||||
displayName: 'Media',
|
||||
required: false,
|
||||
description: 'Enter the media URL here',
|
||||
}),
|
||||
title: Property.LongText({
|
||||
displayName: 'Title',
|
||||
required: false,
|
||||
description: 'Enter a title to use for your Reels, videos and/or Pinterest posts.',
|
||||
}),
|
||||
altText: Property.LongText({
|
||||
displayName: 'Alt Text',
|
||||
required: false,
|
||||
description: 'Enter an alt text for your image or video.',
|
||||
}),
|
||||
shareToFeed: Property.Checkbox({
|
||||
displayName: 'Share Instagram Reel to Feed',
|
||||
required: false,
|
||||
description: 'Share your Instagram Reel to your feed as well.',
|
||||
defaultValue: false,
|
||||
}),
|
||||
postAsShort: Property.Checkbox({
|
||||
displayName: 'Treat videos as short-form vertical videos',
|
||||
required: false,
|
||||
description: 'We will treat the videos imported as short-form vertical videos (Reels, Shorts, Tiktoks etc...).',
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
const res = await httpClient.sendRequest<string[]>({
|
||||
method: HttpMethod.POST,
|
||||
url: 'https://nuelink.com/api/v1/pabbly',
|
||||
headers: {
|
||||
Authorization: `Bearer ${context.auth.secret_text}`,
|
||||
},
|
||||
body: {
|
||||
body: context.propsValue.body,
|
||||
media: context.propsValue.media,
|
||||
title: context.propsValue.title,
|
||||
altText: context.propsValue.altText,
|
||||
shareToFeed: context.propsValue.shareToFeed,
|
||||
postAsShort: context.propsValue.postAsShort
|
||||
},
|
||||
});
|
||||
return res.body;
|
||||
},
|
||||
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"extends": "../../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"]
|
||||
}
|
||||
Reference in New Issue
Block a user