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,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Kontakte in Microsoft 365 Personen verwalten",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Melden Sie sich bei [Microsoft Azure Portal](https://portal.azure.com/).\n. Von der linken Seitenleiste gehen Sie zur **Microsoft Enfra ID**.\n3. Unter **Verwalten** klicken Sie auf **App-Registrierungen**.\n4. Klicken Sie auf die **Neue Registrierung** Schaltfläche.\n5. Geben Sie einen **Name** für Ihre App ein.\n6. Für **unterstützte Kontotypen**, auswählen:\n - **Konten in jedem Organisationsverzeichnis (jeder Microsoft-Entra-ID-Mieter - Multitenant) und persönlichen Microsoft-Konten**\n - Oder wählen Sie nach Ihren Anforderungen aus.\n7. In **Umleitungs-URI** wählen Sie **Web** und fügen Sie die angegebene URL hinzu.\n8. Klicken Sie auf **Registrieren**.\n9. Nach der Registrierung werden Sie zur Übersichtsseite der App weitergeleitet. Kopieren Sie die **Application (Client) ID**.\n10. Vom linken Menü gehen Sie zu **Zertifikate & Geheimnisse**.\n - Unter **Kundengeheimnis**, klicke **Neues Kundengeheimnis**.\n - Geben Sie eine Beschreibung an, setzen Sie ein Ablaufdatum und klicken Sie auf **Hinzufügen**.\n - Kopieren Sie den **Wert** des Client-Geheimnisses (dies wird nicht wieder angezeigt).\n11. Gehe zu **API Berechtigungen** vom linken Menü.\n - Klicke **Berechtigung hinzufügen**.\n - Wähle **Microsoft Graph** → **delegierte Berechtigungen**.\n - Fügen Sie folgende Bereiche hinzu:\n - Kontakte. eadWrite\n - offline_access \n - Klicken Sie auf **Berechtigungen hinzufügen**.\n12. Kopieren Sie Ihre **Client-ID** und **Client-Geheimnis**.\n",
|
||||
"Create a Contact": "Kontakt erstellen",
|
||||
"Delete a Contact": "Kontakt löschen",
|
||||
"Update a Contact": "Kontakt aktualisieren",
|
||||
"Create a Contact Folder": "Kontaktordner erstellen",
|
||||
"Get a Contact Folder": "Kontakt-Ordner anfordern",
|
||||
"Search Contacts": "Kontakte suchen",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "Erstellen Sie einen neuen Kontakt in People mit detaillierten Attributen (E-Mail, Telefon, Adresse, etc.).",
|
||||
"Permanently remove a contact.": "Kontakt dauerhaft entfernen.",
|
||||
"Modify fields of an existing contact.": "Felder eines bestehenden Kontakts ändern.",
|
||||
"Organize contacts by adding a new contact folder.": "Organisieren Sie Kontakte durch Hinzufügen eines neuen Kontaktordners.",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "Abrufen von Metadaten (Name, ID) eines angegebenen Kontaktordners.",
|
||||
"Find contacts by name, email, or other properties.": "Suchen Sie Kontakte nach Namen, E-Mail oder anderen Eigenschaften.",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Display Name": "Anzeigename",
|
||||
"Given Name": "Vorname",
|
||||
"Middle Name": "Mittlerer Name",
|
||||
"Surname": "Nachname",
|
||||
"Email Addresses": "E-Mail-Adressen",
|
||||
"Mobile Phone": "Handy",
|
||||
"Assistant Name": "Assistentenname",
|
||||
"Birthday": "Geburtstag",
|
||||
"Business Street": "Geschäftsstraße",
|
||||
"Business City": "Business-Stadt",
|
||||
"Business State": "Betriebszustand",
|
||||
"Business Postal Code": "Postleitzahl",
|
||||
"Business Country or Region": "Wirtschaftsland oder Region",
|
||||
"Children": "Kinder",
|
||||
"Company Name": "Firmenname",
|
||||
"Department": "Abteilung",
|
||||
"Home Street": "Hauptstraße",
|
||||
"Home City": "Heimatstadt",
|
||||
"Home State": "Heimatstaat",
|
||||
"Home Postal Code": "Postleitzahl",
|
||||
"Home Country or Region": "Heimatland oder Region",
|
||||
"Instant Messaging Addresses": "Adressen für Instant Messaging",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "Job Titel",
|
||||
"Manager": "Manager",
|
||||
"Nick Name": "Spitzname",
|
||||
"Office Location": "Bürostandort",
|
||||
"Other Street": "Andere Straße",
|
||||
"Other City": "Andere Stadt",
|
||||
"Other State": "Anderer Staat",
|
||||
"Other Postal Code": "Andere Postleitzahl",
|
||||
"Other Country or Region": "Anderes Land oder Region",
|
||||
"Parent Folder": "Eltern-Ordner",
|
||||
"Personal Notes": "Persönliche Notizen",
|
||||
"Profession": "Beruf",
|
||||
"Spouse Name": "Name des Ehepartners",
|
||||
"Title": "Titel",
|
||||
"Contact": "Kontakt",
|
||||
"Contact Folder Name": "Kontaktordnername",
|
||||
"Contact Folder": "Kontakt-Ordner",
|
||||
"Search Value": "Suchwert",
|
||||
"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)",
|
||||
"Select a parent folder": "Übergeordneten Ordner auswählen",
|
||||
"Select a Contact": "Kontakt auswählen",
|
||||
"Select a contact folder": "Kontaktordner auswählen",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
|
||||
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD",
|
||||
"New or Updated Contact": "Neuer oder aktualisierter Kontakt",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "Wird ausgelöst, wenn ein Kontakt in Microsoft 365 People erstellt oder aktualisiert wird."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Administrar contactos en Microsoft 365 Personas",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Contacts.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n",
|
||||
"Create a Contact": "Crear un contacto",
|
||||
"Delete a Contact": "Eliminar un Contacto",
|
||||
"Update a Contact": "Actualizar un contacto",
|
||||
"Create a Contact Folder": "Crear una carpeta de contactos",
|
||||
"Get a Contact Folder": "Obtener una carpeta de contactos",
|
||||
"Search Contacts": "Buscar contactos",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "Crear un nuevo contacto en Personas con atributos detallados (correo electrónico, teléfono, dirección, etc.).",
|
||||
"Permanently remove a contact.": "Eliminar permanentemente un contacto.",
|
||||
"Modify fields of an existing contact.": "Modificar campos de un contacto existente.",
|
||||
"Organize contacts by adding a new contact folder.": "Organizar contactos añadiendo una nueva carpeta de contactos.",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "Recuperar metadatos (nombre, ID) de una carpeta de contacto especificada.",
|
||||
"Find contacts by name, email, or other properties.": "Encuentre contactos por nombre, correo electrónico u otras propiedades.",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Display Name": "Mostrar nombre",
|
||||
"Given Name": "Nombre dado",
|
||||
"Middle Name": "Segundo nombre",
|
||||
"Surname": "Apellido",
|
||||
"Email Addresses": "Direcciones de email",
|
||||
"Mobile Phone": "Teléfono móvil",
|
||||
"Assistant Name": "Nombre del Asistente",
|
||||
"Birthday": "Cumpleaños",
|
||||
"Business Street": "Calle de negocios",
|
||||
"Business City": "Ciudad de los negocios",
|
||||
"Business State": "Estado de negocio",
|
||||
"Business Postal Code": "Código postal comercial",
|
||||
"Business Country or Region": "País de negocios o región",
|
||||
"Children": "Niños",
|
||||
"Company Name": "Nombre De La Empresa",
|
||||
"Department": "Departamento",
|
||||
"Home Street": "Calle Home",
|
||||
"Home City": "Ciudad de casa",
|
||||
"Home State": "Estado de origen",
|
||||
"Home Postal Code": "Código postal de inicio",
|
||||
"Home Country or Region": "País de origen o región",
|
||||
"Instant Messaging Addresses": "Direcciones de mensajería instantánea",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "Trabajo",
|
||||
"Manager": "Gerente",
|
||||
"Nick Name": "Apodo",
|
||||
"Office Location": "Ubicación de la oficina",
|
||||
"Other Street": "Otra calle",
|
||||
"Other City": "Otra ciudad",
|
||||
"Other State": "Otro Estado",
|
||||
"Other Postal Code": "Otro código postal",
|
||||
"Other Country or Region": "Otro país o región",
|
||||
"Parent Folder": "Carpeta padre",
|
||||
"Personal Notes": "Notas personales",
|
||||
"Profession": "Profesión",
|
||||
"Spouse Name": "Nombre de Spouse",
|
||||
"Title": "Título",
|
||||
"Contact": "Contacto",
|
||||
"Contact Folder Name": "Nombre de la carpeta de contactos",
|
||||
"Contact Folder": "Carpeta de contacto",
|
||||
"Search Value": "Valor de búsqueda",
|
||||
"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)",
|
||||
"Select a parent folder": "Seleccione una carpeta padre",
|
||||
"Select a Contact": "Seleccione un contacto",
|
||||
"Select a contact folder": "Seleccione una carpeta de contactos",
|
||||
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
||||
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO",
|
||||
"New or Updated Contact": "Contacto nuevo o actualizado",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "Dispara cuando un contacto se crea o actualiza en Microsoft 365 personas."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Gérer les contacts dans Microsoft 365 Personnes",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Contacts.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n",
|
||||
"Create a Contact": "Créer un contact",
|
||||
"Delete a Contact": "Supprimer un contact",
|
||||
"Update a Contact": "Mettre à jour un contact",
|
||||
"Create a Contact Folder": "Créer un dossier de contact",
|
||||
"Get a Contact Folder": "Obtenir un dossier de contact",
|
||||
"Search Contacts": "Rechercher dans les contacts",
|
||||
"Custom API Call": "Appel d'API personnalisé",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "Créer un nouveau contact dans les Personnes avec des attributs détaillés (e-mail, téléphone, adresse, etc.).",
|
||||
"Permanently remove a contact.": "Supprimer définitivement un contact.",
|
||||
"Modify fields of an existing contact.": "Modifier les champs d'un contact existant.",
|
||||
"Organize contacts by adding a new contact folder.": "Organiser les contacts en ajoutant un nouveau dossier de contact.",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "Récupérer les métadonnées (nom, ID) d'un dossier de contact spécifié.",
|
||||
"Find contacts by name, email, or other properties.": "Trouver des contacts par nom, email ou autres propriétés.",
|
||||
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un endpoint spécifique",
|
||||
"Display Name": "Display Name",
|
||||
"Given Name": "Nom donné",
|
||||
"Middle Name": "Deuxième prénom",
|
||||
"Surname": "Nom de famille",
|
||||
"Email Addresses": "Adresses e-mail",
|
||||
"Mobile Phone": "Téléphone mobile",
|
||||
"Assistant Name": "Nom de l'assistant",
|
||||
"Birthday": "Date d'anniversaire",
|
||||
"Business Street": "Rue des Affaires",
|
||||
"Business City": "Ville d'affaires",
|
||||
"Business State": "Etat de l'Entreprise",
|
||||
"Business Postal Code": "Code postal de l'entreprise",
|
||||
"Business Country or Region": "Pays d'affaires ou région",
|
||||
"Children": "Enfants",
|
||||
"Company Name": "Nom de l’entreprise",
|
||||
"Department": "Service",
|
||||
"Home Street": "Rue de la maison",
|
||||
"Home City": "Ville natale",
|
||||
"Home State": "État de la maison",
|
||||
"Home Postal Code": "Code postal de la maison",
|
||||
"Home Country or Region": "Pays ou région d'origine",
|
||||
"Instant Messaging Addresses": "Adresses de messagerie instantanée",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "Titre du poste",
|
||||
"Manager": "Responsable",
|
||||
"Nick Name": "Pseudo",
|
||||
"Office Location": "Lieu du bureau",
|
||||
"Other Street": "Autre Rue",
|
||||
"Other City": "Autre Ville",
|
||||
"Other State": "Autre État",
|
||||
"Other Postal Code": "Autre code postal",
|
||||
"Other Country or Region": "Autre pays ou région",
|
||||
"Parent Folder": "Dossier parent",
|
||||
"Personal Notes": "Notes personnelles",
|
||||
"Profession": "Profession",
|
||||
"Spouse Name": "Nom de l'épouse",
|
||||
"Title": "Titre de la page",
|
||||
"Contact": "Contacter",
|
||||
"Contact Folder Name": "Nom du dossier de contact",
|
||||
"Contact Folder": "Dossier des contacts",
|
||||
"Search Value": "Valeur de la recherche",
|
||||
"Method": "Méthode",
|
||||
"Headers": "En-têtes",
|
||||
"Query Parameters": "Paramètres de requête",
|
||||
"Body": "Corps",
|
||||
"Response is Binary ?": "La réponse est Binaire ?",
|
||||
"No Error on Failure": "Aucune erreur en cas d'échec",
|
||||
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
|
||||
"Select a parent folder": "Sélectionnez un dossier parent",
|
||||
"Select a Contact": "Sélectionnez un contact",
|
||||
"Select a contact folder": "Sélectionnez un dossier de contact",
|
||||
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
|
||||
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New or Updated Contact": "Contact nouveau ou mis à jour",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "Déclenche lorsqu'un contact est créé ou mis à jour dans Microsoft 365 People."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Microsoft 365ユーザーの連絡先を管理",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Contacts.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n",
|
||||
"Create a Contact": "連絡先を作成",
|
||||
"Delete a Contact": "連絡先を削除",
|
||||
"Update a Contact": "連絡先を更新",
|
||||
"Create a Contact Folder": "連絡先フォルダを作成",
|
||||
"Get a Contact Folder": "連絡先フォルダを取得",
|
||||
"Search Contacts": "連絡先を検索",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "詳細な属性(メール、電話、住所など)を持つ人に新しい連絡先を作成します。",
|
||||
"Permanently remove a contact.": "コンタクトを完全に削除します。",
|
||||
"Modify fields of an existing contact.": "既存の連絡先のフィールドを変更します。",
|
||||
"Organize contacts by adding a new contact folder.": "新しい連絡先フォルダを追加して連絡先を整理します。",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "指定した連絡先フォルダのメタデータ (名前、ID) を取得します。",
|
||||
"Find contacts by name, email, or other properties.": "名前、電子メール、またはその他のプロパティで連絡先を検索します。",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Display Name": "表示名",
|
||||
"Given Name": "与えられた名前",
|
||||
"Middle Name": "ミドルネーム",
|
||||
"Surname": "姓",
|
||||
"Email Addresses": "メールアドレス",
|
||||
"Mobile Phone": "携帯電話",
|
||||
"Assistant Name": "アシスタント名",
|
||||
"Birthday": "誕生日",
|
||||
"Business Street": "Business Street",
|
||||
"Business City": "市区町村名",
|
||||
"Business State": "ビジネス状態",
|
||||
"Business Postal Code": "ビジネス郵便番号",
|
||||
"Business Country or Region": "事業国または地域",
|
||||
"Children": "子供",
|
||||
"Company Name": "会社名",
|
||||
"Department": "部門",
|
||||
"Home Street": "ホーム",
|
||||
"Home City": "在住都市",
|
||||
"Home State": "本国の状態",
|
||||
"Home Postal Code": "在宅郵便番号",
|
||||
"Home Country or Region": "自宅の国または地域",
|
||||
"Instant Messaging Addresses": "インスタントメッセージアドレス",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "役職名",
|
||||
"Manager": "マネージャー",
|
||||
"Nick Name": "ニック名",
|
||||
"Office Location": "事務所の場所",
|
||||
"Other Street": "その他の番地",
|
||||
"Other City": "その他の市区町村名",
|
||||
"Other State": "都道府県(その他)",
|
||||
"Other Postal Code": "その他の郵便番号",
|
||||
"Other Country or Region": "その他の国または地域",
|
||||
"Parent Folder": "親フォルダ",
|
||||
"Personal Notes": "パーソナルノート",
|
||||
"Profession": "プロフェッショナル",
|
||||
"Spouse Name": "配偶者名",
|
||||
"Title": "タイトル",
|
||||
"Contact": "お問い合わせ",
|
||||
"Contact Folder Name": "連絡先フォルダ名",
|
||||
"Contact Folder": "連絡先フォルダ",
|
||||
"Search Value": "検索値",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Select a parent folder": "親フォルダを選択",
|
||||
"Select a Contact": "連絡先を選択",
|
||||
"Select a contact folder": "連絡先フォルダを選択",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭",
|
||||
"New or Updated Contact": "新規または更新された連絡先",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "連絡先が Microsoft 365 Peopleで作成または更新されたときにトリガーされます。"
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Beheer contacten in Microsoft 365 mensen",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Log in bij [Microsoft Azure Portal](https://portal.azure.com/).\n. Ga naar **Microsoft Enfra ID**.\n3. Onder **Beheren**, klik op **App registraties**.\n4. Klik op de **Nieuwe registratie** knop.\n5. Voer een **Naam** in voor uw app.\n6. Voor **Ondersteunde accounttypen**, kies keuze:\n - **Accounts in elke map van de organisatie (Any Microsoft Entra ID-tenant - Multitenant) en persoonlijke Microsoft accounts**\n - Of selecteer gebaseerd op uw vereiste.\n7. In **Redirect URI** selecteer **Web** en voeg de opgegeven URL toe.\n8. Klik op **Register**.\n9. Na registratie wordt u doorverwezen naar de overzichtspagina. Kopieer de **Applicatie (client) ID**.\n10. Vanuit het linkermenu ga naar **Certificaten & geheimen**.\n - Klik onder **Client geheimen** op **Nieuwe client geheim**.\n - Geef een beschrijving, verloop, en klik **Toevoegen**.\n - Kopieer de **Waarde** van de client secret (dit zal niet meer worden getoond).\n11. Ga naar **API-rechten** vanuit het linkermenu.\n - Klik **Een machtiging toevoegen**.\n - Selecteer **Microsoft Graph** → **gedelegeerde rechten**.\n - Voeg de volgende toepassingsgebieden toe:\n - Contacten. eadWrite\n - offline_access \n - Klik **Permissies toevoegen**.\n12. Kopieer uw **Client ID** en **Client Secret**.\n",
|
||||
"Create a Contact": "Een contactpersoon aanmaken",
|
||||
"Delete a Contact": "Verwijder een contactpersoon",
|
||||
"Update a Contact": "Een contactpersoon bijwerken",
|
||||
"Create a Contact Folder": "Maak een contactpersonenmap",
|
||||
"Get a Contact Folder": "Een contactpersonenmap verkrijgen",
|
||||
"Search Contacts": "Contactpersonen zoeken",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "Maak een nieuw contact aan in Mensen met gedetailleerde attributen (e-mail, telefoon, adres, enz.).",
|
||||
"Permanently remove a contact.": "Verwijder een contact definitief.",
|
||||
"Modify fields of an existing contact.": "Velden van een bestaand contact wijzigen.",
|
||||
"Organize contacts by adding a new contact folder.": "Contacten organiseren door een nieuwe contactmap toe te voegen.",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "Metadata ophalen (naam, ID) van een opgegeven map met contactpersonen.",
|
||||
"Find contacts by name, email, or other properties.": "Contactpersonen zoeken op naam, e-mail of andere eigenschappen.",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Display Name": "Weergavenaam",
|
||||
"Given Name": "Gegeven naam",
|
||||
"Middle Name": "Tweede naam",
|
||||
"Surname": "Achternaam",
|
||||
"Email Addresses": "E-mail adressen",
|
||||
"Mobile Phone": "Telefoon (mobiel)",
|
||||
"Assistant Name": "Assistent Naam",
|
||||
"Birthday": "Verjaardag",
|
||||
"Business Street": "Zakelijke straat",
|
||||
"Business City": "Zakelijke stad",
|
||||
"Business State": "Zakelijke status",
|
||||
"Business Postal Code": "Zakelijke postcode",
|
||||
"Business Country or Region": "Zakelijk land of regio",
|
||||
"Children": "Onderliggende",
|
||||
"Company Name": "Bedrijfsnaam",
|
||||
"Department": "Afdeling",
|
||||
"Home Street": "Thuis straat",
|
||||
"Home City": "Thuis stad",
|
||||
"Home State": "Thuis status",
|
||||
"Home Postal Code": "Home Postal Code",
|
||||
"Home Country or Region": "Thuis land of regio",
|
||||
"Instant Messaging Addresses": "Instant Messaging adressen",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "Job titel",
|
||||
"Manager": "Beheerder",
|
||||
"Nick Name": "Naam naam",
|
||||
"Office Location": "Kantoor locatie",
|
||||
"Other Street": "Bezoekadres straat",
|
||||
"Other City": "Bezoekadres Plaats",
|
||||
"Other State": "Bezoekadres status",
|
||||
"Other Postal Code": "Andere postcode",
|
||||
"Other Country or Region": "Ander land of regio",
|
||||
"Parent Folder": "Bovenliggende map",
|
||||
"Personal Notes": "Persoonlijke notities",
|
||||
"Profession": "Speciaal",
|
||||
"Spouse Name": "Naam echtgenote",
|
||||
"Title": "Aanspreektitel",
|
||||
"Contact": "Contactpersoon",
|
||||
"Contact Folder Name": "Naam contactpersoonmap",
|
||||
"Contact Folder": "Contactpersonen map",
|
||||
"Search Value": "Waarde zoeken",
|
||||
"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)",
|
||||
"Select a parent folder": "Selecteer een bovenliggende map",
|
||||
"Select a Contact": "Selecteer een contactpersoon",
|
||||
"Select a contact folder": "Selecteer een map met contactpersonen",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
|
||||
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD",
|
||||
"New or Updated Contact": "Nieuw of bijgewerkt contact",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "Triggert wanneer een contact wordt aangemaakt of bijgewerkt in Microsoft 365 mensen."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Gerenciar contatos no Microsoft 365 People",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Entre no [Microsoft Azure Portal](https://portal.azure.com/).\n. Na barra lateral esquerda, vá até **Microsoft Enfra ID**.\n3. Sob **Gerenciar**, clique em **Aplicativos registrados**.\n4. Clique no botão **Novo registro**.\n5. Digite um **Nome** para o seu aplicativo.\n6. Para **Tipos de conta suportados**, escolha:\n - **Contas em qualquer diretório organizacional (qualquer inquilino de ID da Microsoft Entra - Multitenant) e contas pessoais da Microsoft**\n - Ou selecione com base nos seus requisitos.\n7. Em **URI de redirecionamento**, selecione **Web** e adicione a URL fornecida.\n8. Clique em **Registrar**.\n9. Após o registro, você será redirecionado para a página de visão geral do aplicativo. Copie o **aplicativo (cliente) ID**.\n10. Do menu à esquerda, vá para **Certificados e segredos**.\n - Em **Segredos do Cliente**, clique em **Novo segredo do Cliente**.\n - Fornece uma descrição, define um vencimento e clique em **Adicionar**.\n - Copiar o **Valor** do segredo do cliente (não será mostrado novamente).\n11. Vá para **Permissões da API** no menu à esquerda.\n - Clique em **Adicionar permissão**.\n - Selecione **Microsoft Graph** → **Delegated permissions**.\n - Adicionar os seguintes escopos:\n - Contatos. eadWrite\n - offline_access \n - Clique em **Adicionar permissões**.\n12. Copie seu **ID do Cliente** e **Segredo do Cliente**.\n",
|
||||
"Create a Contact": "Criar um contato",
|
||||
"Delete a Contact": "Excluir um contato",
|
||||
"Update a Contact": "Atualizar um contato",
|
||||
"Create a Contact Folder": "Criar uma pasta de contato",
|
||||
"Get a Contact Folder": "Obter uma pasta de contato",
|
||||
"Search Contacts": "Pesquisar contatos",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "Criar um novo contato em Pessoas com atributos detalhados (e-mail, telefone, etc.).",
|
||||
"Permanently remove a contact.": "Remover um contato permanentemente.",
|
||||
"Modify fields of an existing contact.": "Modificar os campos de um contato existente.",
|
||||
"Organize contacts by adding a new contact folder.": "Organize os contatos adicionando uma nova pasta de contatos.",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "Recuperar metadados (nome, ID) de uma pasta de contatos especificada.",
|
||||
"Find contacts by name, email, or other properties.": "Encontrar contatos por nome, e-mail ou outras propriedades.",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Display Name": "Nome de Exibição",
|
||||
"Given Name": "Nome Dado",
|
||||
"Middle Name": "Nome do Meio",
|
||||
"Surname": "Sobrenome",
|
||||
"Email Addresses": "Endereços de e-mail",
|
||||
"Mobile Phone": "Telefone Celular",
|
||||
"Assistant Name": "Nome do Assistente",
|
||||
"Birthday": "Aniversário",
|
||||
"Business Street": "Rua comercial",
|
||||
"Business City": "Cidade Empresarial",
|
||||
"Business State": "Estado Comercial",
|
||||
"Business Postal Code": "Código Postal de Negócios",
|
||||
"Business Country or Region": "País comercial ou região",
|
||||
"Children": "Crianças",
|
||||
"Company Name": "Nome da Empresa",
|
||||
"Department": "Departamento",
|
||||
"Home Street": "Rua Inicial",
|
||||
"Home City": "Cidade residencial",
|
||||
"Home State": "Estado residencial",
|
||||
"Home Postal Code": "Código Postal",
|
||||
"Home Country or Region": "País de origem ou região",
|
||||
"Instant Messaging Addresses": "Endereços de mensagens instantâneas",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "Título do Cargo",
|
||||
"Manager": "Administrador",
|
||||
"Nick Name": "Nome do Apelido",
|
||||
"Office Location": "Local do Escritório",
|
||||
"Other Street": "Endereço Alternativo",
|
||||
"Other City": "Cidade Alternativo",
|
||||
"Other State": "Estado Alternativo",
|
||||
"Other Postal Code": "Outro Código Postal",
|
||||
"Other Country or Region": "Outro país ou região",
|
||||
"Parent Folder": "Pasta pai",
|
||||
"Personal Notes": "Notas Pessoais",
|
||||
"Profession": "Profissão",
|
||||
"Spouse Name": "Nome do Spouse",
|
||||
"Title": "Título",
|
||||
"Contact": "contato",
|
||||
"Contact Folder Name": "Nome da pasta de contato",
|
||||
"Contact Folder": "Pasta de contato",
|
||||
"Search Value": "Pesquisar Valor",
|
||||
"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)",
|
||||
"Select a parent folder": "Selecione uma pasta pai",
|
||||
"Select a Contact": "Selecione um contato",
|
||||
"Select a contact folder": "Selecione uma pasta de contato",
|
||||
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
|
||||
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA",
|
||||
"New or Updated Contact": "Contato novo ou atualizado",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "Aciona quando um contato é criado ou atualizado nas pessoas do Microsoft 365."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Manage contacts in Microsoft 365 People",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Contacts.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n",
|
||||
"Create a Contact": "Create a Contact",
|
||||
"Delete a Contact": "Delete a Contact",
|
||||
"Update a Contact": "Update a Contact",
|
||||
"Create a Contact Folder": "Create a Contact Folder",
|
||||
"Get a Contact Folder": "Get a Contact Folder",
|
||||
"Search Contacts": "Search Contacts",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "Create a new contact in People with detailed attributes (email, phone, address, etc.).",
|
||||
"Permanently remove a contact.": "Permanently remove a contact.",
|
||||
"Modify fields of an existing contact.": "Modify fields of an existing contact.",
|
||||
"Organize contacts by adding a new contact folder.": "Organize contacts by adding a new contact folder.",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "Retrieve metadata (name, ID) of a specified contact folder.",
|
||||
"Find contacts by name, email, or other properties.": "Find contacts by name, email, or other properties.",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Display Name": "Display Name",
|
||||
"Given Name": "Given Name",
|
||||
"Middle Name": "Middle Name",
|
||||
"Surname": "Surname",
|
||||
"Email Addresses": "Email Addresses",
|
||||
"Mobile Phone": "Mobile Phone",
|
||||
"Assistant Name": "Assistant Name",
|
||||
"Birthday": "Birthday",
|
||||
"Business Street": "Business Street",
|
||||
"Business City": "Business City",
|
||||
"Business State": "Business State",
|
||||
"Business Postal Code": "Business Postal Code",
|
||||
"Business Country or Region": "Business Country or Region",
|
||||
"Children": "Children",
|
||||
"Company Name": "Company Name",
|
||||
"Department": "Department",
|
||||
"Home Street": "Home Street",
|
||||
"Home City": "Home City",
|
||||
"Home State": "Home State",
|
||||
"Home Postal Code": "Home Postal Code",
|
||||
"Home Country or Region": "Home Country or Region",
|
||||
"Instant Messaging Addresses": "Instant Messaging Addresses",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "Job Title",
|
||||
"Manager": "Manager",
|
||||
"Nick Name": "Nick Name",
|
||||
"Office Location": "Office Location",
|
||||
"Other Street": "Other Street",
|
||||
"Other City": "Other City",
|
||||
"Other State": "Other State",
|
||||
"Other Postal Code": "Other Postal Code",
|
||||
"Other Country or Region": "Other Country or Region",
|
||||
"Parent Folder": "Parent Folder",
|
||||
"Personal Notes": "Personal Notes",
|
||||
"Profession": "Profession",
|
||||
"Spouse Name": "Spouse Name",
|
||||
"Title": "Title",
|
||||
"Contact": "Contact",
|
||||
"Contact Folder Name": "Contact Folder Name",
|
||||
"Contact Folder": "Contact Folder",
|
||||
"Search Value": "Search Value",
|
||||
"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)",
|
||||
"Select a parent folder": "Select a parent folder",
|
||||
"Select a Contact": "Select a Contact",
|
||||
"Select a contact folder": "Select a contact folder",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New or Updated Contact": "New or Updated Contact",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "Triggers when a contact is created or updated in Microsoft 365 People."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Manage contacts in Microsoft 365 People": "Manage contacts in Microsoft 365 People",
|
||||
"\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Contacts.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n",
|
||||
"Create a Contact": "Create a Contact",
|
||||
"Delete a Contact": "Delete a Contact",
|
||||
"Update a Contact": "Update a Contact",
|
||||
"Create a Contact Folder": "Create a Contact Folder",
|
||||
"Get a Contact Folder": "Get a Contact Folder",
|
||||
"Search Contacts": "Search Contacts",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Create a new contact in People with detailed attributes (email, phone, address, etc.).": "Create a new contact in People with detailed attributes (email, phone, address, etc.).",
|
||||
"Permanently remove a contact.": "Permanently remove a contact.",
|
||||
"Modify fields of an existing contact.": "Modify fields of an existing contact.",
|
||||
"Organize contacts by adding a new contact folder.": "Organize contacts by adding a new contact folder.",
|
||||
"Retrieve metadata (name, ID) of a specified contact folder.": "Retrieve metadata (name, ID) of a specified contact folder.",
|
||||
"Find contacts by name, email, or other properties.": "Find contacts by name, email, or other properties.",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Display Name": "显示名称",
|
||||
"Given Name": "Given Name",
|
||||
"Middle Name": "Middle Name",
|
||||
"Surname": "Surname",
|
||||
"Email Addresses": "Email Addresses",
|
||||
"Mobile Phone": "Mobile Phone",
|
||||
"Assistant Name": "Assistant Name",
|
||||
"Birthday": "Birthday",
|
||||
"Business Street": "Business Street",
|
||||
"Business City": "Business City",
|
||||
"Business State": "Business State",
|
||||
"Business Postal Code": "Business Postal Code",
|
||||
"Business Country or Region": "Business Country or Region",
|
||||
"Children": "Children",
|
||||
"Company Name": "Company Name",
|
||||
"Department": "Department",
|
||||
"Home Street": "Home Street",
|
||||
"Home City": "Home City",
|
||||
"Home State": "Home State",
|
||||
"Home Postal Code": "Home Postal Code",
|
||||
"Home Country or Region": "Home Country or Region",
|
||||
"Instant Messaging Addresses": "Instant Messaging Addresses",
|
||||
"Initials": "Initials",
|
||||
"Job Title": "Job Title",
|
||||
"Manager": "Manager",
|
||||
"Nick Name": "Nick Name",
|
||||
"Office Location": "Office Location",
|
||||
"Other Street": "Other Street",
|
||||
"Other City": "Other City",
|
||||
"Other State": "Other State",
|
||||
"Other Postal Code": "Other Postal Code",
|
||||
"Other Country or Region": "Other Country or Region",
|
||||
"Parent Folder": "父文件夹",
|
||||
"Personal Notes": "Personal Notes",
|
||||
"Profession": "Profession",
|
||||
"Spouse Name": "Spouse Name",
|
||||
"Title": "标题",
|
||||
"Contact": "Contact",
|
||||
"Contact Folder Name": "Contact Folder Name",
|
||||
"Contact Folder": "Contact Folder",
|
||||
"Search Value": "搜索值",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Select a parent folder": "Select a parent folder",
|
||||
"Select a Contact": "Select a Contact",
|
||||
"Select a contact folder": "Select a contact folder",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色",
|
||||
"New or Updated Contact": "New or Updated Contact",
|
||||
"Triggers when a contact is created or updated in Microsoft 365 People.": "Triggers when a contact is created or updated in Microsoft 365 People."
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import { createCustomApiCallAction } from '@activepieces/pieces-common';
|
||||
import { createPiece, OAuth2PropertyValue } from '@activepieces/pieces-framework';
|
||||
import { createContact } from './lib/actions/create-contact';
|
||||
import { createContactFolder } from './lib/actions/create-contact-folder';
|
||||
import { deleteContact } from './lib/actions/delete-contact';
|
||||
import { getContactFolder } from './lib/actions/get-contact-folder';
|
||||
import { searchContacts } from './lib/actions/search-contacts';
|
||||
import { updateContact } from './lib/actions/update-contact';
|
||||
import { microsoft365PeopleAuth } from './lib/common/auth';
|
||||
import { newOrUpdatedContact } from './lib/triggers/new-or-updated-contact';
|
||||
|
||||
export const microsoft365People = createPiece({
|
||||
displayName: 'Microsoft 365 People',
|
||||
description: 'Manage contacts in Microsoft 365 People',
|
||||
auth: microsoft365PeopleAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/microsoft-365-people.png',
|
||||
authors: ['LuizDMM'],
|
||||
actions: [
|
||||
createContact,
|
||||
deleteContact,
|
||||
updateContact,
|
||||
createContactFolder,
|
||||
getContactFolder,
|
||||
// Search Actions
|
||||
searchContacts,
|
||||
// Custom API call
|
||||
createCustomApiCallAction({
|
||||
auth: microsoft365PeopleAuth,
|
||||
baseUrl: () => 'https://graph.microsoft.com/v1.0/',
|
||||
authMapping: async (auth) => ({
|
||||
Authorization: `Bearer ${(auth as OAuth2PropertyValue).access_token}`,
|
||||
}),
|
||||
}),
|
||||
],
|
||||
triggers: [newOrUpdatedContact],
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PeopleAuth } from '../common/auth';
|
||||
import { microsoft365PeopleCommon } from '../common/common';
|
||||
|
||||
export const createContactFolder = createAction({
|
||||
auth: microsoft365PeopleAuth,
|
||||
name: 'createContactFolder',
|
||||
displayName: 'Create a Contact Folder',
|
||||
description: 'Organize contacts by adding a new contact folder.',
|
||||
props: microsoft365PeopleCommon.contactFolderProperties(),
|
||||
async run({ auth, propsValue }) {
|
||||
const contactFolder = {
|
||||
displayName: propsValue.displayName,
|
||||
parentFolderId: propsValue.parentFolder,
|
||||
};
|
||||
|
||||
return await microsoft365PeopleCommon.createContactFolder({
|
||||
auth,
|
||||
contactFolder,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,75 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { Contact, EmailAddress } from '@microsoft/microsoft-graph-types';
|
||||
import { microsoft365PeopleAuth } from '../common/auth';
|
||||
import { microsoft365PeopleCommon } from '../common/common';
|
||||
|
||||
export const createContact = createAction({
|
||||
auth: microsoft365PeopleAuth,
|
||||
name: 'createContact',
|
||||
displayName: 'Create a Contact',
|
||||
description:'Create a new contact in People with detailed attributes (email, phone, address, etc.).',
|
||||
props: microsoft365PeopleCommon.contactProperties(),
|
||||
async run({ auth, propsValue }) {
|
||||
const childrenNames: string[] =
|
||||
(propsValue.children as Array<{ name: string }> | undefined)?.map(
|
||||
(child) => child.name
|
||||
) ?? [];
|
||||
const emailAddresses: EmailAddress[] =
|
||||
(propsValue.emailAddresses as Array<EmailAddress> | undefined) ?? [];
|
||||
const imAddresses: string[] =
|
||||
(propsValue.imAddresses as Array<{ address: string }> | undefined)?.map(
|
||||
(im) => im.address
|
||||
) ?? [];
|
||||
|
||||
const contact: Contact = {
|
||||
assistantName: propsValue.assistantName,
|
||||
birthday: propsValue.birthday,
|
||||
businessAddress: {
|
||||
street: propsValue.businessStreet,
|
||||
city: propsValue.businessCity,
|
||||
state: propsValue.businessState,
|
||||
postalCode: propsValue.businessPostalCode,
|
||||
countryOrRegion: propsValue.businessCountryOrRegion,
|
||||
},
|
||||
children: childrenNames,
|
||||
companyName: propsValue.companyName,
|
||||
department: propsValue.department,
|
||||
displayName: propsValue.displayName,
|
||||
emailAddresses: emailAddresses,
|
||||
givenName: propsValue.givenName,
|
||||
homeAddress: {
|
||||
street: propsValue.homeStreet,
|
||||
city: propsValue.homeCity,
|
||||
state: propsValue.homeState,
|
||||
postalCode: propsValue.homePostalCode,
|
||||
countryOrRegion: propsValue.homeCountryOrRegion,
|
||||
},
|
||||
imAddresses,
|
||||
initials: propsValue.initials,
|
||||
jobTitle: propsValue.jobTitle,
|
||||
manager: propsValue.manager,
|
||||
middleName: propsValue.middleName,
|
||||
mobilePhone: propsValue.mobilePhone,
|
||||
nickName: propsValue.nickName,
|
||||
officeLocation: propsValue.officeLocation,
|
||||
otherAddress: {
|
||||
street: propsValue.otherStreet,
|
||||
city: propsValue.otherCity,
|
||||
state: propsValue.otherState,
|
||||
postalCode: propsValue.otherPostalCode,
|
||||
countryOrRegion: propsValue.otherCountryOrRegion,
|
||||
},
|
||||
parentFolderId: propsValue.parentFolder,
|
||||
personalNotes: propsValue.personalNotes,
|
||||
profession: propsValue.profession,
|
||||
spouseName: propsValue.spouseName,
|
||||
surname: propsValue.surname,
|
||||
title: propsValue.title,
|
||||
};
|
||||
|
||||
return await microsoft365PeopleCommon.createContact({
|
||||
auth,
|
||||
contact,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PeopleAuth } from '../common/auth';
|
||||
import { microsoft365PeopleCommon } from '../common/common';
|
||||
|
||||
export const deleteContact = createAction({
|
||||
auth: microsoft365PeopleAuth,
|
||||
name: 'deleteContact',
|
||||
displayName: 'Delete a Contact',
|
||||
description: 'Permanently remove a contact.',
|
||||
props: {
|
||||
contactId: microsoft365PeopleCommon.contactDropdown(),
|
||||
},
|
||||
async run(context) {
|
||||
const { contactId } = context.propsValue;
|
||||
if (!contactId) {
|
||||
throw new Error('Contact ID is required.');
|
||||
}
|
||||
|
||||
return await microsoft365PeopleCommon.deleteContact({
|
||||
auth: context.auth,
|
||||
contactId,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PeopleAuth } from '../common/auth';
|
||||
import { microsoft365PeopleCommon } from '../common/common';
|
||||
|
||||
export const getContactFolder = createAction({
|
||||
auth: microsoft365PeopleAuth,
|
||||
name: 'getContactFolder',
|
||||
displayName: 'Get a Contact Folder',
|
||||
description: 'Retrieve metadata (name, ID) of a specified contact folder.',
|
||||
props: { contactFolder: microsoft365PeopleCommon.contactFolderDropdown("Contact Folder", "Select a contact folder", true) },
|
||||
async run({ auth, propsValue }) {
|
||||
if (!propsValue.contactFolder) {
|
||||
throw new Error('Contact folder is required.');
|
||||
}
|
||||
return await microsoft365PeopleCommon.getContactFolder({
|
||||
auth,
|
||||
contactFolderId: propsValue.contactFolder,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PeopleAuth } from '../common/auth';
|
||||
import { microsoft365PeopleCommon } from '../common/common';
|
||||
|
||||
export const searchContacts = createAction({
|
||||
auth: microsoft365PeopleAuth,
|
||||
name: 'searchContacts',
|
||||
displayName: 'Search Contacts',
|
||||
description: 'Find contacts by name, email, or other properties.',
|
||||
props: {
|
||||
searchValue: Property.ShortText({
|
||||
displayName: 'Search Value',
|
||||
description: 'Find contacts by name, email, or other properties.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { searchValue } = propsValue;
|
||||
|
||||
return microsoft365PeopleCommon.listContacts({ auth, queryParams: {
|
||||
$search: `"${searchValue}"`,
|
||||
} });
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,84 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { Contact, EmailAddress } from '@microsoft/microsoft-graph-types';
|
||||
import { microsoft365PeopleAuth } from '../common/auth';
|
||||
import { microsoft365PeopleCommon } from '../common/common';
|
||||
|
||||
export const updateContact = createAction({
|
||||
auth: microsoft365PeopleAuth,
|
||||
name: 'updateContact',
|
||||
displayName: 'Update a Contact',
|
||||
description: 'Modify fields of an existing contact.',
|
||||
props: {
|
||||
contactId: microsoft365PeopleCommon.contactDropdown(),
|
||||
...microsoft365PeopleCommon.contactProperties(),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const contactId = propsValue.contactId;
|
||||
if (!contactId || typeof contactId !== 'string') {
|
||||
throw new Error('contactId is required.');
|
||||
}
|
||||
|
||||
const childrenNames: string[] | undefined = (
|
||||
propsValue.children as Array<{ name: string }> | undefined
|
||||
)?.map((child) => child.name);
|
||||
const emailAddresses: EmailAddress[] | undefined =
|
||||
propsValue.emailAddresses as Array<EmailAddress> | undefined;
|
||||
const imAddresses: string[] | undefined = (
|
||||
propsValue.imAddresses as Array<{ address: string }> | undefined
|
||||
)?.map((im) => im.address);
|
||||
// Use the JSON methods to create the contact object without any undefined values
|
||||
const contact: Contact = JSON.parse(
|
||||
JSON.stringify({
|
||||
assistantName: propsValue.assistantName,
|
||||
birthday: propsValue.birthday,
|
||||
businessAddress: {
|
||||
street: propsValue.businessStreet,
|
||||
city: propsValue.businessCity,
|
||||
state: propsValue.businessState,
|
||||
postalCode: propsValue.businessPostalCode,
|
||||
countryOrRegion: propsValue.businessCountryOrRegion,
|
||||
},
|
||||
children: childrenNames,
|
||||
companyName: propsValue.companyName,
|
||||
department: propsValue.department,
|
||||
displayName: propsValue.displayName,
|
||||
emailAddresses: emailAddresses,
|
||||
givenName: propsValue.givenName,
|
||||
homeAddress: {
|
||||
street: propsValue.homeStreet,
|
||||
city: propsValue.homeCity,
|
||||
state: propsValue.homeState,
|
||||
postalCode: propsValue.homePostalCode,
|
||||
countryOrRegion: propsValue.homeCountryOrRegion,
|
||||
},
|
||||
imAddresses,
|
||||
initials: propsValue.initials,
|
||||
jobTitle: propsValue.jobTitle,
|
||||
manager: propsValue.manager,
|
||||
middleName: propsValue.middleName,
|
||||
mobilePhone: propsValue.mobilePhone,
|
||||
nickName: propsValue.nickName,
|
||||
officeLocation: propsValue.officeLocation,
|
||||
otherAddress: {
|
||||
street: propsValue.otherStreet,
|
||||
city: propsValue.otherCity,
|
||||
state: propsValue.otherState,
|
||||
postalCode: propsValue.otherPostalCode,
|
||||
countryOrRegion: propsValue.otherCountryOrRegion,
|
||||
},
|
||||
parentFolderId: propsValue.parentFolder,
|
||||
personalNotes: propsValue.personalNotes,
|
||||
profession: propsValue.profession,
|
||||
spouseName: propsValue.spouseName,
|
||||
surname: propsValue.surname,
|
||||
title: propsValue.title,
|
||||
})
|
||||
);
|
||||
|
||||
return microsoft365PeopleCommon.updateContact({
|
||||
auth,
|
||||
contactId,
|
||||
contact,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,37 @@
|
||||
import { PieceAuth } from "@activepieces/pieces-framework";
|
||||
|
||||
|
||||
const authDesc = `
|
||||
1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).
|
||||
2. From the left sidebar, go to **Microsoft Enfra ID**.
|
||||
3. Under **Manage**, click on **App registrations**.
|
||||
4. Click the **New registration** button.
|
||||
5. Enter a **Name** for your app.
|
||||
6. For **Supported account types**, choose:
|
||||
- **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**
|
||||
- Or select based on your requirement.
|
||||
7. In **Redirect URI**, select **Web** and add the given URL.
|
||||
8. Click **Register**.
|
||||
9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.
|
||||
10. From the left menu, go to **Certificates & secrets**.
|
||||
- Under **Client secrets**, click **New client secret**.
|
||||
- Provide a description, set an expiry, and click **Add**.
|
||||
- Copy the **Value** of the client secret (this will not be shown again).
|
||||
11. Go to **API permissions** from the left menu.
|
||||
- Click **Add a permission**.
|
||||
- Select **Microsoft Graph** → **Delegated permissions**.
|
||||
- Add the following scopes:
|
||||
- Contacts.ReadWrite
|
||||
- offline_access
|
||||
- Click **Add permissions**.
|
||||
12. Copy your **Client ID** and **Client Secret**.
|
||||
`
|
||||
|
||||
export const microsoft365PeopleAuth = PieceAuth.OAuth2({
|
||||
description: authDesc,
|
||||
authUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
|
||||
tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
|
||||
required: true,
|
||||
scope: ['Contacts.ReadWrite', "offline_access"],
|
||||
prompt: 'omit',
|
||||
});
|
||||
@@ -0,0 +1,376 @@
|
||||
import { OAuth2PropertyValue, Property } from '@activepieces/pieces-framework';
|
||||
import { Client } from '@microsoft/microsoft-graph-client';
|
||||
import { Contact, ContactFolder } from '@microsoft/microsoft-graph-types';
|
||||
import { microsoft365PeopleAuth } from './auth';
|
||||
|
||||
export type authProps = { auth: OAuth2PropertyValue };
|
||||
|
||||
type createContactProps = authProps & { contact: Contact };
|
||||
|
||||
type listContactProps = authProps & { queryParams?: Record<string, any> };
|
||||
|
||||
type updateContactProps = authProps & { contactId: string; contact: Contact };
|
||||
|
||||
type getContactProps = authProps & { contactId: string };
|
||||
|
||||
type deleteContactProps = getContactProps;
|
||||
|
||||
type createContactFolderProps = authProps & { contactFolder: ContactFolder };
|
||||
|
||||
type getContactFolderProps = authProps & { contactFolderId: string };
|
||||
|
||||
type deleteContactFolderProps = getContactFolderProps;
|
||||
|
||||
export const microsoft365PeopleCommon = {
|
||||
// Initialize Microsoft Graph client
|
||||
getClient: ({ auth }: authProps) => {
|
||||
return Client.initWithMiddleware({
|
||||
authProvider: {
|
||||
getAccessToken: () => Promise.resolve(auth.access_token),
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
// Logged user profile
|
||||
getMe: async ({ auth }: authProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
const user = await client.api('/me').get();
|
||||
return user;
|
||||
},
|
||||
|
||||
// Contact methods
|
||||
getContact: async ({ auth, contactId }: getContactProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
const response = await client.api(`/me/contacts/${contactId}`).get();
|
||||
return response;
|
||||
},
|
||||
listContacts: async ({
|
||||
auth,
|
||||
queryParams,
|
||||
}: listContactProps): Promise<Contact[]> => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
let apiRequest = client.api('/me/contacts');
|
||||
if (queryParams) {
|
||||
Object.entries(queryParams).forEach(([key, value]) => {
|
||||
apiRequest = apiRequest.query({ [key]: value });
|
||||
});
|
||||
}
|
||||
const response = await apiRequest.get();
|
||||
return response.value;
|
||||
},
|
||||
createContact: async ({ auth, contact }: createContactProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
const response = await client.api('/me/contacts').post(contact);
|
||||
return response;
|
||||
},
|
||||
updateContact: async ({ auth, contactId, contact }: updateContactProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
const response = await client
|
||||
.api(`/me/contacts/${contactId}`)
|
||||
.patch(contact);
|
||||
return response;
|
||||
},
|
||||
deleteContact: async ({ auth, contactId }: deleteContactProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
await client.api(`/me/contacts/${contactId}`).delete();
|
||||
return { success: true };
|
||||
},
|
||||
|
||||
// Contact folder methods
|
||||
listContactFolders: async ({ auth }: authProps): Promise<ContactFolder[]> => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
const response = await client.api('/me/contactFolders').get();
|
||||
return response.value;
|
||||
},
|
||||
createContactFolder: async ({
|
||||
auth,
|
||||
contactFolder,
|
||||
}: createContactFolderProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
const response = await client.api('/me/contactFolders').post(contactFolder);
|
||||
return response;
|
||||
},
|
||||
getContactFolder: async ({
|
||||
auth,
|
||||
contactFolderId,
|
||||
}: getContactFolderProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
const response = await client
|
||||
.api(`/me/contactFolders/${contactFolderId}`)
|
||||
.get();
|
||||
return response;
|
||||
},
|
||||
|
||||
deleteContactFolder: async ({
|
||||
auth,
|
||||
contactFolderId,
|
||||
}: deleteContactFolderProps) => {
|
||||
const client = microsoft365PeopleCommon.getClient({ auth });
|
||||
await client.api(`/me/contactFolders/${contactFolderId}`).delete();
|
||||
return { success: true };
|
||||
},
|
||||
|
||||
// Dropdowns
|
||||
contactDropdown: (
|
||||
displayName = 'Contact',
|
||||
description = 'Select a Contact',
|
||||
required = true
|
||||
) =>
|
||||
Property.Dropdown({
|
||||
auth: microsoft365PeopleAuth,
|
||||
displayName,
|
||||
description,
|
||||
required,
|
||||
refreshers: ['auth'],
|
||||
refreshOnSearch: false,
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
const contacts = await microsoft365PeopleCommon.listContacts({
|
||||
auth: auth as OAuth2PropertyValue,
|
||||
});
|
||||
const options = contacts.map((contact) => ({
|
||||
label: contact.displayName ?? '',
|
||||
value: contact.id,
|
||||
}));
|
||||
return {
|
||||
placeholder:
|
||||
options.length === 0
|
||||
? "You don't have any contacts."
|
||||
: 'Select a contact',
|
||||
options: options,
|
||||
disabled: options.length === 0,
|
||||
};
|
||||
},
|
||||
}),
|
||||
contactFolderDropdown: (
|
||||
displayName = 'Contact Folder',
|
||||
description = 'Select an option',
|
||||
required = true
|
||||
) =>
|
||||
Property.Dropdown({
|
||||
auth: microsoft365PeopleAuth,
|
||||
displayName,
|
||||
description,
|
||||
required,
|
||||
refreshers: ['auth'],
|
||||
refreshOnSearch: false,
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
const contactFolders =
|
||||
await microsoft365PeopleCommon.listContactFolders({
|
||||
auth: auth as OAuth2PropertyValue,
|
||||
});
|
||||
const options = contactFolders.map((folder) => ({
|
||||
label: folder.displayName ?? '',
|
||||
value: folder.id,
|
||||
}));
|
||||
return {
|
||||
placeholder:
|
||||
options.length === 0
|
||||
? "You don't have any folders created."
|
||||
: 'Select a folder',
|
||||
options: options,
|
||||
disabled: options.length === 0,
|
||||
};
|
||||
},
|
||||
}),
|
||||
|
||||
// Properties
|
||||
contactProperties: () => ({
|
||||
displayName: Property.ShortText({
|
||||
displayName: 'Display Name',
|
||||
required: false,
|
||||
}),
|
||||
givenName: Property.ShortText({
|
||||
displayName: 'Given Name',
|
||||
required: false,
|
||||
}),
|
||||
middleName: Property.ShortText({
|
||||
displayName: 'Middle Name',
|
||||
required: false,
|
||||
}),
|
||||
surname: Property.ShortText({
|
||||
displayName: 'Surname',
|
||||
required: false,
|
||||
}),
|
||||
emailAddresses: Property.Array({
|
||||
displayName: 'Email Addresses',
|
||||
required: false,
|
||||
properties: {
|
||||
address: Property.ShortText({
|
||||
displayName: 'Email Address',
|
||||
required: true,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
mobilePhone: Property.ShortText({
|
||||
displayName: 'Mobile Phone',
|
||||
required: false,
|
||||
}),
|
||||
assistantName: Property.ShortText({
|
||||
displayName: 'Assistant Name',
|
||||
required: false,
|
||||
}),
|
||||
birthday: Property.DateTime({
|
||||
displayName: 'Birthday',
|
||||
required: false,
|
||||
}),
|
||||
businessStreet: Property.ShortText({
|
||||
displayName: 'Business Street',
|
||||
required: false,
|
||||
}),
|
||||
businessCity: Property.ShortText({
|
||||
displayName: 'Business City',
|
||||
required: false,
|
||||
}),
|
||||
businessState: Property.ShortText({
|
||||
displayName: 'Business State',
|
||||
required: false,
|
||||
}),
|
||||
businessPostalCode: Property.ShortText({
|
||||
displayName: 'Business Postal Code',
|
||||
required: false,
|
||||
}),
|
||||
businessCountryOrRegion: Property.ShortText({
|
||||
displayName: 'Business Country or Region',
|
||||
required: false,
|
||||
}),
|
||||
children: Property.Array({
|
||||
displayName: 'Children',
|
||||
required: false,
|
||||
properties: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Name',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
companyName: Property.ShortText({
|
||||
displayName: 'Company Name',
|
||||
required: false,
|
||||
}),
|
||||
department: Property.ShortText({
|
||||
displayName: 'Department',
|
||||
required: false,
|
||||
}),
|
||||
homeStreet: Property.ShortText({
|
||||
displayName: 'Home Street',
|
||||
required: false,
|
||||
}),
|
||||
homeCity: Property.ShortText({
|
||||
displayName: 'Home City',
|
||||
required: false,
|
||||
}),
|
||||
homeState: Property.ShortText({
|
||||
displayName: 'Home State',
|
||||
required: false,
|
||||
}),
|
||||
homePostalCode: Property.ShortText({
|
||||
displayName: 'Home Postal Code',
|
||||
required: false,
|
||||
}),
|
||||
homeCountryOrRegion: Property.ShortText({
|
||||
displayName: 'Home Country or Region',
|
||||
required: false,
|
||||
}),
|
||||
imAddresses: Property.Array({
|
||||
displayName: 'Instant Messaging Addresses',
|
||||
required: false,
|
||||
properties: {
|
||||
address: Property.ShortText({
|
||||
displayName: 'IM Address',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
initials: Property.ShortText({
|
||||
displayName: 'Initials',
|
||||
required: false,
|
||||
}),
|
||||
jobTitle: Property.ShortText({
|
||||
displayName: 'Job Title',
|
||||
required: false,
|
||||
}),
|
||||
manager: Property.ShortText({
|
||||
displayName: 'Manager',
|
||||
required: false,
|
||||
}),
|
||||
nickName: Property.ShortText({
|
||||
displayName: 'Nick Name',
|
||||
required: false,
|
||||
}),
|
||||
officeLocation: Property.ShortText({
|
||||
displayName: 'Office Location',
|
||||
required: false,
|
||||
}),
|
||||
otherStreet: Property.ShortText({
|
||||
displayName: 'Other Street',
|
||||
required: false,
|
||||
}),
|
||||
otherCity: Property.ShortText({
|
||||
displayName: 'Other City',
|
||||
required: false,
|
||||
}),
|
||||
otherState: Property.ShortText({
|
||||
displayName: 'Other State',
|
||||
required: false,
|
||||
}),
|
||||
otherPostalCode: Property.ShortText({
|
||||
displayName: 'Other Postal Code',
|
||||
required: false,
|
||||
}),
|
||||
otherCountryOrRegion: Property.ShortText({
|
||||
displayName: 'Other Country or Region',
|
||||
required: false,
|
||||
}),
|
||||
parentFolder: microsoft365PeopleCommon.contactFolderDropdown(
|
||||
'Parent Folder',
|
||||
'Select a parent folder',
|
||||
false
|
||||
),
|
||||
personalNotes: Property.LongText({
|
||||
displayName: 'Personal Notes',
|
||||
required: false,
|
||||
}),
|
||||
profession: Property.ShortText({
|
||||
displayName: 'Profession',
|
||||
required: false,
|
||||
}),
|
||||
spouseName: Property.ShortText({
|
||||
displayName: 'Spouse Name',
|
||||
required: false,
|
||||
}),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
required: false,
|
||||
}),
|
||||
}),
|
||||
contactFolderProperties: () => ({
|
||||
displayName: Property.ShortText({
|
||||
displayName: 'Contact Folder Name',
|
||||
required: true,
|
||||
}),
|
||||
parentFolder: microsoft365PeopleCommon.contactFolderDropdown(
|
||||
'Parent Folder',
|
||||
'Select a parent folder',
|
||||
false
|
||||
),
|
||||
}),
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
} from '@activepieces/pieces-common';
|
||||
import {
|
||||
AppConnectionValueForAuthProperty,
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import dayjs from 'dayjs';
|
||||
import { microsoft365PeopleAuth } from '../common/auth';
|
||||
import { microsoft365PeopleCommon } from '../common/common';
|
||||
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof microsoft365PeopleAuth>,
|
||||
Record<string, never>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, lastFetchEpochMS }) => {
|
||||
const contacts = await microsoft365PeopleCommon.listContacts({
|
||||
auth,
|
||||
queryParams:lastFetchEpochMS ===0?{$top:'10'} :{
|
||||
$filter: `lastModifiedDateTime gt ${dayjs(lastFetchEpochMS).toISOString()}`,
|
||||
$orderby: 'lastModifiedDateTime desc',
|
||||
},
|
||||
});
|
||||
return contacts.map((contact) => ({
|
||||
epochMilliSeconds: dayjs(contact.lastModifiedDateTime).valueOf(),
|
||||
data: contact,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newOrUpdatedContact = createTrigger({
|
||||
auth: microsoft365PeopleAuth,
|
||||
name: 'newOrUpdatedContact',
|
||||
displayName: 'New or Updated Contact',
|
||||
description:
|
||||
'Triggers when a contact is created or updated in Microsoft 365 People.',
|
||||
props: {},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user