Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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://).": "短縮する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)": "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時間ごと"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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": "Каждый час"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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 ],
|
||||
});
|
||||
@@ -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'}`
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -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'}`
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -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'}`
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -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'}`
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -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'}`
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -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,
|
||||
});
|
||||
@@ -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}`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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}` };
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user