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,154 @@
{
"URL shortening and link management platform with analytics.": "URL-Verkürzung und Link-Management-Plattform mit Analyse.",
"Access Token": "Zugangs-Token",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n Um Ihr Zugangs-Token zu erhalten:\n 1. Melden Sie sich bei Ihrem Bitly Konto an.\n 2. Klicke auf dein Profilsymbol in der oberen rechten Ecke.\n 3. Gehe zu **Profileinstellungen**.\n 4. Navigiere zu den **Entwickler-Einstellungen** Abschnitt.\n 5. Klicke auf **API**.\n Klicken Sie auf den **Erzeugen** Button und geben Sie Ihr Passwort ein, um Ihren Zugangs-Token zu erhalten.\n ",
"Archive Bitlink": "Bitlink archivieren",
"Create Bitlink": "Bitlink erstellen",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Bitlink-Details abrufen",
"Update Bitlink": "Bitlink aktualisieren",
"Custom API Call": "Eigener API-Aufruf",
"Archive a Bitlink to stop redirects.": "Einen Bitlink archivieren um Umleitungen zu stoppen.",
"Shorten a long URL with optional customization.": "Eine lange URL mit optionaler Anpassung abkürzen.",
"Generate a customized QR code for a Bitlink.": "Erstellen Sie einen angepassten QR-Code für einen Bitlink.",
"Retrieve metadata for a Bitlink.": "Abrufen von Metadaten für einen Bitlink.",
"Modify properties of an existing Bitlink.": "Ändern Sie die Eigenschaften eines bestehenden Bitlinks.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Group": "Gruppe",
"Bitlink": "Bitlink",
"Long URL": "Lange URL",
"Domain": "Domäne",
"Title": "Titel",
"Tags": "Tags",
"Force New Link": "Neuen Link erzwingen",
"Mobile App ID": "Mobile App ID",
"App URI Path": "App-URI-Pfad",
"App Install URL": "App-Installations-URL",
"Install Type": "Installationstyp",
"Destination Type": "Zieltyp",
"Destination": "Ziel",
"Archive on Create": "Archiv beim Erstellen",
"Style: Background Color": "Stile: Hintergrundfarbe",
"Style: Dot Pattern Color": "Stil: Punktmusterfarbe",
"Style: Dot Pattern Type": "Style: Punkt-Muster-Typ",
"Corner 1 (Top-Left): Shape": "Ecke 1 (oben links): Form",
"Corner 1 (Top-Left): Inner Color": "Ecke 1 (oben links): Innenfarbe",
"Corner 1 (Top-Left): Outer Color": "Ecke 1 (oben links): Äußere Farbe",
"Corner 2 (Top-Right): Shape": "Ecke 2 (oben rechts): Form",
"Corner 2 (Top-Right): Inner Color": "Ecke 2 (oben rechts): Innenfarbe",
"Corner 2 (Top-Right): Outer Color": "Ecke 2 (oben Rechts): Äußere Farbe",
"Corner 3 (Bottom-Right): Shape": "Ecke 3 (Unten rechts): Form",
"Corner 3 (Bottom-Right): Inner Color": "Ecke 3 (Unten rechts): Innere Farbe",
"Corner 3 (Bottom-Right): Outer Color": "Ecke 3 (Unten rechts): Äußere Farbe",
"Gradient: Style": "Verlauf: Stil",
"Gradient: Color 1": "Farbverlauf: Farbe 1",
"Gradient: Color 2": "Verlauf: Farbe 2",
"Gradient: Angle (for Linear)": "Verlauf: Winkel (für Linear)",
"Gradient: Exclude Corners": "Verlauf: Ecken ausschließen",
"Frame: Type": "Rahmen: Typ",
"Frame: Primary Color": "Rahmen: Primäre Farbe",
"Frame: Secondary Color": "Rahmen: Sekundärfarbe",
"Frame: Background Color": "Rahmen: Hintergrundfarbe",
"Frame: Text": "Rahmen: Text",
"Branding: Logo Image GUID": "Branding: Logo Bild GUID",
"Branding: Show Bitly Logo": "Branding: Bitly-Logo anzeigen",
"Specs: Error Correction": "Spektren: Fehlerkorrektur",
"Archived": "Archiviert",
"Mobile OS": "Mobile OS",
"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 group where the item will be managed.": "Die Gruppe, in der der Gegenstand verwaltet wird.",
"Select the Bitlink to modify.": "Wählen Sie den Bitlink zum Ändern aus.",
"The URL to shorten (must include http:// or https://).": "Die zu verkürzende URL (muss http:// oder https://) enthalten.",
"Domain to use for the Bitlink.": "Domäne für den Bitlink.",
"Custom title for the Bitlink.": "Benutzerdefinierter Titel für den Bitlink.",
"Tags to apply to the Bitlink.": "Tags die auf den Bitlink angewendet werden sollen.",
"Create new link even if one exists for this URL.": "Neuen Link erstellen, auch wenn er für diese URL existiert.",
"Mobile app identifier (e.g., com.yourapp.name).": "Mobile App Identifier (z.B. com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Pfad innerhalb der mobilen App (z.B. /product/123).",
"URL where users can install the mobile app.": "URL mit der Benutzer die mobile App installieren können.",
"How to handle app installation.": "Wie man mit der App-Installation umgeht.",
"Internal title for the QR Code.": "Interner Titel für den QR-Code.",
"Archive the QR code upon creation.": "Archivieren Sie den QR-Code bei der Erstellung.",
"Hex code (e.g., #FFFFFF)": "Hex-Code (z. B. #FFFFFF)",
"Hex code (e.g., #000000)": "Hex-Code (z.B. #00000000)",
"First gradient color (hex code)": "Erster Farbverlauf (Hex-Code)",
"Second gradient color (hex code)": "Zweite Farbverlauf (Hex-Code)",
"Primary text for frames that support it.": "Primärer Text für Frames, die ihn unterstützen.",
"A GUID for a logo image previously uploaded to Bitly.": "Eine GUID für ein Logo-Bild, das zuvor auf Bitly hochgeladen wurde.",
"Show the Bitly logo in the bottom right corner.": "Zeige das Bitly Logo in der unteren rechten Ecke.",
"New title for the Bitlink.": "Neuer Titel für den Bitlink.",
"Archive or unarchive the Bitlink.": "Den Bitlink archivieren oder dearchivieren.",
"Tags to apply (overwrites existing tags).": "anzuwendende Tags (überschreibt bestehende Tags).",
"Target mobile operating system.": "Zielmobile Betriebssysteme.",
"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..",
"No Install": "Keine Installation",
"Auto Install": "Automatische Installation",
"Promote Install": "Installation fördern",
"Existing Bitlink": "Existierender Bitlink",
"Standard": "Standard",
"Circle": "Kreis",
"Block": "Blockieren",
"Blob": "Blob",
"Rounded": "Abgerundet",
"Vertical": "Vertikal",
"Horizontal": "Horizontal",
"Triangle": "Dreieck",
"Heart": "Herz",
"Star": "Stern",
"Diamond": "Diamant",
"Slightly Round": "Leicht Runde",
"Extra Round": "Zusätzliche Runde",
"Leaf": "Blatt",
"Leaf Inner": "Blatt innen",
"Leaf Outer": "Blatt außen",
"Target": "Target",
"Concave": "Eroberung",
"No Gradient": "Kein Farbverlauf",
"Linear": "Linear",
"Radial": "Radial",
"None": "Keine",
"Border Only": "Nur Rahmen",
"Text Bottom": "Text unten",
"Tooltip Bottom": "Tooltip unten",
"Arrow": "Pfeil",
"Text Top": "Text oben",
"Text Bottom In Frame": "Text unten im Rahmen",
"Script": "Skript",
"Text Top and Bottom": "Text oben und unten",
"URL": "URL",
"Instagram": "Instagram",
"Low (1)": "Niedrig (1)",
"Medium (2)": "Mittel (2)",
"Quartile (3)": "Quartile (3)",
"High (4)": "Hoch (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"New Bitlink Created": "Neuer Bitlink erstellt",
"Fires when a new Bitlink is created.": "Feuert ab, wenn ein neuer Bitlink erstellt wird.",
"Polling Interval": "Umfrageintervall",
"Title Filter (Optional)": "Titelfilter (optional)",
"Tag Filter (Optional)": "Tag-Filter (optional)",
"Include Archived Bitlinks": "Archivierte Bitlinks einschließen",
"How frequently to check for new Bitlinks.": "Wie oft wird nach neuen Bitlinks gesucht.",
"Only trigger for Bitlinks containing this text in their title.": "Trigger nur für Bitlinks, die diesen Text in ihrem Titel enthalten.",
"Only trigger for Bitlinks containing this tag.": "Nur für Bitlinks mit diesem Tag auslösen.",
"Include archived Bitlinks in monitoring.": "Archivierte Bitlinks in die Überwachung einbeziehen.",
"Every 1 minute": "Alle 1 Minute",
"Every 5 minutes": "Alle 5 Minuten",
"Every 15 minutes": "Alle 15 Minuten",
"Every 30 minutes": "Alle 30 Minuten",
"Every hour": "Stündlich"
}

View File

@@ -0,0 +1,154 @@
{
"URL shortening and link management platform with analytics.": "Acortamiento de URL y plataforma de gestión de enlaces con analítica.",
"Access Token": "Token de acceso",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ",
"Archive Bitlink": "Archivo Bitlink",
"Create Bitlink": "Crear Bitlink",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Detalles de Bitlink",
"Update Bitlink": "Actualizar Bitlink",
"Custom API Call": "Llamada API personalizada",
"Archive a Bitlink to stop redirects.": "Archivar un Bitlink para detener redirecciones.",
"Shorten a long URL with optional customization.": "Acorta una URL larga con personalización opcional.",
"Generate a customized QR code for a Bitlink.": "Generar un código QR personalizado para un Bitlink.",
"Retrieve metadata for a Bitlink.": "Recuperar metadatos para un Bitlink.",
"Modify properties of an existing Bitlink.": "Modificar propiedades de un Bitlink existente.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Group": "Grupo",
"Bitlink": "Enlace",
"Long URL": "URL larga",
"Domain": "Dominio",
"Title": "Título",
"Tags": "Etiquetas",
"Force New Link": "Forzar nuevo enlace",
"Mobile App ID": "Aplicación móvil ID",
"App URI Path": "Ruta de la App URI",
"App Install URL": "URL de instalación",
"Install Type": "Tipo de instalación",
"Destination Type": "Tipo de destino",
"Destination": "Destino",
"Archive on Create": "Archivo al crear",
"Style: Background Color": "Estilo: Color de fondo",
"Style: Dot Pattern Color": "Estilo: Color del patrón de puntos",
"Style: Dot Pattern Type": "Estilo: Tipo de patrón de puntos",
"Corner 1 (Top-Left): Shape": "Esquina 1 (Top-Izquierda): Forma",
"Corner 1 (Top-Left): Inner Color": "Esquina 1 (Para-Izquierda): Color interior",
"Corner 1 (Top-Left): Outer Color": "Esquina 1 (Arriba-Izquierda): Color",
"Corner 2 (Top-Right): Shape": "Esquina 2 (Arriba-Derecha): Forma",
"Corner 2 (Top-Right): Inner Color": "Esquina 2 (Arriba-Derecha): Color interior",
"Corner 2 (Top-Right): Outer Color": "Esquina 2 (Arriba-Derecha): Color",
"Corner 3 (Bottom-Right): Shape": "Esquina 3 (Bottom-Derecha): Forma",
"Corner 3 (Bottom-Right): Inner Color": "Esquina 3 (Bottom-Derecha): Color interior",
"Corner 3 (Bottom-Right): Outer Color": "Esquina 3 (Bottom-derecha): Color",
"Gradient: Style": "Gradiente: Estilo",
"Gradient: Color 1": "Gradiente: Color 1",
"Gradient: Color 2": "Gradiente: Color 2",
"Gradient: Angle (for Linear)": "Gradiente: Ángulo (para lineal)",
"Gradient: Exclude Corners": "Gradiente: Excluir Esquinas",
"Frame: Type": "Fotograma: Tipo",
"Frame: Primary Color": "Fotograma: Color primario",
"Frame: Secondary Color": "Fotograma: Color secundario",
"Frame: Background Color": "Fotograma: Color de fondo",
"Frame: Text": "Fotograma: Texto",
"Branding: Logo Image GUID": "Marca: Logo imagen GUID",
"Branding: Show Bitly Logo": "Marca: Mostrar Logo Bitly",
"Specs: Error Correction": "Especificaciones: Corrección de errores",
"Archived": "Archivado",
"Mobile OS": "SO móvil",
"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 group where the item will be managed.": "El grupo donde se gestionará el artículo.",
"Select the Bitlink to modify.": "Seleccione el Bitlink para modificar.",
"The URL to shorten (must include http:// or https://).": "La URL para acortar (debe incluir http:// o https://).",
"Domain to use for the Bitlink.": "Dominio a usar para el Bitlink.",
"Custom title for the Bitlink.": "Título personalizado para el Bitlink.",
"Tags to apply to the Bitlink.": "Etiquetas para aplicar al Bitlink.",
"Create new link even if one exists for this URL.": "Crear un nuevo enlace incluso si existe para esta URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Identificador de aplicación móvil (por ejemplo, com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Ruta dentro de la aplicación móvil (por ejemplo, /product/123).",
"URL where users can install the mobile app.": "URL donde los usuarios pueden instalar la aplicación móvil.",
"How to handle app installation.": "Cómo manejar la instalación de la aplicación.",
"Internal title for the QR Code.": "Título interno para el código QR.",
"Archive the QR code upon creation.": "Archivar el código QR al crearlo.",
"Hex code (e.g., #FFFFFF)": "Código hexadecimal (por ej., #FFFFFF)",
"Hex code (e.g., #000000)": "Código hexadecimal (por ej., #000000)",
"First gradient color (hex code)": "Primer color gradiente (código hexadecimal)",
"Second gradient color (hex code)": "Segundo color gradiente (código hexadecimal)",
"Primary text for frames that support it.": "Texto primario para fotogramas que lo soportan.",
"A GUID for a logo image previously uploaded to Bitly.": "Un GUID para una imagen del logo subido previamente a Bitly.",
"Show the Bitly logo in the bottom right corner.": "Mostrar el logo Bitly en la esquina inferior derecha.",
"New title for the Bitlink.": "Nuevo título para el Bitlink.",
"Archive or unarchive the Bitlink.": "Archivar o desarchivar el Bitlink.",
"Tags to apply (overwrites existing tags).": "Etiquetas a aplicar (sobrescribe las etiquetas existentes).",
"Target mobile operating system.": "Sistema operativo móvil destino.",
"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.",
"No Install": "No instalar",
"Auto Install": "Instalación automática",
"Promote Install": "Promover Instalación",
"Existing Bitlink": "Bitlink existente",
"Standard": "Estándar",
"Circle": "Círculo",
"Block": "Bloque",
"Blob": "Blob",
"Rounded": "Redondeado",
"Vertical": "Vertical",
"Horizontal": "Horizontal",
"Triangle": "Triángulo",
"Heart": "Corazón",
"Star": "Estrella",
"Diamond": "Diamante",
"Slightly Round": "Redondo ligeramente",
"Extra Round": "Ronda Extra",
"Leaf": "Hoja",
"Leaf Inner": "Hoja interior",
"Leaf Outer": "Hoja",
"Target": "Target",
"Concave": "Cóncava",
"No Gradient": "Sin Caliente",
"Linear": "Lineal",
"Radial": "Radial",
"None": "Ninguna",
"Border Only": "Solo borde",
"Text Bottom": "Texto inferior",
"Tooltip Bottom": "Botón de punta",
"Arrow": "Flecha",
"Text Top": "Texto superior",
"Text Bottom In Frame": "Texto inferior en el fotograma",
"Script": "Escribir",
"Text Top and Bottom": "Texto superior y superior",
"URL": "URL",
"Instagram": "Instagrama",
"Low (1)": "Baja (1)",
"Medium (2)": "Medio (2)",
"Quartile (3)": "Cuartil (3)",
"High (4)": "Alta (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"New Bitlink Created": "Nuevo Bitlink creado",
"Fires when a new Bitlink is created.": "Dispara cuando se crea un nuevo Bitlink.",
"Polling Interval": "Intervalo de encuesta",
"Title Filter (Optional)": "Filtro de título (opcional)",
"Tag Filter (Optional)": "Filtro de etiquetas (opcional)",
"Include Archived Bitlinks": "Incluye enlaces de bits archivados",
"How frequently to check for new Bitlinks.": "Con qué frecuencia comprobar nuevos Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Disparador sólo para enlaces Bitlinks que contengan este texto en su título.",
"Only trigger for Bitlinks containing this tag.": "Sólo para enlaces Bitlinks que contengan esta etiqueta.",
"Include archived Bitlinks in monitoring.": "Incluye enlaces Bitlinks archivados en la supervisión.",
"Every 1 minute": "Cada 1 minuto",
"Every 5 minutes": "Cada 5 minutos",
"Every 15 minutes": "Cada 15 minutos",
"Every 30 minutes": "Cada 30 minutos",
"Every hour": "Cada hora"
}

View File

@@ -0,0 +1,154 @@
{
"URL shortening and link management platform with analytics.": "Plateforme de raccourcissement des URL et de gestion des liens avec des analyses.",
"Access Token": "Jeton d'accès",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ",
"Archive Bitlink": "Archiver Bitlink",
"Create Bitlink": "Créer un Bitlink",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Obtenir les détails Bitlink",
"Update Bitlink": "Mettre à jour Bitlink",
"Custom API Call": "Appel API personnalisé",
"Archive a Bitlink to stop redirects.": "Archiver un Bitlink pour arrêter les redirections.",
"Shorten a long URL with optional customization.": "Raccourcir une URL longue avec une personnalisation optionnelle.",
"Generate a customized QR code for a Bitlink.": "Générer un code QR personnalisé pour un Bitlink.",
"Retrieve metadata for a Bitlink.": "Récupérer les métadonnées pour un Bitlink.",
"Modify properties of an existing Bitlink.": "Modifier les propriétés d'un Bitlink existant.",
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
"Group": "Groupes",
"Bitlink": "Bitlink",
"Long URL": "URL longue",
"Domain": "Domaine",
"Title": "Titre de la page",
"Tags": "Tags",
"Force New Link": "Forcer le nouveau lien",
"Mobile App ID": "ID de l'application mobile",
"App URI Path": "Chemin de l'URI de l'application",
"App Install URL": "URL d'installation de l'application",
"Install Type": "Type d'installation",
"Destination Type": "Type de destination",
"Destination": "Destination",
"Archive on Create": "Archiver lors de la création",
"Style: Background Color": "Style : Couleur d'arrière-plan",
"Style: Dot Pattern Color": "Style : Couleur du motif de point",
"Style: Dot Pattern Type": "Style: Type de motif point",
"Corner 1 (Top-Left): Shape": "Coin 1 (vers la gauche): Forme",
"Corner 1 (Top-Left): Inner Color": "Coin 1 (Top-Gauche) : Couleur intérieure",
"Corner 1 (Top-Left): Outer Color": "Coin 1 (Top-Gauche) : Couleur extérieure",
"Corner 2 (Top-Right): Shape": "Coin 2 (Top-Droite): Forme",
"Corner 2 (Top-Right): Inner Color": "Coin 2 (Top-Droite) : Couleur intérieure",
"Corner 2 (Top-Right): Outer Color": "Coin 2 (Top-Droite) : Couleur extérieure",
"Corner 3 (Bottom-Right): Shape": "Coin 3 (Bas-Droite): Forme",
"Corner 3 (Bottom-Right): Inner Color": "Coin 3 (Bas-Droite) : Couleur intérieure",
"Corner 3 (Bottom-Right): Outer Color": "Coin 3 (Bas-Droite) : Couleur extérieure",
"Gradient: Style": "Dégradé : Style",
"Gradient: Color 1": "Dégradé : Couleur 1",
"Gradient: Color 2": "Dégradé : Couleur 2",
"Gradient: Angle (for Linear)": "Dégradé : Angle (pour Linéaire)",
"Gradient: Exclude Corners": "Dégradé : Exclure les coins",
"Frame: Type": "Cadre : Type",
"Frame: Primary Color": "Cadre : Couleur Principale",
"Frame: Secondary Color": "Cadre : Couleur Secondaire",
"Frame: Background Color": "Cadre : Couleur d'arrière-plan",
"Frame: Text": "Cadre : Texte",
"Branding: Logo Image GUID": "Marque : GUID de l'image du logo",
"Branding: Show Bitly Logo": "Marque : Afficher le logo Bitly",
"Specs: Error Correction": "Caractéristiques : Correction d'erreurs",
"Archived": "Archivé",
"Mobile OS": "Système d'exploitation mobile",
"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'attente (en secondes)",
"The group where the item will be managed.": "Le groupe où l'élément sera géré.",
"Select the Bitlink to modify.": "Sélectionnez le Bitlink à modifier.",
"The URL to shorten (must include http:// or https://).": "L'URL à raccourcir (doit inclure http:// ou https://).",
"Domain to use for the Bitlink.": "Domaine à utiliser pour le Bitlink.",
"Custom title for the Bitlink.": "Titre personnalisé pour le Bitlink.",
"Tags to apply to the Bitlink.": "Tags à appliquer au Bitlink.",
"Create new link even if one exists for this URL.": "Créer un nouveau lien même s'il en existe pour cette URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Identifiant de l'application mobile (par exemple, com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Chemin d'accès dans l'application mobile (par exemple, /product/123).",
"URL where users can install the mobile app.": "URL où les utilisateurs peuvent installer l'application mobile.",
"How to handle app installation.": "Comment gérer l'installation de l'application.",
"Internal title for the QR Code.": "Titre interne pour le code QR.",
"Archive the QR code upon creation.": "Archiver le code QR lors de la création.",
"Hex code (e.g., #FFFFFF)": "Code hexadécimal (par exemple, #FFFFFF)",
"Hex code (e.g., #000000)": "Code hexadécimal (par exemple, #000000)",
"First gradient color (hex code)": "Première couleur du dégradé (code hexadécimal)",
"Second gradient color (hex code)": "Couleur du deuxième dégradé (code hexadécimal)",
"Primary text for frames that support it.": "Texte primaire pour les cadres qui le supportent.",
"A GUID for a logo image previously uploaded to Bitly.": "Un GUID pour une image de logo précédemment téléchargée sur Bitly.",
"Show the Bitly logo in the bottom right corner.": "Afficher le logo Bitly dans le coin inférieur droit.",
"New title for the Bitlink.": "Nouveau titre pour le Bitlink.",
"Archive or unarchive the Bitlink.": "Archiver ou désarchiver le lien Bitlink.",
"Tags to apply (overwrites existing tags).": "Tags à appliquer (remplace les tags existants).",
"Target mobile operating system.": "Système d'exploitation mobile cible.",
"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.",
"No Install": "Aucune installation",
"Auto Install": "Installation automatique",
"Promote Install": "Promouvoir l'installation",
"Existing Bitlink": "Bitlink existant",
"Standard": "Standard",
"Circle": "Cercle",
"Block": "Bloquer",
"Blob": "Blob",
"Rounded": "Arrondi",
"Vertical": "Vertical",
"Horizontal": "Horizontal",
"Triangle": "Triangle",
"Heart": "Coeur",
"Star": "Étoiles",
"Diamond": "Diamant",
"Slightly Round": "Rond Léger",
"Extra Round": "Tour supplémentaire",
"Leaf": "Feuille",
"Leaf Inner": "Feuille intérieure",
"Leaf Outer": "Feuille extérieure",
"Target": "Target",
"Concave": "Congrotte",
"No Gradient": "Pas de dégradé",
"Linear": "Linéaire",
"Radial": "Radial",
"None": "Aucun",
"Border Only": "Bordure seulement",
"Text Bottom": "Texte en bas",
"Tooltip Bottom": "Infobulle infobulle",
"Arrow": "Flèche",
"Text Top": "Haut du texte",
"Text Bottom In Frame": "Texte en bas du cadre",
"Script": "Écriture",
"Text Top and Bottom": "Texte en haut et en bas",
"URL": "URL",
"Instagram": "Instagram",
"Low (1)": "Faible (1)",
"Medium (2)": "Moyenne (2)",
"Quartile (3)": "Quartile (3)",
"High (4)": "Haut (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "OBTENIR",
"POST": "POSTER",
"PATCH": "PATCH",
"PUT": "EFFACER",
"DELETE": "SUPPRIMER",
"HEAD": "TÊTE",
"New Bitlink Created": "Nouveau Bitlink créé",
"Fires when a new Bitlink is created.": "Tire quand un nouveau Bitlink est créé.",
"Polling Interval": "Intervalle de vote",
"Title Filter (Optional)": "Filtre de titre (facultatif)",
"Tag Filter (Optional)": "Filtre d'étiquette (facultatif)",
"Include Archived Bitlinks": "Inclure les Bitlinks archivés",
"How frequently to check for new Bitlinks.": "Fréquence de vérification des nouveaux Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Ne déclenche que pour les Bitlinks contenant ce texte dans leur titre.",
"Only trigger for Bitlinks containing this tag.": "Ne déclenche que pour les Bitlinks contenant ce tag.",
"Include archived Bitlinks in monitoring.": "Inclure les Bitlinks archivés dans la surveillance.",
"Every 1 minute": "Toutes les 1 minute",
"Every 5 minutes": "Toutes les 5 minutes",
"Every 15 minutes": "Toutes les 15 minutes",
"Every 30 minutes": "Toutes les 30 minutes",
"Every hour": "Toutes les heures"
}

View File

@@ -0,0 +1,154 @@
{
"URL shortening and link management platform with analytics.": "分析とURL短縮とリンク管理プラットフォーム。",
"Access Token": "アクセストークン",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ",
"Archive Bitlink": "Bitlinkをアーカイブ",
"Create Bitlink": "ビットリンクを作成",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "ビットリンクの詳細を取得する",
"Update Bitlink": "ビットリンクを更新",
"Custom API Call": "カスタムAPI通話",
"Archive a Bitlink to stop redirects.": "リダイレクトを停止するビットリンクをアーカイブします。",
"Shorten a long URL with optional customization.": "長いURLを短縮し、オプションでカスタマイズできます。",
"Generate a customized QR code for a Bitlink.": "Bitlink用にカスタマイズされたQRコードを生成します。",
"Retrieve metadata for a Bitlink.": "ビットリンクのメタデータを取得します。",
"Modify properties of an existing Bitlink.": "既存のビットリンクのプロパティを変更します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Group": "グループ",
"Bitlink": "ビットリンク",
"Long URL": "長いURL",
"Domain": "ドメイン",
"Title": "タイトル",
"Tags": "タグ",
"Force New Link": "新しいリンクを強制する",
"Mobile App ID": "モバイルアプリID",
"App URI Path": "アプリの URI パス",
"App Install URL": "アプリのインストールURL",
"Install Type": "インストールタイプ",
"Destination Type": "宛先タイプ",
"Destination": "保存先",
"Archive on Create": "作成時にアーカイブ",
"Style: Background Color": "スタイル: 背景色",
"Style: Dot Pattern Color": "スタイル: ドットパターンの色",
"Style: Dot Pattern Type": "スタイル: ドットパターンタイプ",
"Corner 1 (Top-Left): Shape": "コーナー1左上形状",
"Corner 1 (Top-Left): Inner Color": "コーナー1左上内側の色",
"Corner 1 (Top-Left): Outer Color": "コーナー1(トップ左):外側の色",
"Corner 2 (Top-Right): Shape": "コーナー2右上形状",
"Corner 2 (Top-Right): Inner Color": "コーナー2右上内側の色",
"Corner 2 (Top-Right): Outer Color": "コーナー2右上外側の色",
"Corner 3 (Bottom-Right): Shape": "コーナー3右下形状",
"Corner 3 (Bottom-Right): Inner Color": "コーナー3右下内側の色",
"Corner 3 (Bottom-Right): Outer Color": "コーナー3(右下):外側の色",
"Gradient: Style": "グラデーション: スタイル",
"Gradient: Color 1": "グラデーション: 色1",
"Gradient: Color 2": "グラデーション: 色2",
"Gradient: Angle (for Linear)": "グラデーション: 角度 (線形用)",
"Gradient: Exclude Corners": "グラデーション: コーナーを除外",
"Frame: Type": "フレーム: タイプ",
"Frame: Primary Color": "フレーム: プライマリ色",
"Frame: Secondary Color": "フレーム: セカンダリカラー",
"Frame: Background Color": "フレーム: 背景色",
"Frame: Text": "フレーム: テキスト",
"Branding: Logo Image GUID": "ブランディング: ロゴ画像GUID",
"Branding: Show Bitly Logo": "ブランディング: ビットのロゴを表示",
"Specs: Error Correction": "仕様: エラー補正",
"Archived": "アーカイブ済み",
"Mobile OS": "モバイル OS",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The group where the item will be managed.": "アイテムが管理されるグループ。",
"Select the Bitlink to modify.": "変更するビットリンクを選択します。",
"The URL to shorten (must include http:// or https://).": "短縮するURLhttp://またはhttps://を含む必要があります)。",
"Domain to use for the Bitlink.": "Bitlinkに使用するドメイン",
"Custom title for the Bitlink.": "Bitlinkのカスタムタイトル。",
"Tags to apply to the Bitlink.": "Bitlinkに適用するタグ。",
"Create new link even if one exists for this URL.": "このURLに存在する場合でも、新しいリンクを作成します。",
"Mobile app identifier (e.g., com.yourapp.name).": "モバイルアプリ識別子 (例、com.yourapp.name)。",
"Path within the mobile app (e.g., /product/123).": "モバイルアプリ内のパス (例: /product/123)。",
"URL where users can install the mobile app.": "ユーザーがモバイルアプリをインストールできるURL。",
"How to handle app installation.": "アプリのインストール処理方法。",
"Internal title for the QR Code.": "QRコードの内部タイトル",
"Archive the QR code upon creation.": "作成時にQRコードをアーカイブします。",
"Hex code (e.g., #FFFFFF)": "16進コード (例: #FFFFFF)",
"Hex code (e.g., #000000)": "16進コード (例: #000000)",
"First gradient color (hex code)": "最初のグラデーション色 (16進コード)",
"Second gradient color (hex code)": "2番目のグラデーションの色 (16進コード)",
"Primary text for frames that support it.": "それをサポートするフレームの主要テキスト。",
"A GUID for a logo image previously uploaded to Bitly.": "Bitlyにアップロードされたロゴ画像のGUID。",
"Show the Bitly logo in the bottom right corner.": "Bitlyのロゴを右下に表示します。",
"New title for the Bitlink.": "Bitlinkの新しいタイトル。",
"Archive or unarchive the Bitlink.": "Bitlinkをアーカイブまたはアーカイブ解除します。",
"Tags to apply (overwrites existing tags).": "適用するタグ (既存のタグを上書きします)。",
"Target mobile operating system.": "対象のモバイルオペレーティングシステム。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"No Install": "インストールなし",
"Auto Install": "自動インストール",
"Promote Install": "インストールをプロモート",
"Existing Bitlink": "既存のビットリンク",
"Standard": "標準",
"Circle": "円",
"Block": "ブロック",
"Blob": "Blob",
"Rounded": "四捨五入済み",
"Vertical": "垂直方向",
"Horizontal": "水平方向",
"Triangle": "Triangle",
"Heart": "ハート",
"Star": "スター",
"Diamond": "ダイヤモンド",
"Slightly Round": "僅かにラウンド",
"Extra Round": "追加ラウンド",
"Leaf": "葉",
"Leaf Inner": "リーフインナー",
"Leaf Outer": "葉の外枠",
"Target": "Target",
"Concave": "Concava",
"No Gradient": "グラデーションなし",
"Linear": "Linear",
"Radial": "Radial",
"None": "なし",
"Border Only": "枠線のみ",
"Text Bottom": "下部にテキスト",
"Tooltip Bottom": "下部ツールチップ",
"Arrow": "矢印",
"Text Top": "上部にテキスト",
"Text Bottom In Frame": "テキストボトムイン フレーム",
"Script": "スクリプト",
"Text Top and Bottom": "テキストの上と下",
"URL": "URL",
"Instagram": "Instagram",
"Low (1)": "低い (1)",
"Medium (2)": "Medium (2)",
"Quartile (3)": "四分位 (3)",
"High (4)": "高い (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"New Bitlink Created": "新しいビットリンクが作成されました",
"Fires when a new Bitlink is created.": "新しいBitlinkが作成されたときに発生します。",
"Polling Interval": "ポーリング間隔",
"Title Filter (Optional)": "タイトルフィルター(オプション)",
"Tag Filter (Optional)": "タグフィルター(オプション)",
"Include Archived Bitlinks": "アーカイブされたビットリンクを含める",
"How frequently to check for new Bitlinks.": "新しいBitlinksをチェックする頻度。",
"Only trigger for Bitlinks containing this text in their title.": "タイトルにこのテキストを含むBitlinksのみトリガーします。",
"Only trigger for Bitlinks containing this tag.": "このタグを含むBitlinksのトリガーのみです。",
"Include archived Bitlinks in monitoring.": "監視にアーカイブされたBitlinksを含めます。",
"Every 1 minute": "1 分ごと",
"Every 5 minutes": "5分ごと",
"Every 15 minutes": "15 分ごと",
"Every 30 minutes": "30分ごと",
"Every hour": "1時間ごと"
}

View File

@@ -0,0 +1,154 @@
{
"URL shortening and link management platform with analytics.": "URL verkorting en link platform voor beheer met analyses.",
"Access Token": "Toegangs-token",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n Om uw Toegang Token te krijgen:\n 1. Log in op uw Bitly account.\n 2. Klik op het profielpictogram in de rechterbovenhoek.\n 3. Ga naar **Profielinstellingen**.\n 4. Navigeer naar de sectie **Ontwikkelaarsinstellingen**.\n 5. Klik op **API**.\n 6. Klik op de knop **Genereer token** en voer uw wachtwoord in om uw toegangstoken te krijgen.\n ",
"Archive Bitlink": "Archief Bitlink",
"Create Bitlink": "Bitlink aanmaken",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Krijg Bitlink details",
"Update Bitlink": "Bitlink bijwerken",
"Custom API Call": "Custom API Call",
"Archive a Bitlink to stop redirects.": "Archiveer een Bitlink om doorverwijzingen te stoppen.",
"Shorten a long URL with optional customization.": "Verkort een lange URL met optionele aanpassingen.",
"Generate a customized QR code for a Bitlink.": "Genereer een aangepaste QR-code voor een Bitlink.",
"Retrieve metadata for a Bitlink.": "Haal metadata op voor een Bitlink.",
"Modify properties of an existing Bitlink.": "Wijzig eigenschappen van een bestaande Bitlink.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Group": "Groeperen",
"Bitlink": "Bitlink",
"Long URL": "Lange URL",
"Domain": "Domein",
"Title": "Aanspreektitel",
"Tags": "Labels",
"Force New Link": "Forceer nieuwe link",
"Mobile App ID": "Mobiele App ID",
"App URI Path": "App URI pad",
"App Install URL": "App Installatie URL",
"Install Type": "Type installatie",
"Destination Type": "Type bestemming",
"Destination": "Doelstelling",
"Archive on Create": "Archiveren bij aanmaken",
"Style: Background Color": "Stijl: Achtergrondkleur",
"Style: Dot Pattern Color": "Stijl: Punt Patroon Kleur",
"Style: Dot Pattern Type": "Stijl: Punt patroon type",
"Corner 1 (Top-Left): Shape": "Hoek 1 (Boven-Links): Vorm",
"Corner 1 (Top-Left): Inner Color": "Hoek 1 (Boven-Links): Kleur binnen",
"Corner 1 (Top-Left): Outer Color": "Hoek 1 (Boven-Links): Buitenkleur",
"Corner 2 (Top-Right): Shape": "Hoek 2 (Top-Right): Vorm",
"Corner 2 (Top-Right): Inner Color": "Hoek 2 (Top-Right): Binnenkleur",
"Corner 2 (Top-Right): Outer Color": "Hoek 2 (Top-Right): Buitenkleur",
"Corner 3 (Bottom-Right): Shape": "Hoek 3 (Bottom-Right): Vorm",
"Corner 3 (Bottom-Right): Inner Color": "Hoek 3 (Bottom-Right): Binnenkleur",
"Corner 3 (Bottom-Right): Outer Color": "Hoek 3 (Bottom-Right): Buitenkleur",
"Gradient: Style": "Gradiënt: Stijl",
"Gradient: Color 1": "Gradient: Kleur 1",
"Gradient: Color 2": "Gradient: Kleur 2",
"Gradient: Angle (for Linear)": "Gradient: Hoek (voor Lineage)",
"Gradient: Exclude Corners": "Gradient: Hoeken uitsluiten",
"Frame: Type": "Frame: Type",
"Frame: Primary Color": "Frame: Primaire kleur",
"Frame: Secondary Color": "Frame: secundaire kleur",
"Frame: Background Color": "Frame: Achtergrondkleur",
"Frame: Text": "Frame: Tekst",
"Branding: Logo Image GUID": "Branding: Logo Image GUID",
"Branding: Show Bitly Logo": "Branding: Toon Bitly Logo",
"Specs: Error Correction": "Specs: Foutcorrectie",
"Archived": "Gearchiveerd",
"Mobile OS": "Mobiele OS",
"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 group where the item will be managed.": "De groep waar het item wordt beheerd.",
"Select the Bitlink to modify.": "Selecteer de Bitlink om aan te passen.",
"The URL to shorten (must include http:// or https://).": "De URL om te verkorten (moet http:// of https://) bevatten.",
"Domain to use for the Bitlink.": "Domein om te gebruiken voor de Bitlink.",
"Custom title for the Bitlink.": "Aangepaste titel voor de Bitlink.",
"Tags to apply to the Bitlink.": "Tags om toe te passen op de Bitlink.",
"Create new link even if one exists for this URL.": "Maak een nieuwe link aan, zelfs als deze bestaat voor deze URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Mobiele app identifier (bijv. com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Pad in de mobiele app (bijv. /product/123).",
"URL where users can install the mobile app.": "URL waar gebruikers de mobiele app kunnen installeren.",
"How to handle app installation.": "Hoe om te gaan met de installatie van de app.",
"Internal title for the QR Code.": "Interne titel voor de QR-code.",
"Archive the QR code upon creation.": "Archiveer de QR-code bij het aanmaken.",
"Hex code (e.g., #FFFFFF)": "Hex code (bijv. #FFFFFF)",
"Hex code (e.g., #000000)": "Hex code (bijv. #000000)",
"First gradient color (hex code)": "Eerste kleurovergang kleur (hex code)",
"Second gradient color (hex code)": "Tweede verloop kleur (hex code)",
"Primary text for frames that support it.": "Primaire tekst voor frames die dit ondersteunen.",
"A GUID for a logo image previously uploaded to Bitly.": "Een GUID voor een logo afbeelding die eerder geüpload is naar Bitly.",
"Show the Bitly logo in the bottom right corner.": "Toon het Bitly logo rechtsonder.",
"New title for the Bitlink.": "Nieuwe titel voor de Bitlink.",
"Archive or unarchive the Bitlink.": "Archiveer of dearchiveer de Bitlink.",
"Tags to apply (overwrites existing tags).": "Tags om toe te passen (overschrijft bestaande tags).",
"Target mobile operating system.": "Doel mobiel besturingssysteem.",
"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..",
"No Install": "Geen installatie",
"Auto Install": "Automatische installatie",
"Promote Install": "Installeren van promoveren",
"Existing Bitlink": "Bestaande Bitlink",
"Standard": "Standaard",
"Circle": "Cirkel",
"Block": "Blokkeren",
"Blob": "Blob",
"Rounded": "Afgerond",
"Vertical": "Verticaal",
"Horizontal": "Horizontaal",
"Triangle": "Driehoek",
"Heart": "Hart",
"Star": "Ster",
"Diamond": "Diamant",
"Slightly Round": "Iets Rond",
"Extra Round": "Extra Ronde",
"Leaf": "Blad",
"Leaf Inner": "Blad binnenste",
"Leaf Outer": "Blad Buitenste",
"Target": "Target",
"Concave": "Concave",
"No Gradient": "Geen verloop",
"Linear": "Lineaire",
"Radial": "Radial",
"None": "geen",
"Border Only": "Alleen rand",
"Text Bottom": "Tekst onderaan",
"Tooltip Bottom": "Knopinfo Onderaan",
"Arrow": "Pijl",
"Text Top": "Tekst boven",
"Text Bottom In Frame": "Tekst onderaan in frame",
"Script": "Naam",
"Text Top and Bottom": "Tekst boven en onder",
"URL": "URL",
"Instagram": "Instagram",
"Low (1)": "Laag (1)",
"Medium (2)": "Middelgroot (2)",
"Quartile (3)": "Kwartiel (3)",
"High (4)": "Hoog (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"New Bitlink Created": "Nieuwe Bitlink aangemaakt",
"Fires when a new Bitlink is created.": "Vuurt wanneer een nieuwe Bitlink is aangemaakt.",
"Polling Interval": "Polling Interval",
"Title Filter (Optional)": "Titelfilter (optioneel)",
"Tag Filter (Optional)": "Labelfilter (optioneel)",
"Include Archived Bitlinks": "Gearchiveerde Bitlinks opnemen",
"How frequently to check for new Bitlinks.": "Hoe vaak te controleren op nieuwe Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Alleen trigger voor Bitlinks die deze tekst bevatten in hun titel.",
"Only trigger for Bitlinks containing this tag.": "Alleen trigger voor Bitlinks die deze tag bevatten.",
"Include archived Bitlinks in monitoring.": "Inclusief gearchiveerde Bitlinks in de monitoring.",
"Every 1 minute": "Elke minuut",
"Every 5 minutes": "Elke 5 minuten",
"Every 15 minutes": "Elke 15 minuten",
"Every 30 minutes": "Elke 30 minuten",
"Every hour": "Elk uur"
}

View File

@@ -0,0 +1,154 @@
{
"URL shortening and link management platform with analytics.": "Encurtamento de URL e plataforma de gerenciamento de links com análises.",
"Access Token": "Token de acesso",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\nPara obter seu Token siga estes passos:\n1. Faça login na sua conta Bitly.\n2. Clique no ícone do seu perfil (no lado superior direito).\n3. Vá para **Configurações do Perfil**.\n4. Navegue até a sessão \"Configurações do desenvolvedor\".\n5. Clique em **API**.\n6. Clique no botão **Gerar Token** e informe sua senha para obter seu Token.\n ",
"Archive Bitlink": "Arquivar Bitlink",
"Create Bitlink": "Criar Bitlink",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Obtenha Detalhes do Bitlink",
"Update Bitlink": "Atualizar Bitlink",
"Custom API Call": "Chamada de API personalizada",
"Archive a Bitlink to stop redirects.": "Arquive um Bitlink para parar os redirecionamentos.",
"Shorten a long URL with optional customization.": "Encurtar uma URL longa com personalização opcional.",
"Generate a customized QR code for a Bitlink.": "Gerar um código QR personalizado para um Bitlink.",
"Retrieve metadata for a Bitlink.": "Recuperar metadados para um Bitlink.",
"Modify properties of an existing Bitlink.": "Modificar as propriedades de um Bitlink existente.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Group": "grupo",
"Bitlink": "Bitlink",
"Long URL": "URL longa",
"Domain": "Domínio",
"Title": "Título",
"Tags": "Etiquetas",
"Force New Link": "Forçar novo link",
"Mobile App ID": "ID do aplicativo móvel",
"App URI Path": "Caminho do URI App",
"App Install URL": "URL de Instalação App",
"Install Type": "Tipo de Instalação",
"Destination Type": "Tipo de destino",
"Destination": "Destino",
"Archive on Create": "Arquivo em Criar",
"Style: Background Color": "Estilo: Cor de fundo",
"Style: Dot Pattern Color": "Estilo: Cor do Padrão Ponto",
"Style: Dot Pattern Type": "Estilo: Tipo de Padrão Ponto",
"Corner 1 (Top-Left): Shape": "Canto 1 (Topo-Esquerda): Forma",
"Corner 1 (Top-Left): Inner Color": "Canto 1 (Topo-Esquerda): Cor interna",
"Corner 1 (Top-Left): Outer Color": "Canto 1 (Topo-Esquerda): Cor externa",
"Corner 2 (Top-Right): Shape": "Canto 2 (Topo-Direito): Forma",
"Corner 2 (Top-Right): Inner Color": "Canto 2 (Topo-Direito): Cor interna",
"Corner 2 (Top-Right): Outer Color": "Canto 2 (Topo-Direito): Cor externa",
"Corner 3 (Bottom-Right): Shape": "Canto 3 (parte inferior direita): Forma",
"Corner 3 (Bottom-Right): Inner Color": "Canto 3 (parte inferior direita): Cor interna",
"Corner 3 (Bottom-Right): Outer Color": "Canto 3 (parte inferior direita): Cor externa",
"Gradient: Style": "Gradiente: Estilo",
"Gradient: Color 1": "Gradiente: Cor 1",
"Gradient: Color 2": "Gradiente: Cor 2",
"Gradient: Angle (for Linear)": "Gradiente: Ângulo (para linha)",
"Gradient: Exclude Corners": "Gradiente: Excluir cantos",
"Frame: Type": "Frame: Tipo",
"Frame: Primary Color": "Frame: Cor Primária",
"Frame: Secondary Color": "Frame: Cor Secundária",
"Frame: Background Color": "Frame: Cor de fundo",
"Frame: Text": "Frame: Texto",
"Branding: Logo Image GUID": "Branding: GUID da Imagem do logotipo",
"Branding: Show Bitly Logo": "Branding: Mostrar logotipo Bitly",
"Specs: Error Correction": "Especificações: Correção de erro",
"Archived": "Arquivado",
"Mobile OS": "Sistema Móvel",
"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 group where the item will be managed.": "O grupo onde o item será gerenciado.",
"Select the Bitlink to modify.": "Selecione o Bitlink para modificar.",
"The URL to shorten (must include http:// or https://).": "A URL para encurtar (deve incluir http:// ou https://).",
"Domain to use for the Bitlink.": "Domínio a ser usado para o Bitlink.",
"Custom title for the Bitlink.": "Título personalizado para o Bitlink.",
"Tags to apply to the Bitlink.": "Tags a serem aplicadas ao Bitlink.",
"Create new link even if one exists for this URL.": "Criar novo link mesmo que exista um para esta URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Identificador do aplicativo móvel (por exemplo, com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Caminho dentro do aplicativo móvel (por exemplo, /product/123).",
"URL where users can install the mobile app.": "URL onde os usuários podem instalar o aplicativo móvel.",
"How to handle app installation.": "Como lidar com a instalação de app.",
"Internal title for the QR Code.": "Título interno para o Código QR.",
"Archive the QR code upon creation.": "Arquivar o código QR aquando da criação.",
"Hex code (e.g., #FFFFFF)": "Código hexadecimal (ex: #FFFFFF)",
"Hex code (e.g., #000000)": "Código hexadecimal (ex: #000000)",
"First gradient color (hex code)": "Primeira cor gradiente (código hexadecimal)",
"Second gradient color (hex code)": "Segunda cor gradiente (código hexadecimal)",
"Primary text for frames that support it.": "Texto primário para quadros que suportam isso.",
"A GUID for a logo image previously uploaded to Bitly.": "Um GUID para uma imagem do logotipo enviada anteriormente para Bitly.",
"Show the Bitly logo in the bottom right corner.": "Mostrar o logotipo do Bitly no canto inferior direito.",
"New title for the Bitlink.": "Novo título para o Bitlink.",
"Archive or unarchive the Bitlink.": "Arquivar ou desarquivar o Bitlink.",
"Tags to apply (overwrites existing tags).": "Tags a aplicar (sobrescreve as tags existentes).",
"Target mobile operating system.": "Sistema operacional de destino",
"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..",
"No Install": "Nenhuma Instalação",
"Auto Install": "Instalar automaticamente",
"Promote Install": "Promover instalação",
"Existing Bitlink": "Bitlink existente",
"Standard": "Padrão",
"Circle": "Círculo",
"Block": "Bloquear",
"Blob": "Blob",
"Rounded": "Arredondado",
"Vertical": "Vertical",
"Horizontal": "Horizontal",
"Triangle": "Triângulo",
"Heart": "Coração",
"Star": "Estrela",
"Diamond": "Diamante",
"Slightly Round": "Rodada ligeiramente",
"Extra Round": "Rodada Extra",
"Leaf": "Folha",
"Leaf Inner": "Barra de Folhas",
"Leaf Outer": "Saia de Folha",
"Target": "Target",
"Concave": "Caverna",
"No Gradient": "Nenhum gradiente",
"Linear": "Linear",
"Radial": "Radial",
"None": "Nenhuma",
"Border Only": "Apenas Borda",
"Text Bottom": "Texto Inferior",
"Tooltip Bottom": "Dica Inferior",
"Arrow": "Flecha",
"Text Top": "Texto superior",
"Text Bottom In Frame": "Texto Inferior no Frame",
"Script": "Roteiro",
"Text Top and Bottom": "Texto superior e inferior",
"URL": "URL:",
"Instagram": "Instagram",
"Low (1)": "Baixo(1)",
"Medium (2)": "Médio (2)",
"Quartile (3)": "Quartilo (3)",
"High (4)": "Alto (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"New Bitlink Created": "Novo Bitlink criado",
"Fires when a new Bitlink is created.": "Atira quando um novo Bitlink é criado.",
"Polling Interval": "Intervalo de votação",
"Title Filter (Optional)": "Filtro de título (opcional)",
"Tag Filter (Optional)": "Filtro de Tag (opcional)",
"Include Archived Bitlinks": "Incluir Bitlinks Arquivados",
"How frequently to check for new Bitlinks.": "Quão frequente procurar por novos Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Disparar apenas para Bitlinks contendo este texto em seu título.",
"Only trigger for Bitlinks containing this tag.": "Ativar apenas para Bitlinks contendo esta tag.",
"Include archived Bitlinks in monitoring.": "Incluir Bitlinks arquivados no monitoramento.",
"Every 1 minute": "A cada 1 minuto",
"Every 5 minutes": "A cada 5 minutos",
"Every 15 minutes": "A cada 15 minutos",
"Every 30 minutes": "A cada 30 minutos",
"Every hour": "Toda hora"
}

View File

@@ -0,0 +1,153 @@
{
"Bitly": "Битли",
"URL shortening and link management platform with analytics.": "Сокращение URL и система управления связями с аналитикой.",
"Access Token": "Маркер доступа",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n Чтобы получить ваш маркер доступа:\n 1. Войдите в свой Bitly аккаунт.\n 2. Нажмите на значок профиля в правом верхнем углу.\n 3. Перейдите в **Настройки профиля**.\n 4. Перейдите в раздел **Настройки разработчика**.\n 5. Нажмите на **API**.\n 6. Нажмите кнопку **Создать токен** и введите пароль, чтобы получить ваш токен доступа.\n ",
"Archive Bitlink": "Архивировать Bitlink",
"Create Bitlink": "Создать Bitlink",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Получить подробности Bitlink",
"Update Bitlink": "Обновить Bitlink",
"Custom API Call": "Пользовательский вызов API",
"Archive a Bitlink to stop redirects.": "Архивировать Bitlink для остановки перенаправлений.",
"Shorten a long URL with optional customization.": "Сократить длинный URL с необязательной настройкой.",
"Generate a customized QR code for a Bitlink.": "Сгенерировать настраиваемый QR-код для Bitlink.",
"Retrieve metadata for a Bitlink.": "Получить метаданные для Bitlink.",
"Modify properties of an existing Bitlink.": "Изменить свойства существующего Bitlink.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Group": "Группа",
"Bitlink": "Bitlink",
"Long URL": "Длинный URL",
"Domain": "Домен",
"Title": "Заголовок",
"Tags": "Теги",
"Force New Link": "Принудительная новая ссылка",
"Mobile App ID": "ID мобильного приложения",
"App URI Path": "Путь URI приложения",
"App Install URL": "URL установки приложения",
"Install Type": "Тип установки",
"Destination Type": "Тип назначения",
"Destination": "Назначение",
"Archive on Create": "Архивировать на Создать",
"Style: Background Color": "Стиль: цвет фона",
"Style: Dot Pattern Color": "Стиль: Цвет точки",
"Style: Dot Pattern Type": "Стиль: Тип объекта",
"Corner 1 (Top-Left): Shape": "Угол 1 (верхний уголок): Форма",
"Corner 1 (Top-Left): Inner Color": "Угол 1 (верхний уголок): Внутренний цвет",
"Corner 1 (Top-Left): Outer Color": "Угол 1 (верхний уголок): Внешний цвет",
"Corner 2 (Top-Right): Shape": "Угол 2 (справа): Форма",
"Corner 2 (Top-Right): Inner Color": "Угол 2 (справа): Внутренний цвет",
"Corner 2 (Top-Right): Outer Color": "Угол 2 (справа): Внешний цвет",
"Corner 3 (Bottom-Right): Shape": "Угол 3 (справа снизу): Форма",
"Corner 3 (Bottom-Right): Inner Color": "Угол 3 (снизу справа): Внутренний цвет",
"Corner 3 (Bottom-Right): Outer Color": "Угол 3 (снизу справа): Внешний цвет",
"Gradient: Style": "Градиент: Стиль",
"Gradient: Color 1": "Градиент: Цвет 1",
"Gradient: Color 2": "Градиент: Цвет 2",
"Gradient: Angle (for Linear)": "Градиент: Угол (для линейных)",
"Gradient: Exclude Corners": "Градиент: Исключить углы",
"Frame: Type": "Фрейм: Тип",
"Frame: Primary Color": "Фрейм: Основной цвет",
"Frame: Secondary Color": "Фрейм: Вторичный цвет",
"Frame: Background Color": "Фрейм: цвет фона",
"Frame: Text": "Фрейм: Текст",
"Branding: Logo Image GUID": "Брендинг: GUID изображения логотипа",
"Branding: Show Bitly Logo": "Брендинг: Показать логотип Bitly",
"Specs: Error Correction": "Наблюдения: Коррекция ошибки",
"Archived": "Архивировано",
"Mobile OS": "Мобильная ОС",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The group where the item will be managed.": "Группа, в которой будет управляться данный элемент.",
"Select the Bitlink to modify.": "Выберите Bitlink для изменения.",
"The URL to shorten (must include http:// or https://).": "URL для сокращения (должен включать http:// или https://).",
"Domain to use for the Bitlink.": "Домен для BitLink.",
"Custom title for the Bitlink.": "Пользовательское название для Bitlink.",
"Tags to apply to the Bitlink.": "Теги, применимые к Bitlink.",
"Create new link even if one exists for this URL.": "Создать новую ссылку, даже если она существует для этого URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Идентификатор мобильного приложения (например, com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Путь в мобильном приложении (например, /product/123).",
"URL where users can install the mobile app.": "URL-адрес, в котором пользователи могут установить мобильное приложение.",
"How to handle app installation.": "Как работать с установкой приложения.",
"Internal title for the QR Code.": "Внутреннее название для QR-кода.",
"Archive the QR code upon creation.": "Архивировать QR-код при создании.",
"Hex code (e.g., #FFFFFF)": "Шестнадцатеричный код (например, #FFFF)",
"Hex code (e.g., #000000)": "Шестнадцатеричный код (например, #000000)",
"First gradient color (hex code)": "Цвет первого градиента (шестнадцатеричный код)",
"Second gradient color (hex code)": "Второй градиент (шестнадцатеричный код)",
"Primary text for frames that support it.": "Основной текст для фреймов, которые его поддерживают.",
"A GUID for a logo image previously uploaded to Bitly.": "GUID для логотипа, ранее загруженного в Bitly.",
"Show the Bitly logo in the bottom right corner.": "Показать логотип Bitly в правом нижнем углу.",
"New title for the Bitlink.": "Новое название для Bitlink.",
"Archive or unarchive the Bitlink.": "Архивировать или разархивировать Bitlink.",
"Tags to apply (overwrites existing tags).": "Теги для применения (перезаписывает существующие теги).",
"Target mobile operating system.": "Целевая мобильная операционная система.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"No Install": "Нет установки",
"Auto Install": "Автоустановка",
"Promote Install": "Продлить установку",
"Existing Bitlink": "Существующая Bitlink",
"Standard": "Стандартный",
"Circle": "Круг",
"Block": "Блок",
"Blob": "Блок",
"Rounded": "Скругленный",
"Vertical": "Вертикальный",
"Horizontal": "Горизонтально",
"Triangle": "Треугольник",
"Heart": "Сердце",
"Star": "Звезда",
"Diamond": "Алмазный",
"Slightly Round": "Слегка круглый",
"Extra Round": "Дополнительный раунд",
"Leaf": "Листья",
"Leaf Inner": "Внутренний Лист",
"Leaf Outer": "Снаружи листа",
"Target": "Target",
"Concave": "Кончица",
"No Gradient": "Без градиента",
"Linear": "Линейный",
"Radial": "Radial",
"None": "Нет",
"Border Only": "Только граница",
"Text Bottom": "Текст снизу",
"Tooltip Bottom": "Подсказка снизу",
"Arrow": "Стрелка",
"Text Top": "Текст сверху",
"Text Bottom In Frame": "Текст внизу в кадре",
"Script": "Скрипт",
"Text Top and Bottom": "Текст сверху и снизу",
"URL": "URL",
"Instagram": "Инстаграмма",
"Low (1)": "Низкий (1)",
"Medium (2)": "Средний (2)",
"Quartile (3)": "Квартиль (3)",
"High (4)": "Высокий (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"New Bitlink Created": "Создан новый Bitlink",
"Fires when a new Bitlink is created.": "Стреляет при создании нового Bitlink",
"Polling Interval": "Интервал опроса",
"Title Filter (Optional)": "Фильтр заголовка (необязательно)",
"Tag Filter (Optional)": "Фильтр тегов (необязательно)",
"Include Archived Bitlinks": "Включить в архив Bitlinks",
"How frequently to check for new Bitlinks.": "Как часто проверять новые Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Триггер только для Bitlinks содержащих этот текст в их заголовке.",
"Only trigger for Bitlinks containing this tag.": "Триггер только для Bitlinks содержащих этот тег.",
"Include archived Bitlinks in monitoring.": "Включать в архив Bitlinks в мониторинг.",
"Every 1 minute": "Каждую минуту",
"Every 5 minutes": "Каждые 5 минут",
"Every 15 minutes": "Каждые 15 минут",
"Every 30 minutes": "Каждые 30 минут",
"Every hour": "Каждый час"
}

View File

@@ -0,0 +1,154 @@
{
"URL shortening and link management platform with analytics.": "URL shortening and link management platform with analytics.",
"Access Token": "Access Token",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ",
"Archive Bitlink": "Archive Bitlink",
"Create Bitlink": "Create Bitlink",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Get Bitlink Details",
"Update Bitlink": "Update Bitlink",
"Custom API Call": "Custom API Call",
"Archive a Bitlink to stop redirects.": "Archive a Bitlink to stop redirects.",
"Shorten a long URL with optional customization.": "Shorten a long URL with optional customization.",
"Generate a customized QR code for a Bitlink.": "Generate a customized QR code for a Bitlink.",
"Retrieve metadata for a Bitlink.": "Retrieve metadata for a Bitlink.",
"Modify properties of an existing Bitlink.": "Modify properties of an existing Bitlink.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Group": "Group",
"Bitlink": "Bitlink",
"Long URL": "Long URL",
"Domain": "Domain",
"Title": "Title",
"Tags": "Tags",
"Force New Link": "Force New Link",
"Mobile App ID": "Mobile App ID",
"App URI Path": "App URI Path",
"App Install URL": "App Install URL",
"Install Type": "Install Type",
"Destination Type": "Destination Type",
"Destination": "Destination",
"Archive on Create": "Archive on Create",
"Style: Background Color": "Style: Background Color",
"Style: Dot Pattern Color": "Style: Dot Pattern Color",
"Style: Dot Pattern Type": "Style: Dot Pattern Type",
"Corner 1 (Top-Left): Shape": "Corner 1 (Top-Left): Shape",
"Corner 1 (Top-Left): Inner Color": "Corner 1 (Top-Left): Inner Color",
"Corner 1 (Top-Left): Outer Color": "Corner 1 (Top-Left): Outer Color",
"Corner 2 (Top-Right): Shape": "Corner 2 (Top-Right): Shape",
"Corner 2 (Top-Right): Inner Color": "Corner 2 (Top-Right): Inner Color",
"Corner 2 (Top-Right): Outer Color": "Corner 2 (Top-Right): Outer Color",
"Corner 3 (Bottom-Right): Shape": "Corner 3 (Bottom-Right): Shape",
"Corner 3 (Bottom-Right): Inner Color": "Corner 3 (Bottom-Right): Inner Color",
"Corner 3 (Bottom-Right): Outer Color": "Corner 3 (Bottom-Right): Outer Color",
"Gradient: Style": "Gradient: Style",
"Gradient: Color 1": "Gradient: Color 1",
"Gradient: Color 2": "Gradient: Color 2",
"Gradient: Angle (for Linear)": "Gradient: Angle (for Linear)",
"Gradient: Exclude Corners": "Gradient: Exclude Corners",
"Frame: Type": "Frame: Type",
"Frame: Primary Color": "Frame: Primary Color",
"Frame: Secondary Color": "Frame: Secondary Color",
"Frame: Background Color": "Frame: Background Color",
"Frame: Text": "Frame: Text",
"Branding: Logo Image GUID": "Branding: Logo Image GUID",
"Branding: Show Bitly Logo": "Branding: Show Bitly Logo",
"Specs: Error Correction": "Specs: Error Correction",
"Archived": "Archived",
"Mobile OS": "Mobile OS",
"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 group where the item will be managed.": "The group where the item will be managed.",
"Select the Bitlink to modify.": "Select the Bitlink to modify.",
"The URL to shorten (must include http:// or https://).": "The URL to shorten (must include http:// or https://).",
"Domain to use for the Bitlink.": "Domain to use for the Bitlink.",
"Custom title for the Bitlink.": "Custom title for the Bitlink.",
"Tags to apply to the Bitlink.": "Tags to apply to the Bitlink.",
"Create new link even if one exists for this URL.": "Create new link even if one exists for this URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Mobile app identifier (e.g., com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Path within the mobile app (e.g., /product/123).",
"URL where users can install the mobile app.": "URL where users can install the mobile app.",
"How to handle app installation.": "How to handle app installation.",
"Internal title for the QR Code.": "Internal title for the QR Code.",
"Archive the QR code upon creation.": "Archive the QR code upon creation.",
"Hex code (e.g., #FFFFFF)": "Hex code (e.g., #FFFFFF)",
"Hex code (e.g., #000000)": "Hex code (e.g., #000000)",
"First gradient color (hex code)": "First gradient color (hex code)",
"Second gradient color (hex code)": "Second gradient color (hex code)",
"Primary text for frames that support it.": "Primary text for frames that support it.",
"A GUID for a logo image previously uploaded to Bitly.": "A GUID for a logo image previously uploaded to Bitly.",
"Show the Bitly logo in the bottom right corner.": "Show the Bitly logo in the bottom right corner.",
"New title for the Bitlink.": "New title for the Bitlink.",
"Archive or unarchive the Bitlink.": "Archive or unarchive the Bitlink.",
"Tags to apply (overwrites existing tags).": "Tags to apply (overwrites existing tags).",
"Target mobile operating system.": "Target mobile operating system.",
"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..",
"No Install": "No Install",
"Auto Install": "Auto Install",
"Promote Install": "Promote Install",
"Existing Bitlink": "Existing Bitlink",
"Standard": "Standard",
"Circle": "Circle",
"Block": "Block",
"Blob": "Blob",
"Rounded": "Rounded",
"Vertical": "Vertical",
"Horizontal": "Horizontal",
"Triangle": "Triangle",
"Heart": "Heart",
"Star": "Star",
"Diamond": "Diamond",
"Slightly Round": "Slightly Round",
"Extra Round": "Extra Round",
"Leaf": "Leaf",
"Leaf Inner": "Leaf Inner",
"Leaf Outer": "Leaf Outer",
"Target": "Target",
"Concave": "Concave",
"No Gradient": "No Gradient",
"Linear": "Linear",
"Radial": "Radial",
"None": "None",
"Border Only": "Border Only",
"Text Bottom": "Text Bottom",
"Tooltip Bottom": "Tooltip Bottom",
"Arrow": "Arrow",
"Text Top": "Text Top",
"Text Bottom In Frame": "Text Bottom In Frame",
"Script": "Script",
"Text Top and Bottom": "Text Top and Bottom",
"URL": "URL",
"Instagram": "Instagram",
"Low (1)": "Low (1)",
"Medium (2)": "Medium (2)",
"Quartile (3)": "Quartile (3)",
"High (4)": "High (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Bitlink Created": "New Bitlink Created",
"Fires when a new Bitlink is created.": "Fires when a new Bitlink is created.",
"Polling Interval": "Polling Interval",
"Title Filter (Optional)": "Title Filter (Optional)",
"Tag Filter (Optional)": "Tag Filter (Optional)",
"Include Archived Bitlinks": "Include Archived Bitlinks",
"How frequently to check for new Bitlinks.": "How frequently to check for new Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Only trigger for Bitlinks containing this text in their title.",
"Only trigger for Bitlinks containing this tag.": "Only trigger for Bitlinks containing this tag.",
"Include archived Bitlinks in monitoring.": "Include archived Bitlinks in monitoring.",
"Every 1 minute": "Every 1 minute",
"Every 5 minutes": "Every 5 minutes",
"Every 15 minutes": "Every 15 minutes",
"Every 30 minutes": "Every 30 minutes",
"Every hour": "Every hour"
}

View File

@@ -0,0 +1,153 @@
{
"Bitly": "Bitly",
"URL shortening and link management platform with analytics.": "URL shortening and link management platform with analytics.",
"Access Token": "Access Token",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ",
"Archive Bitlink": "Archive Bitlink",
"Create Bitlink": "Create Bitlink",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Get Bitlink Details",
"Update Bitlink": "Update Bitlink",
"Custom API Call": "Custom API Call",
"Archive a Bitlink to stop redirects.": "Archive a Bitlink to stop redirects.",
"Shorten a long URL with optional customization.": "Shorten a long URL with optional customization.",
"Generate a customized QR code for a Bitlink.": "Generate a customized QR code for a Bitlink.",
"Retrieve metadata for a Bitlink.": "Retrieve metadata for a Bitlink.",
"Modify properties of an existing Bitlink.": "Modify properties of an existing Bitlink.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Group": "Group",
"Bitlink": "Bitlink",
"Long URL": "Long URL",
"Domain": "Domain",
"Title": "Title",
"Tags": "Tags",
"Force New Link": "Force New Link",
"Mobile App ID": "Mobile App ID",
"App URI Path": "App URI Path",
"App Install URL": "App Install URL",
"Install Type": "Install Type",
"Destination Type": "Destination Type",
"Destination": "Destination",
"Archive on Create": "Archive on Create",
"Style: Background Color": "Style: Background Color",
"Style: Dot Pattern Color": "Style: Dot Pattern Color",
"Style: Dot Pattern Type": "Style: Dot Pattern Type",
"Corner 1 (Top-Left): Shape": "Corner 1 (Top-Left): Shape",
"Corner 1 (Top-Left): Inner Color": "Corner 1 (Top-Left): Inner Color",
"Corner 1 (Top-Left): Outer Color": "Corner 1 (Top-Left): Outer Color",
"Corner 2 (Top-Right): Shape": "Corner 2 (Top-Right): Shape",
"Corner 2 (Top-Right): Inner Color": "Corner 2 (Top-Right): Inner Color",
"Corner 2 (Top-Right): Outer Color": "Corner 2 (Top-Right): Outer Color",
"Corner 3 (Bottom-Right): Shape": "Corner 3 (Bottom-Right): Shape",
"Corner 3 (Bottom-Right): Inner Color": "Corner 3 (Bottom-Right): Inner Color",
"Corner 3 (Bottom-Right): Outer Color": "Corner 3 (Bottom-Right): Outer Color",
"Gradient: Style": "Gradient: Style",
"Gradient: Color 1": "Gradient: Color 1",
"Gradient: Color 2": "Gradient: Color 2",
"Gradient: Angle (for Linear)": "Gradient: Angle (for Linear)",
"Gradient: Exclude Corners": "Gradient: Exclude Corners",
"Frame: Type": "Frame: Type",
"Frame: Primary Color": "Frame: Primary Color",
"Frame: Secondary Color": "Frame: Secondary Color",
"Frame: Background Color": "Frame: Background Color",
"Frame: Text": "Frame: Text",
"Branding: Logo Image GUID": "Branding: Logo Image GUID",
"Branding: Show Bitly Logo": "Branding: Show Bitly Logo",
"Specs: Error Correction": "Specs: Error Correction",
"Archived": "Archived",
"Mobile OS": "Mobile OS",
"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 group where the item will be managed.": "The group where the item will be managed.",
"Select the Bitlink to modify.": "Select the Bitlink to modify.",
"The URL to shorten (must include http:// or https://).": "The URL to shorten (must include http:// or https://).",
"Domain to use for the Bitlink.": "Domain to use for the Bitlink.",
"Custom title for the Bitlink.": "Custom title for the Bitlink.",
"Tags to apply to the Bitlink.": "Tags to apply to the Bitlink.",
"Create new link even if one exists for this URL.": "Create new link even if one exists for this URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Mobile app identifier (e.g., com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Path within the mobile app (e.g., /product/123).",
"URL where users can install the mobile app.": "URL where users can install the mobile app.",
"How to handle app installation.": "How to handle app installation.",
"Internal title for the QR Code.": "Internal title for the QR Code.",
"Archive the QR code upon creation.": "Archive the QR code upon creation.",
"Hex code (e.g., #FFFFFF)": "Hex code (e.g., #FFFFFF)",
"Hex code (e.g., #000000)": "Hex code (e.g., #000000)",
"First gradient color (hex code)": "First gradient color (hex code)",
"Second gradient color (hex code)": "Second gradient color (hex code)",
"Primary text for frames that support it.": "Primary text for frames that support it.",
"A GUID for a logo image previously uploaded to Bitly.": "A GUID for a logo image previously uploaded to Bitly.",
"Show the Bitly logo in the bottom right corner.": "Show the Bitly logo in the bottom right corner.",
"New title for the Bitlink.": "New title for the Bitlink.",
"Archive or unarchive the Bitlink.": "Archive or unarchive the Bitlink.",
"Tags to apply (overwrites existing tags).": "Tags to apply (overwrites existing tags).",
"Target mobile operating system.": "Target mobile operating system.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"No Install": "No Install",
"Auto Install": "Auto Install",
"Promote Install": "Promote Install",
"Existing Bitlink": "Existing Bitlink",
"Standard": "Standard",
"Circle": "Circle",
"Block": "Block",
"Blob": "Blob",
"Rounded": "Rounded",
"Vertical": "Vertical",
"Horizontal": "Horizontal",
"Triangle": "Triangle",
"Heart": "Heart",
"Star": "Star",
"Diamond": "Diamond",
"Slightly Round": "Slightly Round",
"Extra Round": "Extra Round",
"Leaf": "Leaf",
"Leaf Inner": "Leaf Inner",
"Leaf Outer": "Leaf Outer",
"Target": "Target",
"Concave": "Concave",
"No Gradient": "No Gradient",
"Linear": "Linear",
"Radial": "Radial",
"None": "None",
"Border Only": "Border Only",
"Text Bottom": "Text Bottom",
"Tooltip Bottom": "Tooltip Bottom",
"Arrow": "Arrow",
"Text Top": "Text Top",
"Text Bottom In Frame": "Text Bottom In Frame",
"Script": "Script",
"Text Top and Bottom": "Text Top and Bottom",
"URL": "URL",
"Instagram": "Instagram",
"Low (1)": "Low (1)",
"Medium (2)": "Medium (2)",
"Quartile (3)": "Quartile (3)",
"High (4)": "High (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Bitlink Created": "New Bitlink Created",
"Fires when a new Bitlink is created.": "Fires when a new Bitlink is created.",
"Polling Interval": "Polling Interval",
"Title Filter (Optional)": "Title Filter (Optional)",
"Tag Filter (Optional)": "Tag Filter (Optional)",
"Include Archived Bitlinks": "Include Archived Bitlinks",
"How frequently to check for new Bitlinks.": "How frequently to check for new Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Only trigger for Bitlinks containing this text in their title.",
"Only trigger for Bitlinks containing this tag.": "Only trigger for Bitlinks containing this tag.",
"Include archived Bitlinks in monitoring.": "Include archived Bitlinks in monitoring.",
"Every 1 minute": "Every 1 minute",
"Every 5 minutes": "Every 5 minutes",
"Every 15 minutes": "Every 15 minutes",
"Every 30 minutes": "Every 30 minutes",
"Every hour": "Every hour"
}

View File

@@ -0,0 +1,154 @@
{
"URL shortening and link management platform with analytics.": "URL shortening and link management platform with analytics.",
"Access Token": "Access Token",
"\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ": "\n To get your Access Token:\n 1. Log in to your Bitly account.\n 2. Click your profile icon in the top right corner.\n 3. Go to **Profile Settings**.\n 4. Navigate to the **Developer settings** section.\n 5. Click on **API**.\n 6. Click the **Generate token** button and enter your password to get your access token.\n ",
"Archive Bitlink": "Archive Bitlink",
"Create Bitlink": "Create Bitlink",
"Create QR Code": "Create QR Code",
"Get Bitlink Details": "Get Bitlink Details",
"Update Bitlink": "Update Bitlink",
"Custom API Call": "自定义 API 呼叫",
"Archive a Bitlink to stop redirects.": "Archive a Bitlink to stop redirects.",
"Shorten a long URL with optional customization.": "Shorten a long URL with optional customization.",
"Generate a customized QR code for a Bitlink.": "Generate a customized QR code for a Bitlink.",
"Retrieve metadata for a Bitlink.": "Retrieve metadata for a Bitlink.",
"Modify properties of an existing Bitlink.": "Modify properties of an existing Bitlink.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Group": "Group",
"Bitlink": "Bitlink",
"Long URL": "Long URL",
"Domain": "Domain",
"Title": "标题",
"Tags": "标签",
"Force New Link": "Force New Link",
"Mobile App ID": "Mobile App ID",
"App URI Path": "App URI Path",
"App Install URL": "App Install URL",
"Install Type": "Install Type",
"Destination Type": "Destination Type",
"Destination": "Destination",
"Archive on Create": "Archive on Create",
"Style: Background Color": "Style: Background Color",
"Style: Dot Pattern Color": "Style: Dot Pattern Color",
"Style: Dot Pattern Type": "Style: Dot Pattern Type",
"Corner 1 (Top-Left): Shape": "Corner 1 (Top-Left): Shape",
"Corner 1 (Top-Left): Inner Color": "Corner 1 (Top-Left): Inner Color",
"Corner 1 (Top-Left): Outer Color": "Corner 1 (Top-Left): Outer Color",
"Corner 2 (Top-Right): Shape": "Corner 2 (Top-Right): Shape",
"Corner 2 (Top-Right): Inner Color": "Corner 2 (Top-Right): Inner Color",
"Corner 2 (Top-Right): Outer Color": "Corner 2 (Top-Right): Outer Color",
"Corner 3 (Bottom-Right): Shape": "Corner 3 (Bottom-Right): Shape",
"Corner 3 (Bottom-Right): Inner Color": "Corner 3 (Bottom-Right): Inner Color",
"Corner 3 (Bottom-Right): Outer Color": "Corner 3 (Bottom-Right): Outer Color",
"Gradient: Style": "Gradient: Style",
"Gradient: Color 1": "Gradient: Color 1",
"Gradient: Color 2": "Gradient: Color 2",
"Gradient: Angle (for Linear)": "Gradient: Angle (for Linear)",
"Gradient: Exclude Corners": "Gradient: Exclude Corners",
"Frame: Type": "Frame: Type",
"Frame: Primary Color": "Frame: Primary Color",
"Frame: Secondary Color": "Frame: Secondary Color",
"Frame: Background Color": "Frame: Background Color",
"Frame: Text": "Frame: Text",
"Branding: Logo Image GUID": "Branding: Logo Image GUID",
"Branding: Show Bitly Logo": "Branding: Show Bitly Logo",
"Specs: Error Correction": "Specs: Error Correction",
"Archived": "Archived",
"Mobile OS": "Mobile OS",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The group where the item will be managed.": "The group where the item will be managed.",
"Select the Bitlink to modify.": "Select the Bitlink to modify.",
"The URL to shorten (must include http:// or https://).": "The URL to shorten (must include http:// or https://).",
"Domain to use for the Bitlink.": "Domain to use for the Bitlink.",
"Custom title for the Bitlink.": "Custom title for the Bitlink.",
"Tags to apply to the Bitlink.": "Tags to apply to the Bitlink.",
"Create new link even if one exists for this URL.": "Create new link even if one exists for this URL.",
"Mobile app identifier (e.g., com.yourapp.name).": "Mobile app identifier (e.g., com.yourapp.name).",
"Path within the mobile app (e.g., /product/123).": "Path within the mobile app (e.g., /product/123).",
"URL where users can install the mobile app.": "URL where users can install the mobile app.",
"How to handle app installation.": "How to handle app installation.",
"Internal title for the QR Code.": "Internal title for the QR Code.",
"Archive the QR code upon creation.": "Archive the QR code upon creation.",
"Hex code (e.g., #FFFFFF)": "Hex code (e.g., #FFFFFF)",
"Hex code (e.g., #000000)": "Hex code (e.g., #000000)",
"First gradient color (hex code)": "First gradient color (hex code)",
"Second gradient color (hex code)": "Second gradient color (hex code)",
"Primary text for frames that support it.": "Primary text for frames that support it.",
"A GUID for a logo image previously uploaded to Bitly.": "A GUID for a logo image previously uploaded to Bitly.",
"Show the Bitly logo in the bottom right corner.": "Show the Bitly logo in the bottom right corner.",
"New title for the Bitlink.": "New title for the Bitlink.",
"Archive or unarchive the Bitlink.": "Archive or unarchive the Bitlink.",
"Tags to apply (overwrites existing tags).": "Tags to apply (overwrites existing tags).",
"Target mobile operating system.": "Target mobile operating system.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"No Install": "No Install",
"Auto Install": "Auto Install",
"Promote Install": "Promote Install",
"Existing Bitlink": "Existing Bitlink",
"Standard": "Standard",
"Circle": "Circle",
"Block": "Block",
"Blob": "Blob",
"Rounded": "Rounded",
"Vertical": "Vertical",
"Horizontal": "Horizontal",
"Triangle": "Triangle",
"Heart": "Heart",
"Star": "Star",
"Diamond": "Diamond",
"Slightly Round": "Slightly Round",
"Extra Round": "Extra Round",
"Leaf": "Leaf",
"Leaf Inner": "Leaf Inner",
"Leaf Outer": "Leaf Outer",
"Target": "Target",
"Concave": "Concave",
"No Gradient": "No Gradient",
"Linear": "Linear",
"Radial": "Radial",
"None": "无",
"Border Only": "Border Only",
"Text Bottom": "Text Bottom",
"Tooltip Bottom": "Tooltip Bottom",
"Arrow": "Arrow",
"Text Top": "Text Top",
"Text Bottom In Frame": "Text Bottom In Frame",
"Script": "Script",
"Text Top and Bottom": "Text Top and Bottom",
"URL": "URL",
"Instagram": "Instagram",
"Low (1)": "Low (1)",
"Medium (2)": "Medium (2)",
"Quartile (3)": "Quartile (3)",
"High (4)": "High (4)",
"iOS": "iOS",
"Android": "Android",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"New Bitlink Created": "New Bitlink Created",
"Fires when a new Bitlink is created.": "Fires when a new Bitlink is created.",
"Polling Interval": "Polling Interval",
"Title Filter (Optional)": "Title Filter (Optional)",
"Tag Filter (Optional)": "Tag Filter (Optional)",
"Include Archived Bitlinks": "Include Archived Bitlinks",
"How frequently to check for new Bitlinks.": "How frequently to check for new Bitlinks.",
"Only trigger for Bitlinks containing this text in their title.": "Only trigger for Bitlinks containing this text in their title.",
"Only trigger for Bitlinks containing this tag.": "Only trigger for Bitlinks containing this tag.",
"Include archived Bitlinks in monitoring.": "Include archived Bitlinks in monitoring.",
"Every 1 minute": "Every 1 minute",
"Every 5 minutes": "Every 5 minutes",
"Every 15 minutes": "Every 15 minutes",
"Every 30 minutes": "Every 30 minutes",
"Every hour": "Every hour"
}

View File

@@ -0,0 +1,38 @@
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { bitlyAuth } from './lib/common/auth';
import { newBitlinkCreatedTrigger } from './lib/triggers/new-bitlink-created';
import { archiveBitlinkAction } from './lib/actions/archive-bitlink';
import { createBitlinkAction } from './lib/actions/create-bitlink';
import { createQrCodeAction } from './lib/actions/create-qr-code';
import { getBitlinkDetailsAction } from './lib/actions/get-bitlink-details';
import { updateBitlinkAction } from './lib/actions/update-bitlink';
export const bitly = createPiece({
displayName: 'Bitly',
description: 'URL shortening and link management platform with analytics.',
auth: bitlyAuth,
minimumSupportedRelease: '0.20.0',
logoUrl: 'https://cdn.activepieces.com/pieces/bitly.png',
authors: ['aryel780'],
categories: [PieceCategory.MARKETING],
actions: [
archiveBitlinkAction,
createBitlinkAction,
createQrCodeAction,
getBitlinkDetailsAction,
updateBitlinkAction,
createCustomApiCallAction({
auth: bitlyAuth,
baseUrl: () => 'https://api-ssl.bitly.com/v4',
authMapping: async (auth) => {
const { accessToken } = auth.props;
return {
Authorization: `Bearer ${accessToken}`,
};
},
}),
],
triggers: [ newBitlinkCreatedTrigger ],
});

View File

@@ -0,0 +1,57 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { bitlyApiCall } from '../common/client';
import { bitlyAuth } from '../common/auth';
import { bitlinkDropdown, groupGuid } from '../common/props';
export const archiveBitlinkAction = createAction({
auth: bitlyAuth,
name: 'archive_bitlink',
displayName: 'Archive Bitlink',
description: 'Archive a Bitlink to stop redirects.',
props: {
group_guid: groupGuid,
bitlink: bitlinkDropdown,
},
async run(context) {
const { bitlink } = context.propsValue;
try {
const body = {
archived: true,
};
return await bitlyApiCall({
method: HttpMethod.PATCH,
auth: context.auth.props,
resourceUri: `/bitlinks/${bitlink}`,
body,
});
} catch (error: any) {
const errorMessage = error.response?.data?.description || error.response?.data?.message || error.message;
if (error.response?.status === 429) {
throw new Error(
'Rate limit exceeded. Please wait before trying again.'
);
}
if (error.response?.status === 404) {
throw new Error(
`Bitlink not found: ${errorMessage}. Please verify the link (e.g., 'bit.ly/xyz123') is correct.`
);
}
if (error.response?.status === 401 || error.response?.status === 403) {
throw new Error(
`Authentication failed or forbidden: ${errorMessage}. Please check your Access Token and permissions.`
);
}
throw new Error(
`Failed to archive Bitlink: ${errorMessage || 'Unknown error occurred'}`
);
}
},
});

View File

@@ -0,0 +1,156 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { bitlyApiCall } from '../common/client';
import { bitlyAuth } from '../common/auth';
import { groupGuid, domain } from '../common/props';
export const createBitlinkAction = createAction({
auth: bitlyAuth,
name: 'create_bitlink',
displayName: 'Create Bitlink',
description: 'Shorten a long URL with optional customization.',
props: {
long_url: Property.ShortText({
displayName: 'Long URL',
description: 'The URL to shorten (must include http:// or https://).',
required: true,
}),
group_guid: groupGuid,
domain: {
...domain,
defaultValue: 'bit.ly',
},
title: Property.ShortText({
displayName: 'Title',
description: 'Custom title for the Bitlink.',
required: false,
}),
tags: Property.Array({
displayName: 'Tags',
description: 'Tags to apply to the Bitlink.',
required: false,
}),
force_new_link: Property.Checkbox({
displayName: 'Force New Link',
description: 'Create new link even if one exists for this URL.',
required: false,
defaultValue: false,
}),
// Mobile App Deeplink Configuration
app_id: Property.ShortText({
displayName: 'Mobile App ID',
description: 'Mobile app identifier (e.g., com.yourapp.name).',
required: false,
}),
app_uri_path: Property.ShortText({
displayName: 'App URI Path',
description: 'Path within the mobile app (e.g., /product/123).',
required: false,
}),
install_url: Property.LongText({
displayName: 'App Install URL',
description: 'URL where users can install the mobile app.',
required: false,
}),
install_type: Property.StaticDropdown({
displayName: 'Install Type',
description: 'How to handle app installation.',
required: false,
options: {
disabled: false,
options: [
{ label: 'No Install', value: 'no_install' },
{ label: 'Auto Install', value: 'auto_install' },
{ label: 'Promote Install', value: 'promote_install' },
],
},
}),
},
async run(context) {
const {
long_url,
group_guid,
domain,
title,
tags,
force_new_link,
app_id,
app_uri_path,
install_url,
install_type,
} = context.propsValue;
try {
// Pre-flight validation
if (!long_url.startsWith('http://') && !long_url.startsWith('https://')) {
throw new Error(
"Invalid Long URL. It must start with 'http://' or 'https://'."
);
}
const body: Record<string, unknown> = { long_url };
if (group_guid) {
body['group_guid'] = group_guid;
}
if (domain) {
body['domain'] = domain;
}
if (title) {
body['title'] = title;
}
if (tags && tags.length > 0) {
body['tags'] = tags;
}
if (force_new_link) {
body['force_new_link'] = force_new_link;
}
// Build deeplinks array if app configuration is provided
if (app_id && app_uri_path && install_url && install_type) {
body['deeplinks'] = [
{
app_id,
app_uri_path,
install_url,
install_type,
},
];
}
return await bitlyApiCall({
method: HttpMethod.POST,
auth: context.auth.props,
resourceUri: '/bitlinks',
body,
});
} catch (error: any) {
const errorMessage =
error.response?.data?.description ||
error.response?.data?.message ||
error.message;
if (error.response?.status === 429) {
throw new Error(
'Rate limit exceeded. Please wait before trying again.'
);
}
if (error.response?.status === 422) {
throw new Error(
`Unprocessable Entity: ${errorMessage}. Please check the format of your Long URL or other inputs.`
);
}
if (error.response?.status === 401 || error.response?.status === 403) {
throw new Error(
`Authentication failed or forbidden: ${errorMessage}. Please check your Access Token and permissions.`
);
}
throw new Error(
`Failed to create Bitlink: ${errorMessage || 'Unknown error occurred'}`
);
}
},
});

View File

@@ -0,0 +1,396 @@
import { HttpMethod } from '@activepieces/pieces-common';
import {
createAction,
Property,
DynamicPropsValue,
} from '@activepieces/pieces-framework';
import { bitlyApiCall } from '../common/client';
import { bitlyAuth } from '../common/auth';
import { groupGuid } from '../common/props';
export const createQrCodeAction = createAction({
auth: bitlyAuth,
name: 'create_qr_code',
displayName: 'Create QR Code',
description: 'Generate a customized QR code for a Bitlink.',
props: {
group_guid: groupGuid,
destination_type: Property.StaticDropdown({
displayName: 'Destination Type',
required: true,
defaultValue: 'long_url',
options: {
options: [
{ label: 'Long URL', value: 'long_url' },
{ label: 'Existing Bitlink', value: 'bitlink_id' },
],
},
}),
destination: Property.DynamicProperties({
auth: bitlyAuth,
displayName: 'Destination',
required: true,
refreshers: ['destination_type'],
props: async (
propsValue: Record<string, unknown>,
) => {
const destination_type = propsValue[
'destination_type'
] as unknown as string;
const props: DynamicPropsValue = {};
if (destination_type === 'long_url') {
props['long_url'] = Property.ShortText({
displayName: 'Long URL',
required: true,
});
} else if (destination_type === 'bitlink_id') {
props['bitlink_id'] = Property.ShortText({
displayName: 'Bitlink (e.g., bit.ly/xyz)',
required: true,
});
}
return props;
},
}),
title: Property.ShortText({
displayName: 'Title',
description: 'Internal title for the QR Code.',
required: false,
}),
archived: Property.Checkbox({
displayName: 'Archive on Create',
description: 'Archive the QR code upon creation.',
required: false,
}),
background_color: Property.ShortText({
displayName: 'Style: Background Color',
description: 'Hex code (e.g., #FFFFFF)',
required: false,
}),
dot_pattern_color: Property.ShortText({
displayName: 'Style: Dot Pattern Color',
description: 'Hex code (e.g., #000000)',
required: false,
}),
dot_pattern_type: Property.StaticDropdown({
displayName: 'Style: Dot Pattern Type',
required: false,
options: {
options: [
{ label: 'Standard', value: 'standard' },
{ label: 'Circle', value: 'circle' },
{ label: 'Block', value: 'block' },
{ label: 'Blob', value: 'blob' },
{ label: 'Rounded', value: 'rounded' },
{ label: 'Vertical', value: 'vertical' },
{ label: 'Horizontal', value: 'horizontal' },
{ label: 'Triangle', value: 'triangle' },
{ label: 'Heart', value: 'heart' },
{ label: 'Star', value: 'star' },
{ label: 'Diamond', value: 'diamond' },
],
},
}),
corner_1_shape: Property.StaticDropdown({
displayName: 'Corner 1 (Top-Left): Shape',
required: false,
options: {
options: [
{ label: 'Standard', value: 'standard' },
{ label: 'Slightly Round', value: 'slightly_round' },
{ label: 'Rounded', value: 'rounded' },
{ label: 'Extra Round', value: 'extra_round' },
{ label: 'Leaf', value: 'leaf' },
{ label: 'Leaf Inner', value: 'leaf_inner' },
{ label: 'Leaf Outer', value: 'leaf_outer' },
{ label: 'Target', value: 'target' },
{ label: 'Concave', value: 'concave' },
],
},
}),
corner_1_inner_color: Property.ShortText({
displayName: 'Corner 1 (Top-Left): Inner Color',
required: false,
}),
corner_1_outer_color: Property.ShortText({
displayName: 'Corner 1 (Top-Left): Outer Color',
required: false,
}),
corner_2_shape: Property.StaticDropdown({
displayName: 'Corner 2 (Top-Right): Shape',
required: false,
options: {
options: [
{ label: 'Standard', value: 'standard' },
{ label: 'Slightly Round', value: 'slightly_round' },
{ label: 'Rounded', value: 'rounded' },
{ label: 'Extra Round', value: 'extra_round' },
{ label: 'Leaf', value: 'leaf' },
{ label: 'Leaf Inner', value: 'leaf_inner' },
{ label: 'Leaf Outer', value: 'leaf_outer' },
{ label: 'Target', value: 'target' },
{ label: 'Concave', value: 'concave' },
],
},
}),
corner_2_inner_color: Property.ShortText({
displayName: 'Corner 2 (Top-Right): Inner Color',
required: false,
}),
corner_2_outer_color: Property.ShortText({
displayName: 'Corner 2 (Top-Right): Outer Color',
required: false,
}),
corner_3_shape: Property.StaticDropdown({
displayName: 'Corner 3 (Bottom-Right): Shape',
required: false,
options: {
options: [
{ label: 'Standard', value: 'standard' },
{ label: 'Slightly Round', value: 'slightly_round' },
{ label: 'Rounded', value: 'rounded' },
{ label: 'Extra Round', value: 'extra_round' },
{ label: 'Leaf', value: 'leaf' },
{ label: 'Leaf Inner', value: 'leaf_inner' },
{ label: 'Leaf Outer', value: 'leaf_outer' },
{ label: 'Target', value: 'target' },
{ label: 'Concave', value: 'concave' },
],
},
}),
corner_3_inner_color: Property.ShortText({
displayName: 'Corner 3 (Bottom-Right): Inner Color',
required: false,
}),
corner_3_outer_color: Property.ShortText({
displayName: 'Corner 3 (Bottom-Right): Outer Color',
required: false,
}),
gradient_style: Property.StaticDropdown({
displayName: 'Gradient: Style',
required: false,
options: {
options: [
{ label: 'No Gradient', value: 'no_gradient' },
{ label: 'Linear', value: 'linear' },
{ label: 'Radial', value: 'radial' },
],
},
}),
gradient_color_1: Property.ShortText({
displayName: 'Gradient: Color 1',
description: 'First gradient color (hex code)',
required: false,
}),
gradient_color_2: Property.ShortText({
displayName: 'Gradient: Color 2',
description: 'Second gradient color (hex code)',
required: false,
}),
gradient_angle: Property.Number({
displayName: 'Gradient: Angle (for Linear)',
required: false,
}),
gradient_exclude_corners: Property.Checkbox({
displayName: 'Gradient: Exclude Corners',
required: false,
}),
frame_id: Property.StaticDropdown({
displayName: 'Frame: Type',
required: false,
options: {
options: [
{ label: 'None', value: 'none' },
{ label: 'Border Only', value: 'border_only' },
{ label: 'Text Bottom', value: 'text_bottom' },
{ label: 'Tooltip Bottom', value: 'tooltip_bottom' },
{ label: 'Arrow', value: 'arrow' },
{ label: 'Text Top', value: 'text_top' },
{ label: 'Text Bottom In Frame', value: 'text_bottom_in_frame' },
{ label: 'Script', value: 'script' },
{ label: 'Text Top and Bottom', value: 'text_top_and_bottom' },
{ label: 'URL', value: 'url' },
{ label: 'Instagram', value: 'instagram' },
],
},
}),
frame_primary_color: Property.ShortText({
displayName: 'Frame: Primary Color',
required: false,
}),
frame_secondary_color: Property.ShortText({
displayName: 'Frame: Secondary Color',
required: false,
}),
frame_background_color: Property.ShortText({
displayName: 'Frame: Background Color',
required: false,
}),
frame_text: Property.ShortText({
displayName: 'Frame: Text',
description: 'Primary text for frames that support it.',
required: false,
}),
logo_image_guid: Property.ShortText({
displayName: 'Branding: Logo Image GUID',
description: 'A GUID for a logo image previously uploaded to Bitly.',
required: false,
}),
bitly_brand: Property.Checkbox({
displayName: 'Branding: Show Bitly Logo',
description: 'Show the Bitly logo in the bottom right corner.',
required: false,
defaultValue: true,
}),
error_correction: Property.StaticDropdown({
displayName: 'Specs: Error Correction',
required: false,
options: {
options: [
{ label: 'Low (1)', value: 1 },
{ label: 'Medium (2)', value: 2 },
{ label: 'Quartile (3)', value: 3 },
{ label: 'High (4)', value: 4 },
],
},
}),
},
async run(context) {
const props = context.propsValue;
try {
const body: any = {
group_guid: props.group_guid,
destination: { ...props.destination },
};
if (props.title) body.title = props.title;
if (props.archived) body.archived = props.archived;
const customizations: any = {};
if (props.background_color)
customizations.background_color = props.background_color;
if (props.dot_pattern_color)
customizations.dot_pattern_color = props.dot_pattern_color;
if (props.dot_pattern_type)
customizations.dot_pattern_type = props.dot_pattern_type;
const corners: any = {};
if (
props.corner_1_shape ||
props.corner_1_inner_color ||
props.corner_1_outer_color
)
corners.corner_1 = {
shape: props.corner_1_shape,
inner_color: props.corner_1_inner_color,
outer_color: props.corner_1_outer_color,
};
if (
props.corner_2_shape ||
props.corner_2_inner_color ||
props.corner_2_outer_color
)
corners.corner_2 = {
shape: props.corner_2_shape,
inner_color: props.corner_2_inner_color,
outer_color: props.corner_2_outer_color,
};
if (
props.corner_3_shape ||
props.corner_3_inner_color ||
props.corner_3_outer_color
)
corners.corner_3 = {
shape: props.corner_3_shape,
inner_color: props.corner_3_inner_color,
outer_color: props.corner_3_outer_color,
};
if (Object.keys(corners).length > 0) customizations.corners = corners;
const gradient: any = {};
if (props.gradient_style) gradient.style = props.gradient_style;
if (props.gradient_angle) gradient.angle = props.gradient_angle;
if (props.gradient_exclude_corners)
gradient.exclude_corners = props.gradient_exclude_corners;
// Build gradient colors array from individual color inputs
if (props.gradient_color_1 || props.gradient_color_2) {
const colors = [];
if (props.gradient_color_1) {
colors.push({ color: props.gradient_color_1, offset: 0 });
}
if (props.gradient_color_2) {
colors.push({ color: props.gradient_color_2, offset: 100 });
}
gradient.colors = colors;
}
if (Object.keys(gradient).length > 0) customizations.gradient = gradient;
const frame: any = {};
if (props.frame_id) frame.id = props.frame_id;
const frameColors: any = {};
if (props.frame_primary_color)
frameColors.primary = props.frame_primary_color;
if (props.frame_secondary_color)
frameColors.secondary = props.frame_secondary_color;
if (props.frame_background_color)
frameColors.background = props.frame_background_color;
if (Object.keys(frameColors).length > 0) frame.colors = frameColors;
if (props.frame_text)
frame.text = { primary: { content: props.frame_text } };
if (Object.keys(frame).length > 0) customizations.frame = frame;
const branding: any = {};
if (props.bitly_brand !== undefined)
branding.bitly_brand = props.bitly_brand;
if (Object.keys(branding).length > 0) customizations.branding = branding;
const logo: any = {};
if (props.logo_image_guid) logo.image_guid = props.logo_image_guid;
if (Object.keys(logo).length > 0) customizations.logo = logo;
const specSettings: any = {};
if (props.error_correction)
specSettings.error_correction = props.error_correction;
if (Object.keys(specSettings).length > 0)
customizations.spec_settings = specSettings;
if (Object.keys(customizations).length > 0)
body.render_customizations = customizations;
return await bitlyApiCall({
method: HttpMethod.POST,
auth: context.auth.props,
resourceUri: '/qr-codes',
body,
});
} catch (error: any) {
const errorMessage =
error.response?.data?.description ||
error.response?.data?.message ||
error.message;
if (error.response?.status === 429) {
throw new Error(
'Rate limit exceeded. Please wait before trying again.'
);
}
if (error.response?.status === 422) {
throw new Error(
`Unprocessable Entity: ${errorMessage}. Please check the format of your Long URL or other inputs.`
);
}
if (error.response?.status === 401 || error.response?.status === 403) {
throw new Error(
`Authentication failed or forbidden: ${errorMessage}. Please check your Access Token and permissions.`
);
}
throw new Error(
`Failed to create QR Code: ${errorMessage || 'Unknown error occurred'}`
);
}
},
});

View File

@@ -0,0 +1,52 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { bitlyApiCall } from '../common/client';
import { bitlyAuth } from '../common/auth';
import { bitlinkDropdown, groupGuid } from '../common/props';
export const getBitlinkDetailsAction = createAction({
auth: bitlyAuth,
name: 'get_bitlink_details',
displayName: 'Get Bitlink Details',
description: 'Retrieve metadata for a Bitlink.',
props: {
group_guid: groupGuid,
bitlink: bitlinkDropdown,
},
async run(context) {
const { bitlink } = context.propsValue;
try {
return await bitlyApiCall({
method: HttpMethod.GET,
auth: context.auth.props,
resourceUri: `/bitlinks/${bitlink}`,
});
} catch (error: any) {
const errorMessage = error.response?.data?.description || error.response?.data?.message || error.message;
if (error.response?.status === 429) {
throw new Error(
'Rate limit exceeded. Please wait before trying again.'
);
}
if (error.response?.status === 404) {
throw new Error(
`Bitlink not found: ${errorMessage}. Please verify the link ID is correct.`
);
}
if (error.response?.status === 401 || error.response?.status === 403) {
throw new Error(
`Authentication failed or forbidden: ${errorMessage}. Please check your Access Token and permissions.`
);
}
throw new Error(
`Failed to get Bitlink details: ${errorMessage || 'Unknown error occurred'}`
);
}
},
});

View File

@@ -0,0 +1,151 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { bitlyApiCall } from '../common/client';
import { bitlyAuth } from '../common/auth';
import { bitlinkDropdown, groupGuid } from '../common/props';
export const updateBitlinkAction = createAction({
auth: bitlyAuth,
name: 'update_bitlink',
displayName: 'Update Bitlink',
description: 'Modify properties of an existing Bitlink.',
props: {
group_guid: groupGuid,
bitlink: bitlinkDropdown,
title: Property.ShortText({
displayName: 'Title',
description: 'New title for the Bitlink.',
required: false,
}),
archived: Property.Checkbox({
displayName: 'Archived',
description: 'Archive or unarchive the Bitlink.',
required: false,
}),
tags: Property.Array({
displayName: 'Tags',
description: 'Tags to apply (overwrites existing tags).',
required: false,
}),
// Mobile App Deeplink Configuration
app_uri_path: Property.ShortText({
displayName: 'App URI Path',
description: 'Path within the mobile app (e.g., /product/123).',
required: false,
}),
install_url: Property.LongText({
displayName: 'App Install URL',
description: 'URL where users can install the mobile app.',
required: false,
}),
os: Property.StaticDropdown({
displayName: 'Mobile OS',
description: 'Target mobile operating system.',
required: false,
options: {
disabled: false,
options: [
{ label: 'iOS', value: 'ios' },
{ label: 'Android', value: 'android' },
],
},
}),
install_type: Property.StaticDropdown({
displayName: 'Install Type',
description: 'How to handle app installation.',
required: false,
options: {
disabled: false,
options: [
{ label: 'No Install', value: 'no_install' },
{ label: 'Auto Install', value: 'auto_install' },
{ label: 'Promote Install', value: 'promote_install' },
],
},
}),
},
async run(context) {
const {
bitlink,
title,
archived,
tags,
app_uri_path,
install_url,
os,
install_type
} = context.propsValue;
try {
const body: Record<string, unknown> = {};
if (title !== undefined && title !== null) {
body['title'] = title;
}
if (archived !== undefined && archived !== null) {
body['archived'] = archived;
}
if (tags !== undefined && tags !== null && Array.isArray(tags)) {
body['tags'] = tags;
}
// Build deeplinks array if app configuration is provided
if (app_uri_path || install_url || os || install_type) {
const deeplink: Record<string, unknown> = {};
if (app_uri_path) deeplink['app_uri_path'] = app_uri_path;
if (install_url) deeplink['install_url'] = install_url;
if (os) deeplink['os'] = os;
if (install_type) deeplink['install_type'] = install_type;
if (Object.keys(deeplink).length > 0) {
body['deeplinks'] = [deeplink];
}
}
if (Object.keys(body).length === 0) {
throw new Error(
'No fields were provided to update. Please provide a title, tags, archive status, or deeplinks.'
);
}
return await bitlyApiCall({
method: HttpMethod.PATCH,
auth: context.auth.props,
resourceUri: `/bitlinks/${bitlink}`,
body,
});
} catch (error: any) {
const errorMessage =
error.response?.data?.description ||
error.response?.data?.message ||
error.message;
if (error.response?.status === 429) {
throw new Error(
'Rate limit exceeded. Please wait before trying again.'
);
}
if (error.response?.status === 404) {
throw new Error(
`Bitlink not found: ${errorMessage}. Please verify the link (e.g., 'bit.ly/xyz123') is correct.`
);
}
if (error.response?.status === 401 || error.response?.status === 403) {
throw new Error(
`Authentication failed or forbidden: ${errorMessage}. Please check your Access Token and permissions.`
);
}
if (error.message.includes('Invalid JSON format')) {
throw error;
}
throw new Error(
`Failed to update Bitlink: ${errorMessage || 'Unknown error occurred'}`
);
}
},
});

View File

@@ -0,0 +1,37 @@
import { PieceAuth } from '@activepieces/pieces-framework';
import { bitlyApiCall } from './client';
import { HttpMethod } from '@activepieces/pieces-common';
export const bitlyAuth = PieceAuth.CustomAuth({
description: `
To get your Access Token:
1. Log in to your Bitly account.
2. Click your profile icon in the top right corner.
3. Go to **Profile Settings**.
4. Navigate to the **Developer settings** section.
5. Click on **API**.
6. Click the **Generate token** button and enter your password to get your access token.
`,
props: {
accessToken: PieceAuth.SecretText({
displayName: 'Access Token',
required: true,
}),
},
validate: async ({ auth }) => {
try {
await bitlyApiCall({
method: HttpMethod.GET,
auth,
resourceUri: '/user',
});
return { valid: true };
} catch (e) {
return {
valid: false,
error: 'Invalid Access Token',
};
}
},
required: true,
});

View File

@@ -0,0 +1,122 @@
import {
httpClient,
HttpMethod,
HttpRequest,
HttpMessageBody,
QueryParams,
} from '@activepieces/pieces-common';
export type BitlyAuthProps = {
accessToken: string;
};
export type BitlyApiCallParams = {
method: HttpMethod;
resourceUri: string;
query?: Record<string, string | number | string[] | undefined>;
body?: any;
auth: BitlyAuthProps;
};
export async function bitlyApiCall<T extends HttpMessageBody>({
method,
resourceUri,
query,
body,
auth,
}: BitlyApiCallParams): Promise<T> {
const { accessToken } = auth;
if (!accessToken) {
throw new Error('Bitly Access Token is required for authentication');
}
const queryParams: QueryParams = {};
if (query) {
for (const [key, value] of Object.entries(query)) {
if (value !== null && value !== undefined) {
queryParams[key] = String(value);
}
}
}
const baseUrl = 'https://api-ssl.bitly.com/v4';
const request: HttpRequest = {
method,
url: `${baseUrl}${resourceUri}`,
headers: {
Authorization: `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
queryParams,
body,
};
try {
const response = await httpClient.sendRequest<T>(request);
return response.body;
} catch (error: any) {
const statusCode = error.response?.status;
const errorData = error.response?.data;
const errorMessage = errorData?.description || errorData?.message || 'Unknown error occurred';
switch (statusCode) {
case 400:
throw new Error(
`Bad Request: ${errorMessage}. Please check your input parameters.`
);
case 401:
throw new Error(
'Authentication Failed: Invalid Access Token. Please verify your Bitly credentials in the connection settings.'
);
case 402:
throw new Error(
`Payment Required: ${errorMessage}. Your account has been suspended or you have reached a usage limit.`
);
case 403:
throw new Error(
`Access Forbidden: ${errorMessage}. You do not have permission to access this resource.`
);
case 404:
throw new Error(
`Resource Not Found: ${errorMessage}. The requested resource does not exist.`
);
case 417:
throw new Error(
`Expectation Failed: ${errorMessage}. You must agree to the latest terms of service.`
);
case 422:
throw new Error(
`Unprocessable Entity: ${errorMessage}. The request was well-formed but was unable to be followed due to semantic errors.`
);
case 429:
throw new Error(
`Rate Limit Exceeded: ${errorMessage}. Too many requests. Please wait before trying again.`
);
case 500:
throw new Error(
'Internal Server Error: Bitly is experiencing technical difficulties. Please try again later.'
);
case 503:
throw new Error(
'Service Unavailable: Bitly service is temporarily unavailable. Please try again in a few minutes.'
);
default:
throw new Error(
`Bitly API Error (${statusCode || 'Unknown'}): ${errorMessage}`
);
}
}
}

View File

@@ -0,0 +1,123 @@
import { Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { bitlyApiCall } from './client';
import { BitlyAuthProps } from './client';
import { bitlyAuth } from './auth';
interface BitlyGroup {
guid: string;
name: string;
bsds: Array<{ domain: string }>;
}
interface Bitlink {
id: string;
title: string;
}
const getBitlyGroups = async (auth: BitlyAuthProps): Promise<BitlyGroup[]> => {
const response = await bitlyApiCall<{ groups: BitlyGroup[] }>({
auth,
method: HttpMethod.GET,
resourceUri: '/groups',
});
return response.groups || [];
};
export const groupGuid = Property.Dropdown({
displayName: 'Group',
description: 'The group where the item will be managed.',
required: true,
refreshers: [],
auth:bitlyAuth ,
options: async ({ auth }) => {
if (!auth) {
return { disabled: true, options: [], placeholder: 'Please connect your Bitly account first.' };
}
const { accessToken } = auth.props;
if (!accessToken) {
return { disabled: true, options: [], placeholder: 'Please connect your Bitly account first.' };
}
try {
const groups = await getBitlyGroups({ accessToken });
if (groups.length === 0) {
return { disabled: true, options: [], placeholder: 'No groups found in your account.' };
}
return {
disabled: false,
options: groups.map((group) => ({
label: group.name,
value: group.guid,
})),
};
} catch (e) {
return { disabled: true, options: [], placeholder: `Error fetching groups: ${(e as Error).message}` };
}
},
});
export const domain = Property.Dropdown({
auth: bitlyAuth,
displayName: 'Domain',
description: 'Domain to use for the Bitlink.',
required: false,
refreshers: ['group_guid'],
options: async ({ auth, group_guid }) => {
if (!auth) {
return { disabled: true, options: [], placeholder: 'Please connect your Bitly account first.' };
}
const { accessToken } = auth.props;
if (!accessToken || !group_guid) {
return { disabled: true, options: [], placeholder: 'Please select a group first.' };
}
try {
const groups = await getBitlyGroups({ accessToken });
const selectedGroup = groups.find(g => g.guid === group_guid);
const customDomains = selectedGroup?.bsds?.map(bsd => bsd.domain) || [];
const allDomains = ['bit.ly', ...customDomains];
return {
disabled: false,
options: allDomains.map(d => ({
label: d,
value: d,
})),
};
} catch (e) {
return { disabled: true, options: [], placeholder: `Error fetching domains: ${(e as Error).message}` };
}
},
});
export const bitlinkDropdown = Property.Dropdown({
displayName: 'Bitlink',
description: 'Select the Bitlink to modify.',
required: true,
refreshers: ['group_guid'],
auth: bitlyAuth,
options: async ({ auth, group_guid }) => {
if (!auth) {
return { disabled: true, options: [], placeholder: 'Please connect your Bitly account first.' };
}
const { accessToken } = auth.props;
if (!accessToken) return { disabled: true, options: [], placeholder: 'Please connect your Bitly account first.' };
if (!group_guid) return { disabled: true, options: [], placeholder: 'Please select a group first.' };
try {
const response = await bitlyApiCall<{ links: Bitlink[] }>({
auth: { accessToken },
method: HttpMethod.GET,
resourceUri: `/groups/${group_guid as string}/bitlinks`,
});
return {
disabled: false,
options: response.links.map(link => ({
label: `${link.title || 'No Title'} (${link.id})`,
value: link.id
}))
};
} catch (e) {
return { disabled: true, options: [], placeholder: `Error fetching Bitlinks: ${(e as Error).message}` };
}
}
});

View File

@@ -0,0 +1,358 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { bitlyAuth } from '../common/auth';
import { bitlyApiCall } from '../common/client';
import { groupGuid } from '../common/props';
const LAST_BITLINK_IDS_KEY = 'bitly-last-bitlink-ids';
export const newBitlinkCreatedTrigger = createTrigger({
auth: bitlyAuth,
name: 'new_bitlink_created',
displayName: 'New Bitlink Created',
description: 'Fires when a new Bitlink is created.',
type: TriggerStrategy.POLLING,
props: {
pollingInterval: Property.StaticDropdown({
displayName: 'Polling Interval',
description: 'How frequently to check for new Bitlinks.',
required: false,
defaultValue: '5',
options: {
disabled: false,
options: [
{ label: 'Every 1 minute', value: '1' },
{ label: 'Every 5 minutes', value: '5' },
{ label: 'Every 15 minutes', value: '15' },
{ label: 'Every 30 minutes', value: '30' },
{ label: 'Every hour', value: '60' },
],
},
}),
group_guid: groupGuid,
titleFilter: Property.ShortText({
displayName: 'Title Filter (Optional)',
description: 'Only trigger for Bitlinks containing this text in their title.',
required: false,
}),
tagFilter: Property.ShortText({
displayName: 'Tag Filter (Optional)',
description: 'Only trigger for Bitlinks containing this tag.',
required: false,
}),
includeArchived: Property.Checkbox({
displayName: 'Include Archived Bitlinks',
description: 'Include archived Bitlinks in monitoring.',
required: false,
defaultValue: false,
}),
},
async onEnable(context) {
const { group_guid } = context.propsValue;
const { accessToken } = context.auth.props;
try {
const response = await bitlyApiCall<{ links: BitlyLink[] }>({
auth: { accessToken },
method: HttpMethod.GET,
resourceUri: `/groups/${group_guid}/bitlinks`,
query: {
size: 50,
archived: context.propsValue.includeArchived ? 'both' : 'off',
},
});
const linkIds = response.links.map((link) => link.id);
await context.store.put<string[]>(LAST_BITLINK_IDS_KEY, linkIds);
console.log(`Bitly New Bitlink trigger initialized with ${linkIds.length} existing links`);
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error(
'Authentication failed: Please check your access token. Make sure your token has permission to access Bitlinks.'
);
}
if (error.response?.status === 403) {
throw new Error(
'Access denied: You do not have permission to list Bitlinks. Please check your Bitly account permissions.'
);
}
throw new Error(
`Failed to initialize Bitlink monitoring: ${error.message || 'Unknown error occurred'}. Please check your Bitly connection.`
);
}
},
async onDisable() {
console.log('Bitly New Bitlink trigger disabled and cleaned up');
},
async run(context) {
const { group_guid, titleFilter, tagFilter, includeArchived } = context.propsValue;
const { accessToken } = context.auth.props;
try {
const previousLinkIds = await context.store.get<string[]>(LAST_BITLINK_IDS_KEY) || [];
const response = await bitlyApiCall<{ links: BitlyLink[] }>({
auth: { accessToken },
method: HttpMethod.GET,
resourceUri: `/groups/${group_guid}/bitlinks`,
query: {
size: 50,
archived: includeArchived ? 'both' : 'off',
},
});
const allLinks = response.links || [];
const currentLinkIds = allLinks.map((l) => l.id);
await context.store.put<string[]>(LAST_BITLINK_IDS_KEY, currentLinkIds);
let newLinks = allLinks.filter((link) => !previousLinkIds.includes(link.id));
if (titleFilter && titleFilter.trim()) {
const filterText = titleFilter.trim().toLowerCase();
newLinks = newLinks.filter((link) =>
link.title && link.title.toLowerCase().includes(filterText)
);
}
if (tagFilter && tagFilter.trim()) {
const filterTag = tagFilter.trim().toLowerCase();
newLinks = newLinks.filter((link) =>
link.tags && Array.isArray(link.tags) &&
link.tags.some(tag => tag.toLowerCase().includes(filterTag))
);
}
const processedLinks = newLinks.map((link) => ({
id: link.id,
link: link.link,
longUrl: link.long_url,
title: link.title,
tags: link.tags || [],
isArchived: link.archived,
createdAt: link.created_at,
modifiedAt: link.modified_at,
customBitlinks: link.custom_bitlinks || [],
references: {
group: link.references?.group,
},
rawLinkData: link,
triggerInfo: {
detectedAt: new Date().toISOString(),
source: 'bitly',
type: 'new_bitlink',
},
}));
return processedLinks;
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error(
'Authentication failed: Your access token may have expired. Please check your Bitly authentication.'
);
}
if (error.response?.status === 429) {
throw new Error(
'Rate limit exceeded: Bitly API rate limit reached. Consider increasing your polling interval.'
);
}
if (error.response?.status === 403) {
throw new Error(
'Access denied: You do not have permission to list Bitlinks. Please check your account permissions.'
);
}
throw new Error(
`Failed to check for new Bitlinks: ${error.message || 'Unknown error occurred'}. The trigger will retry on the next polling interval.`
);
}
},
async test(context) {
const { group_guid, includeArchived } = context.propsValue;
const { accessToken } = context.auth.props;
try {
const response = await bitlyApiCall<{ links: BitlyLink[] }>({
auth: { accessToken },
method: HttpMethod.GET,
resourceUri: `/groups/${group_guid}/bitlinks`,
query: {
size: 1,
archived: includeArchived ? 'both' : 'off',
},
});
const links = response.links || [];
if (links.length > 0) {
const testLink = links[0];
return [
{
id: testLink.id,
link: testLink.link,
longUrl: testLink.long_url,
title: testLink.title,
tags: testLink.tags || [],
isArchived: testLink.archived,
createdAt: testLink.created_at,
modifiedAt: testLink.modified_at,
customBitlinks: testLink.custom_bitlinks || [],
references: {
group: testLink.references?.group,
},
rawLinkData: testLink,
triggerInfo: {
detectedAt: new Date().toISOString(),
source: 'bitly',
type: 'new_bitlink',
},
},
];
} else {
return [
{
id: 'bit.ly/test123',
link: 'https://bit.ly/test123',
longUrl: 'https://example.com/very-long-url',
title: 'Sample Bitlink',
tags: ['sample', 'test'],
isArchived: false,
createdAt: '2025-01-15T10:00:00+0000',
modifiedAt: '2025-01-15T10:00:00+0000',
customBitlinks: [],
references: {
group: 'Ba1bc23dE4F',
},
rawLinkData: {
id: 'bit.ly/test123',
link: 'https://bit.ly/test123',
long_url: 'https://example.com/very-long-url',
title: 'Sample Bitlink',
tags: ['sample', 'test'],
archived: false,
created_at: '2025-01-15T10:00:00+0000',
modified_at: '2025-01-15T10:00:00+0000',
custom_bitlinks: [],
references: {
group: 'Ba1bc23dE4F',
},
},
triggerInfo: {
detectedAt: new Date().toISOString(),
source: 'bitly',
type: 'new_bitlink',
},
},
];
}
} catch (error: any) {
return [
{
id: 'bit.ly/test123',
link: 'https://bit.ly/test123',
longUrl: 'https://example.com/test-url',
title: 'Test Bitlink',
tags: ['test'],
isArchived: false,
createdAt: '2025-01-15T10:00:00+0000',
modifiedAt: '2025-01-15T10:00:00+0000',
customBitlinks: [],
references: {
group: 'Ba1bc23dE4F',
},
rawLinkData: {
id: 'bit.ly/test123',
link: 'https://bit.ly/test123',
long_url: 'https://example.com/test-url',
title: 'Test Bitlink',
tags: ['test'],
archived: false,
created_at: '2025-01-15T10:00:00+0000',
modified_at: '2025-01-15T10:00:00+0000',
custom_bitlinks: [],
references: {
group: 'Ba1bc23dE4F',
},
},
triggerInfo: {
detectedAt: new Date().toISOString(),
source: 'bitly',
type: 'new_bitlink',
},
},
];
}
},
sampleData: {
id: 'bit.ly/3XYZ123',
link: 'https://bit.ly/3XYZ123',
longUrl: 'https://example.com/marketing-campaign-landing-page',
title: 'Marketing Campaign Landing Page',
tags: ['marketing', 'campaign', '2025'],
isArchived: false,
createdAt: '2025-01-15T09:30:00+0000',
modifiedAt: '2025-01-15T09:30:00+0000',
customBitlinks: [],
references: {
group: 'Ba1bc23dE4F',
},
rawLinkData: {
id: 'bit.ly/3XYZ123',
link: 'https://bit.ly/3XYZ123',
long_url: 'https://example.com/marketing-campaign-landing-page',
title: 'Marketing Campaign Landing Page',
tags: ['marketing', 'campaign', '2025'],
archived: false,
created_at: '2025-01-15T09:30:00+0000',
modified_at: '2025-01-15T09:30:00+0000',
custom_bitlinks: [],
references: {
group: 'Ba1bc23dE4F',
},
},
triggerInfo: {
detectedAt: '2025-01-15T09:30:00.000Z',
source: 'bitly',
type: 'new_bitlink',
},
},
});
/**
* Interface for Bitly link data structure
*/
interface BitlyLink {
id: string;
link: string;
long_url: string;
title: string;
tags: string[];
archived: boolean;
created_at: string;
modified_at: string;
custom_bitlinks: string[];
references: {
group: string;
};
[key: string]: any;
}