---
title: "Actions: M"
description: "How to set up each action of the 38 apps starting with M."
label: "M"
generated: "the tool catalog in services/core/src/tool-catalog"
---


Apps starting with M. Add any of these from **Integrations → n8n → Add tools → Browse apps**; see [Set up an action](/build/set-up-actions) for each way a key is sent, and the [catalog index](/reference/actions) for every app.

## Magento 2

- **n8n node:** [Magento 2](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.magento2/) (`n8n-nodes-base.magento2`, version 1), 15 actions.
- **n8n performs it:** runs on the n8n credential *Magento 2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/magento2/)).
- **Veefore performs it:** 15 of 15 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://{host}`.

**Magento 2 in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a customer | `POST /rest/V1/customers` | `email`, `firstname`, `lastname`, `host` |
| Delete a customer | `DELETE /rest/default/V1/customers/{customerId}` | `customerId`, `host` |
| Get a customer | `GET /rest/default/V1/customers/{customerId}` | `customerId`, `host` |
| Get many customers | `GET /rest/default/V1/customers/search` | `host` |
| Update a customer | `PUT /rest/V1/customers/{customerId}` | `host`, `customerId` |
| Create an invoice | `POST /rest/default/V1/order/{orderId}/invoice` | `orderId`, `host` |
| Cancel an order | `POST /rest/default/V1/orders/{orderId}/cancel` | `orderId`, `host` |
| Get an order | `GET /rest/default/V1/orders/{orderId}` | `orderId`, `host` |
| Get many orders | `GET /rest/default/V1/orders` | `host` |
| Ship an order | `POST /rest/default/V1/order/{orderId}/ship` | `orderId`, `host` |
| Create a product | `POST /rest/default/V1/products` | `sku`, `name`, `host` |
| Delete a product | `DELETE /rest/default/V1/products/{sku}` | `sku`, `host` |
| Get a product | `GET /rest/default/V1/products/{sku}` | `sku`, `host` |
| Get many products | `GET /rest/default/V1/products` | `host` |
| Update a product | `PUT /rest/default/V1/products/{sku}` | `sku`, `host` |

## Mailcheck

- **n8n node:** [Mailcheck](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailcheck/) (`n8n-nodes-base.mailcheck`, version 1), 1 action.
- **n8n performs it:** runs on the n8n credential *Mailcheck API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mailcheck/)).
- **Veefore performs it:** 1 of 1 action, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://api.mailcheck.co/v1`.
- **Get the key:** [mailcheck.co](https://mailcheck.co/create-api-key)

**Mailcheck in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Check an email | `POST /singleEmail:check` | — |

## Mailchimp

- **n8n node:** [Mailchimp](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailchimp/) (`n8n-nodes-base.mailchimp`, version 1), 14 actions.
- **n8n performs it:** runs on the n8n credential *Mailchimp API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mailchimp/)).
- **Veefore performs it:** 14 of 14 actions, with the key in a header, as `Authorization: apikey <key>`.
- **You enter:** API key.
- **API address:** `https://{datacenter}.api.mailchimp.com/3.0`.
- **Get the key:** [mailchimp.com](https://mailchimp.com/developer/marketing/build/get-started/generate-your-api-key)

**Mailchimp in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Delete a campaign | `DELETE /campaigns/{campaignId}` | `campaignId`, `datacenter` |
| Get a campaign | `GET /campaigns/{campaignId}` | `campaignId`, `datacenter` |
| Get many campaigns | `GET /campaigns` | `datacenter` |
| Replicate a campaign | `POST /campaigns/{campaignId}/actions/replicate` | `campaignId`, `datacenter` |
| Resend a campaign | `POST /campaigns/{campaignId}/actions/create-resend` | `campaignId`, `datacenter` |
| Send a campaign | `POST /campaigns/{campaignId}/actions/send` | `campaignId`, `datacenter` |
| Get many list groups | `GET /interests` | `list`, `groupCategory`, `datacenter` |
| Create a member | `POST /lists/{list}/members` | `list`, `email`, `status`, `datacenter` |
| Delete a member | `POST /lists/{list}/members/{email}/actions/delete-permanent` | `list`, `email`, `datacenter` |
| Get a member | `GET /lists/{list}/members/{email}` | `list`, `email`, `datacenter` |
| Get many members | `GET /members` | `list`, `datacenter` |
| Update a member | `PUT /lists/{list}/members/{email}` | `list`, `email`, `datacenter` |
| Create a member tag | `POST /lists/{list}/members/{email}/tags` | `list`, `email`, `datacenter` |
| Delete a member tag | `POST /lists/{list}/members/{email}/tags` | `list`, `email`, `datacenter` |

## MailerLite

- **n8n node:** [MailerLite](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailerlite/) (`n8n-nodes-base.mailerLite`, version 2), 4 actions.
- **n8n performs it:** runs on the n8n credential *Mailer Lite API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mailerlite/)).
- **Veefore performs it:** 4 of 4 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://api.mailerlite.com/api/v2`.
- **Get the key:** [dashboard.mailerlite.com](https://dashboard.mailerlite.com/integrations/api)

**MailerLite in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a subscriber | `POST /subscribers` | `email` |
| Get a subscriber | `GET /subscribers/{subscriberId}` | `subscriberId` |
| Get many subscribers | `GET /subscribers` | — |
| Update a subscriber | `PUT /subscribers/{subscriberId}` | `subscriberId` |

## Mailgun

- **n8n node:** [Mailgun](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailgun/) (`n8n-nodes-base.mailgun`, version 1), 1 action.
- **n8n performs it:** runs on the n8n credential *Mailgun API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mailgun/)).
- **Veefore performs it:** 1 of 1 action, with HTTP basic auth: username your username, password your password.
- **You enter:** Username, Password.
- **API address:** `https://api.mailgun.net/v3`.
- **Get the key:** [app.mailgun.com](https://app.mailgun.com/settings/api_security)

**Mailgun in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Mailgun | `POST /{emailDomain}/messages` (form-encoded) | `fromEmail`, `toEmail`, `emailDomain` |

## Mailjet

- **n8n node:** [Mailjet](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailjet/) (`n8n-nodes-base.mailjet`, version 1), 3 actions.
- **n8n performs it:** runs on the n8n credential *Mailjet Email API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mailjet/)).
- **Veefore performs it:** 3 of 3 actions, with HTTP basic auth: username API Key, password Secret Key.
- **You enter:** API Key, Secret Key.
- **API address:** `https://api.mailjet.com`.
- **Get the key:** [documentation.mailjet.com](https://documentation.mailjet.com/hc/en-us/articles/360042561974-How-to-create-a-subaccount-or-additional-API-Key)

**Mailjet in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Send an email | `POST /v3.1/send` | `fromEmail`, `toEmail` |
| Send an email template | `POST /v3.1/send` | `fromEmail`, `toEmail`, `templateId` |
| Send an SMS | `POST /v4/sms-send` | `from`, `to`, `text` |

## Mandrill

- **n8n node:** [Mandrill](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mandrill/) (`n8n-nodes-base.mandrill`, version 1), 2 actions.
- **n8n performs it:** runs on the n8n credential *Mandrill API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mandrill/)).
- **Veefore performs it:** 2 of 2 actions, with the key in the request body, as the `key` field.
- **You enter:** API key.
- **API address:** `https://mandrillapp.com/api/1.0`.
- **Get the key:** [mandrillapp.com](https://mandrillapp.com/settings)

**Mandrill in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Send a message based on a template | `POST /send-template` | `template`, `fromEmail`, `toEmail` |
| Send a message based on HTML | `POST /send` | `fromEmail`, `toEmail` |

## Marketstack

- **n8n node:** [Marketstack](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.marketstack/) (`n8n-nodes-base.marketstack`, version 1), 3 actions.
- **n8n performs it:** runs on the n8n credential *Marketstack API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/marketstack/)).
- **Veefore performs it:** 3 of 3 actions, with the key in the query string, as `?access_key=<key>`.
- **You enter:** API key.
- **API address:** `https://api.marketstack.com/v1`.
- **Get the key:** [marketstack.com](https://marketstack.com/dashboard)

**Marketstack in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Get many EoD data | `GET /eod` | `symbols` |
| Get an exchange | `GET /exchanges/{exchange}` | `exchange` |
| Get a ticker | `GET /tickers/{symbol}` | `symbol` |

## Matrix

- **n8n node:** [Matrix](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.matrix/) (`n8n-nodes-base.matrix`, version 1), 11 actions.
- **n8n performs it:** runs on the n8n credential *Matrix API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/matrix/)).
- **Veefore performs it:** 11 of 11 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Access token.
- **API address:** `https://{host}/_matrix/client/r0`.
- **Get the key:** [app.element.io](https://app.element.io/#/user-settings)

**Matrix in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Get the current user's account information | `GET /account/whoami` | `host` |
| Get an event by ID | `GET /rooms/{roomId}/event/{eventId}` | `roomId`, `eventId`, `host` |
| Upload media to a chatroom | `POST https://{host}/_matrix/media/r0/upload` | `roomId`, `binaryPropertyName`, `mediaType`, `host` |
| Create a message | `PUT /rooms/{roomId}/send/m.room.message/{messageId}` | `roomId`, `host`, `messageId` |
| Get many messages | `GET /rooms/{roomId}/messages` | `roomId`, `returnAll`, `host` |
| Create a room | `POST /createRoom` | `roomName`, `preset`, `host` |
| Invite a room | `POST /rooms/{roomId}/invite` | `roomId`, `userId`, `host` |
| Join a room | `POST /rooms/{roomIdOrAlias}/join` | `roomIdOrAlias`, `host` |
| Kick a user from a room | `POST /rooms/{roomId}/kick` | `roomId`, `userId`, `host` |
| Leave a room | `POST /rooms/{roomId}/leave` | `roomId`, `host` |
| Get many room members | `GET /rooms/{roomId}/members` | `roomId`, `host` |

## Mattermost

- **n8n node:** [Mattermost](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mattermost/) (`n8n-nodes-base.mattermost`, version 1), 19 actions.
- **n8n performs it:** runs on the n8n credential *Mattermost API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mattermost/)).
- **Veefore performs it:** 19 of 19 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://{baseUrl}/api/v4`.
- **Get the key:** [developers.mattermost.com](https://developers.mattermost.com/integrate/reference/personal-access-token/)

**Mattermost in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Add a user to a channel | `POST /channels/{channelId}/members` | `channelId`, `userId`, `baseUrl` |
| Create a channel | `POST /channels` | `teamId`, `displayName`, `channel`, `baseUrl` |
| Delete a channel | `DELETE /channels/{channelId}` | `channelId`, `baseUrl` |
| Get a page of members for a channel | `GET /channels/{channelId}/members` | `teamId`, `channelId`, `baseUrl` |
| Restore a soft-deleted channel | `POST /channels/{channelId}/restore` | `channelId`, `baseUrl` |
| Search for a channel | `POST /teams/{teamId}/channels/search` | `teamId`, `term`, `baseUrl` |
| Get statistics for a channel | `GET /channels/{channelId}/stats` | `channelId`, `baseUrl` |
| Delete a message | `DELETE /posts/{postId}` | `postId`, `baseUrl` |
| Post a message | `POST /posts` | `channelId`, `baseUrl` |
| Post an ephemeral message | `POST /posts/ephemeral` | `userId`, `channelId`, `baseUrl` |
| Create a reaction | `POST /reactions` | `userId`, `postId`, `emojiName`, `baseUrl` |
| Delete a reaction | `DELETE /users/{userId}/posts/{postId}/reactions/{emojiName}` | `userId`, `postId`, `emojiName`, `baseUrl` |
| Get many reactions | `GET /posts/{postId}/reactions` | `postId`, `baseUrl` |
| Create a user | `POST /users` | `username`, `baseUrl` |
| Deactivate a user | `DELETE /users/{userId}` | `userId`, `baseUrl` |
| Get a user by email | `GET /users/email/{email}` | `email`, `baseUrl` |
| Get a user by ID | `POST /users/ids` | `userIds`, `baseUrl` |
| Get many users | `GET /users` | `baseUrl` |
| Invite a user | `POST /teams/{teamId}/invite/email` | `teamId`, `emails`, `baseUrl` |

## Mautic

- **n8n node:** [Mautic](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mautic/) (`n8n-nodes-base.mautic`, version 1), 20 actions.
- **n8n performs it:** runs on the n8n credential *Mautic API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mautic/)).
- **Veefore performs it:** 20 of 20 actions, with HTTP basic auth: username Username, password Password.
- **You enter:** Username, Password.
- **API address:** `https://{host}/api`.

**Mautic in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Add a campaign contact | `POST /campaigns/{campaignId}/contact/{contactId}/add` | `contactId`, `campaignId`, `host` |
| Remove a campaign contact | `POST /campaigns/{campaignId}/contact/{contactId}/remove` | `contactId`, `campaignId`, `host` |
| Create a company | `POST /companies/new` | `host` |
| Delete a company | `DELETE /companies/{companyId}/delete` | `host`, `companyId` |
| Get a company | `GET /companies/{companyId}` | `host`, `companyId` |
| Get many companies | `GET /companies` | `host` |
| Update a company | `PATCH /companies/{companyId}/edit` | `host`, `companyId` |
| Add a company contact | `POST /companies/{companyId}/contact/{contactId}/add` | `host`, `companyId`, `contactId` |
| Remove a company contact | `POST /companies/{companyId}/contact/{contactId}/remove` | `host`, `companyId`, `contactId` |
| Create a contact | `POST /contacts/new` | `host` |
| Delete a contact | `DELETE /contacts/{contactId}/delete` | `host`, `contactId` |
| Edit a contact's points | `POST /contacts/{contactId}/points/{path}/{points}` | `host`, `contactId`, `path`, `points` |
| Add/remove contacts from/to the do not contact list | `POST /contacts/{contactId}/dnc/{channel}/{action}` | `channel`, `host`, `contactId`, `action` |
| Get a contact | `GET /contacts/{contactId}` | `host`, `contactId` |
| Get many contacts | `GET /contacts` | `host` |
| Send email to a contact | `POST /emails/{campaignEmailId}/contact/{contactId}/send` | `campaignEmailId`, `contactId`, `host` |
| Update a contact | `PATCH /contacts/{contactId}/edit` | `host`, `contactId` |
| Add a contact to a segment | `POST /segments/{segmentId}/contact/{contactId}/add` | `contactId`, `segmentId`, `host` |
| Remove a contact from a segment | `POST /segments/{segmentId}/contact/{contactId}/remove` | `contactId`, `segmentId`, `host` |
| Send an email to a segment | `POST /emails/{segmentEmailId}/send` | `segmentEmailId`, `host` |

## Medium

- **n8n node:** [Medium](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.medium/) (`n8n-nodes-base.medium`, version 1), 2 actions.
- **n8n performs it:** runs on the n8n credential *Medium API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/medium/)).
- **Veefore performs it:** 2 of 2 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Integration token.
- **API address:** `https://api.medium.com/v1`.
- **Get the key:** [github.com](https://github.com/Medium/medium-api-docs?tab=readme-ov-file#21-self-issued-access-tokens)

**Medium in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a post | `POST /publications/{publicationId}/posts` | `title`, `contentFormat`, `content`, `publicationId` |
| Get many publications | `GET /me` | — |

## MessageBird

- **n8n node:** [MessageBird](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.messagebird/) (`n8n-nodes-base.messageBird`, version 1), 2 actions.
- **n8n performs it:** runs on the n8n credential *MessageBird API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/messagebird/)).
- **Veefore performs it:** 2 of 2 actions, with the key in a header, as `Authorization: AccessKey <key>`.
- **You enter:** Access key.
- **API address:** `https://rest.messagebird.com`.
- **Get the key:** [app.bird.com](https://app.bird.com/settings/access-keys)

**MessageBird in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Send an SMS | `POST /messages` | `originator`, `recipients`, `message` |
| Get the current balance | `GET /balance` | — |

## Metabase

- **n8n node:** [Metabase](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.metabase/) (`n8n-nodes-base.metabase`, version 1), 10 actions.
- **n8n performs it:** runs on the n8n credential *Metabase API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/metabase/)).
- **Veefore performs it:** 10 of 10 actions, with the key in a header, as `X-Metabase-Session: <key>`.
- **You enter:** API key.
- **API address:** `https://{host}/api`.

**Metabase in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Get an alert | `GET /alert/{alertId}` | `alertId`, `host` |
| Get many alerts | `GET /alert/` | `host` |
| Add a databases | `POST /database` | `engine`, `host`, `name`, `port`, `user`, `password` and 1 more |
| Get many databases | `GET /database/` | `host` |
| Get Fields a databases | `GET /database/{databaseId}/fields` | `databaseId`, `host` |
| Get a metric | `GET /metric/{metricId}` | `metricId`, `host` |
| Get many metrics | `GET /metric/` | `host` |
| Get a questions | `GET /card/{questionId}` | `questionId`, `host` |
| Get many questions | `GET /card/` | `host` |
| Get the results from a question | `POST /card/{questionId}/query/{format}` | `questionId`, `format`, `host` |

## Microsoft Dataverse

- **n8n node:** [Microsoft Dataverse](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftdataverse/) (`n8n-nodes-base.microsoftDataverse`, version 1), 6 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Dataverse OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoftdataverse/)).
- **Veefore performs it:** 6 of 6 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token`.
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://{organization}.crm.dynamics.com/api/data/v9.2`.
- **Get the key:** [portal.azure.com](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)

**Microsoft Dataverse in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a row | `POST /{entitySet}` | `entitySet`, `fieldsJson`, `organization` |
| Create or update a row | `PATCH /{entitySet}({recordId})` | `entitySet`, `recordId`, `fieldsJson`, `organization` |
| Delete a row | `DELETE /{entitySet}({recordId})` | `entitySet`, `recordId`, `organization` |
| Get a row | `GET /{entitySet}({recordId})` | `entitySet`, `recordId`, `organization` |
| Get many rows | `GET /{entitySet}` | `entitySet`, `organization` |
| Update a row | `PATCH /{entitySet}({recordId})` | `entitySet`, `recordId`, `fieldsJson`, `organization` |

## Microsoft Dynamics CRM

- **n8n node:** [Microsoft Dynamics CRM](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftdynamicscrm/) (`n8n-nodes-base.microsoftDynamicsCrm`, version 1), 5 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Dynamics OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 5 of 5 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `region`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://{subdomain}.{region}/api/data/v9.2`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft Dynamics CRM in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create an account | `POST https://{subdomain}.us-east-1/api/data/v9.2/accounts` | `name`, `subdomain` |
| Delete an account | `DELETE https://{subdomain}.us-east-1/api/data/v9.2/accounts({accountId})` | `accountId`, `subdomain` |
| Get an account | `GET https://{subdomain}.us-east-1/api/data/v9.2/accounts({accountId})` | `accountId`, `subdomain` |
| Get many accounts | `GET https://{subdomain}.us-east-1/api/data/v9.2/accounts` | `subdomain` |
| Update an account | `PATCH https://{subdomain}.us-east-1/api/data/v9.2/accounts({accountId})` | `accountId`, `subdomain` |

## Microsoft Entra ID

- **n8n node:** [Microsoft Entra ID](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftentra/) (`n8n-nodes-base.microsoftEntra`, version 1), 12 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Entra ID (Azure Active Directory) API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoftentra/)).
- **Veefore performs it:** 12 of 12 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `openid offline_access AccessReview.ReadWrite.All Directory.ReadWrite.All NetworkAccessPolicy.ReadWrite.All DelegatedAdminRelationship.ReadWrite.All EntitlementManagement.ReadWrite.All User.ReadWrite.All Directory.AccessAsUser.All Sites.FullControl.All GroupMember.ReadWrite.All`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0`.
- **Get the key:** [microsoft.com](https://www.microsoft.com/en-us/security/business/identity-access/azure-active-directory)

**Microsoft Entra ID in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create group | `POST /groups` | `displayName`, `mailNickname` |
| Delete group | `DELETE /groups/{group}` | `group` |
| Get group | `GET /groups/{group}` | `group` |
| Get many groups | `GET /groups` | — |
| Update group | `PATCH /groups/{group}` | `group` |
| Add user to group | `POST /groups/{group}/members/$ref` | `group`, `user` |
| Create user | `POST /users` | `accountEnabled`, `displayName`, `userPrincipalName`, `mailNickname`, `password` |
| Delete user | `DELETE /users/{user}` | `user` |
| Get user | `GET /users/{user}` | `user` |
| Get many users | `GET /users` | — |
| Remove user from group | `DELETE /groups/{group}/members/{user}/$ref` | `group`, `user` |
| Update user | `PATCH /users/{user}` | `user` |

## Microsoft Excel (OneDrive)

- **n8n node:** [Microsoft Excel (OneDrive)](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftexcel/) (`n8n-nodes-base.microsoftExcel`, version 2.2), 17 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Excel OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 17 of 17 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `openid offline_access Files.ReadWrite`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0/me`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft Excel (OneDrive) in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Append rows to table | `GET /drive/items/{workbook}/workbook/worksheets/{worksheet}/tables/{table}/columns` | `workbook`, `worksheet`, `table` |
| Convert to range | `POST /drive/items/{workbook}/workbook/worksheets/{worksheet}/tables/{table}/convertToRange` | `workbook`, `worksheet`, `table` |
| Create a table | `POST /drive/items/{workbook}/workbook/worksheets/{worksheet}/tables/add` | `workbook`, `worksheet` |
| Delete a table | `DELETE /drive/items/{workbook}/workbook/worksheets/{worksheet}/tables/{table}` | `workbook`, `worksheet`, `table` |
| Get columns | `GET /drive/items/{workbook}/workbook/worksheets/{worksheet}/tables/{table}/columns` | `workbook`, `worksheet`, `table` |
| Get rows | `GET /drive/items/{workbook}/workbook/worksheets/{worksheet}/tables/{table}/rows` | `workbook`, `worksheet`, `table` |
| Lookup a column | `GET /drive/items/{workbook}/workbook/worksheets/{worksheet}/tables/{table}/rows` | `workbook`, `worksheet`, `table`, `lookupColumn`, `lookupValue` |
| Add a sheet to a workbook | `POST /drive/items/{workbook}/workbook/createSession` | `workbook` |
| Delete workbook | `DELETE /drive/items/{workbook}` | `workbook` |
| Get workbooks | `GET /drive/root/search(q='.xlsx')` | — |
| Append data to sheet | `GET /drive/items/{workbook}/workbook/worksheets/{worksheet}/usedRange` | `workbook`, `worksheet` |
| Append or update a sheet | `PATCH /drive/items/{workbook}/workbook/worksheets/{worksheet}/range(address='{range}')` | `workbook`, `worksheet`, `range` |
| Clear sheet | `POST /drive/items/{workbook}/workbook/worksheets/{worksheet}/range/clear` | `workbook`, `worksheet` |
| Delete sheet | `DELETE /drive/items/{workbook}/workbook/worksheets/{worksheet}` | `workbook`, `worksheet` |
| Get sheets | `GET /drive/items/{workbook}/workbook/worksheets` | `workbook` |
| Get rows from sheet | `GET /drive/items/{workbook}/workbook/worksheets/{worksheet}/range(address='{range}')` | `workbook`, `worksheet`, `range` |
| Update sheet | `PATCH /drive/items/{workbook}/workbook/worksheets/{worksheet}/range(address='{range}')` | `workbook`, `worksheet`, `range` |

## Microsoft Excel (SharePoint)

- **n8n node:** [Microsoft Excel (SharePoint)](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftexcelsharepoint/) (`n8n-nodes-base.microsoftExcelSharePoint`, version 1), 18 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 15 of 18 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token`.
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft Excel (SharePoint) in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Append rows to sheet | n8n performs it | `workbook`, `worksheet` |
| Append or update rows in sheet | n8n performs it | `workbook`, `worksheet` |
| Clear sheet | `POST /sites/{site}/drives/{library}/items/{workbook}/workbook/worksheets/{worksheet}/range/clear` | `workbook`, `worksheet`, `site`, `library` |
| Delete sheet | `DELETE /sites/{site}/drives/{library}/items/{workbook}/workbook/worksheets/{worksheet}` | `workbook`, `worksheet`, `site`, `library` |
| Get many sheets | `GET /sites/{site}/drives/{library}/items/{workbook}/workbook/worksheets` | `workbook`, `site`, `library` |
| Get rows in sheet | `GET /sites/{site}/drives/{library}/items/{workbook}/workbook/worksheets/{worksheet}/usedRange` | `workbook`, `worksheet`, `site`, `library` |
| Update rows in sheet | n8n performs it | `workbook`, `worksheet` |
| Append rows to table | `POST /sites/{site}/drives/{library}/items/{workbook}/workbook/tables/{table}/rows/add` | `workbook`, `worksheet`, `table`, `site`, `library` |
| Convert table to range | `POST /sites/{site}/drives/{library}/items/{workbook}/workbook/tables/{table}/convertToRange` | `workbook`, `worksheet`, `table`, `site`, `library` |
| Create table | `POST /sites/{site}/drives/{library}/items/{workbook}/workbook/worksheets/{worksheet}/tables/add` | `workbook`, `worksheet`, `site`, `library` |
| Delete table | `DELETE /sites/{site}/drives/{library}/items/{workbook}/workbook/tables/{table}` | `workbook`, `worksheet`, `table`, `site`, `library` |
| Get columns in table | `GET /sites/{site}/drives/{library}/items/{workbook}/workbook/tables/{table}/columns` | `workbook`, `worksheet`, `table`, `site`, `library` |
| Get many tables | `GET /sites/{site}/drives/{library}/items/{workbook}/workbook/tables` | `workbook`, `site`, `library` |
| Get rows in table | `GET /sites/{site}/drives/{library}/items/{workbook}/workbook/tables/{table}/rows` | `workbook`, `worksheet`, `table`, `site`, `library` |
| Look up column value in table | `GET /sites/{site}/drives/{library}/items/{workbook}/workbook/tables/{table}/rows` | `workbook`, `worksheet`, `table`, `lookupColumn`, `lookupValue`, `site` and 1 more |
| Add a sheet to a workbook | `POST /sites/{site}/drives/{library}/items/{workbook}/workbook/worksheets/add` | `workbook`, `site`, `library` |
| Delete a workbook | `DELETE /sites/{site}/drives/{library}/items/{workbook}` | `workbook`, `site`, `library` |
| Get many workbooks | `GET /sites/{site}/drives/{library}/root/search(q='xlsx')` | `site`, `library` |

## Microsoft Graph Security

- **n8n node:** [Microsoft Graph Security](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftgraphsecurity/) (`n8n-nodes-base.microsoftGraphSecurity`, version 1), 5 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Graph Security OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 5 of 5 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `SecurityEvents.ReadWrite.All offline_access`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0/security`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft Graph Security in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Get a secure score | `GET /secureScores/{secureScoreId}` | `secureScoreId` |
| Get many secure scores | `GET /secureScores` | — |
| Get a secure score control profile | `GET /secureScoreControlProfiles/{secureScoreControlProfileId}` | `secureScoreControlProfileId` |
| Get many secure score control profiles | `GET /secureScoreControlProfiles` | — |
| Update a secure score control profile | `PATCH /secureScoreControlProfiles/{secureScoreControlProfileId}` | `secureScoreControlProfileId`, `provider`, `vendor` |

## Microsoft OneDrive

- **n8n node:** [Microsoft OneDrive](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftonedrive/) (`n8n-nodes-base.microsoftOneDrive`, version 1.1), 16 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Drive OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 16 of 16 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `openid offline_access Files.ReadWrite.All`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0/me`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft OneDrive in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Copy a file | `POST /drive/items/{fileId}/copy` | `fileId` |
| Delete a file | `DELETE /drive/items/{fileId}` | `fileId` |
| Download a file | `GET /drive/items/{fileId}` | `binaryPropertyName`, `fileId` |
| Get a file | `GET /drive/items/{fileId}` | `fileId` |
| Move a file | `PATCH /drive/items/{itemId}` | `fileId`, `itemId` |
| Rename a file | `PATCH /drive/items/{itemId}` | `itemId` |
| Search a file | `GET /drive/root/search(q='{query}')` | `query` |
| Share a file | `POST /drive/items/{fileId}/createLink` | `fileId` |
| Upload a file | `PUT /drive/items/{encodedParentId}:/{encodedFilename}:/content` | `parentId`, `binaryData`, `fileContent`, `encodedParentId`, `encodedFilename` |
| Create a folder | `POST /drive/items/{parentFolderId}/children` | `name`, `parentFolderId` |
| Delete a folder | `DELETE /drive/items/{folderId}` | `folderId` |
| Get items in a folder | `GET /drive/items/{folderId}/children` | `folderId` |
| Move a folder | `PATCH /drive/items/{itemId}` | `folderId`, `itemId` |
| Rename a folder | `PATCH /drive/items/{itemId}` | `itemId` |
| Search a folder | `GET /drive/root/search(q='{query}')` | `query` |
| Share a folder | `POST /drive/items/{folderId}/createLink` | `folderId` |

## Microsoft Outlook

- **n8n node:** [Microsoft Outlook](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftoutlook/) (`n8n-nodes-base.microsoftOutlook`, version 2), 38 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Outlook OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 38 of 38 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `openid offline_access Contacts.Read Contacts.ReadWrite Calendars.Read Calendars.Read.Shared Calendars.ReadWrite Mail.ReadWrite Mail.ReadWrite.Shared Mail.Send Mail.Send.Shared MailboxSettings.Read`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0/me`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft Outlook in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a calendar | `POST /calendarGroups/{calendarGroup}/calendars` | `name`, `calendarGroup` |
| Delete a calendar | `DELETE /calendars/{calendarId}` | `calendarId` |
| Get a calendar | `GET /calendars/{calendarId}` | `calendarId` |
| Get many calendars | `GET /calendars` | — |
| Update a calendar | `PATCH /calendars/{calendarId}` | `calendarId` |
| Create a contact | `POST /contacts` | `givenName` |
| Delete a contact | `DELETE /contacts/{contactId}` | `contactId` |
| Get a contact | `GET /contacts/{contactId}` | `contactId` |
| Get many contacts | `GET /contacts` | — |
| Update a contact | `PATCH /contacts/{contactId}` | `contactId` |
| Create a draft | `POST /messages` | — |
| Delete a draft | `DELETE /messages/{draftId}` | `draftId` |
| Get a draft | `GET /messages/{draftId}` | `draftId` |
| Send a draft | `POST /messages/{draftId}/send` | `draftId` |
| Update a draft | `PATCH /messages/{draftId}` | `draftId` |
| Create an event | `POST /calendars/{calendarId}/events` | `calendarId`, `subject`, `startDateTime`, `endDateTime` |
| Delete an event | `DELETE /calendar/events/{eventId}` | `calendarId`, `eventId` |
| Get an event | `GET /calendar/events/{eventId}` | `calendarId`, `eventId` |
| Get many events | `GET /calendars` | — |
| Update an event | `PATCH /calendar/events/{eventId}` | `calendarId`, `eventId` |
| Create a folder | `POST /mailFolders` | `displayName` |
| Delete a folder | `DELETE /mailFolders/{folderId}` | `folderId` |
| Get a folder | `GET /mailFolders/{folderId}` | `folderId` |
| Get many folders | `GET /mailFolders` | — |
| Update a folder | `PATCH /mailFolders/{folderId}` | `folderId`, `displayName` |
| Get many folder messages | `GET /mailFolders/{folderId}/messages` | `folderId` |
| Delete a message | `DELETE /messages/{messageId}` | `messageId` |
| Get a message | `GET /messages/{messageId}` | `messageId` |
| Get many messages | `GET /messages` | — |
| Move a message | `POST /messages/{messageId}/move` | `messageId`, `folderId` |
| Reply to a message | `POST /messages/{messageId}/replyAll` | `messageId` |
| Send a message | `POST /sendMail` | `toRecipients` |
| Send message and wait for response | `POST /sendMail` | `toRecipients`, `subject`, `message` |
| Update a message | `POST /messages/{messageId}/move` | `messageId` |
| Add an attachment | `POST /messages/{messageId}/attachments/createUploadSession` | `messageId`, `binaryPropertyName` |
| Download an attachment | `GET /messages/{messageId}/attachments/{attachmentId}` | `messageId`, `attachmentId`, `binaryPropertyName` |
| Get an attachment | `GET /messages/{messageId}/attachments/{attachmentId}` | `messageId`, `attachmentId` |
| Get many attachments | `GET /messages/{messageId}/attachments` | `messageId` |

## Microsoft SharePoint

- **n8n node:** [Microsoft SharePoint](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftsharepoint/) (`n8n-nodes-base.microsoftSharePoint`, version 2), 11 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 11 of 11 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token`.
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft SharePoint in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Download file | `GET /sites/{siteId}/drive/items/{fileId}` | `site`, `folder`, `file`, `binaryPropertyName`, `siteId`, `fileId` |
| Update file | `PATCH /sites/{siteId}/drive/items/{fileId}` | `site`, `folder`, `file`, `siteId`, `fileId` |
| Upload file | `PUT /sites/{siteId}/drive/items/{folderId}:/{fileName}:/content` | `site`, `folder`, `fileName`, `binaryPropertyName`, `siteId`, `folderId` |
| Create item | `POST /sites/{siteId}/lists/{listIdOrTitle}/items` | `site`, `list`, `siteId`, `listIdOrTitle` |
| Create or update item | `GET /sites/{hostname}` | `site`, `list`, `hostname` |
| Delete item | `DELETE /sites/{siteId}/lists/{list}/items/{item}` | `site`, `list`, `item`, `siteId` |
| Get item | `GET /sites/{siteId}/lists/{list}/items/{item}` | `site`, `list`, `item`, `siteId` |
| Get many items | `GET /sites/{siteId}/lists/{listIdOrTitle}/items` | `site`, `list`, `siteId`, `listIdOrTitle` |
| Update item in a list | `GET /sites/{hostname}` | `site`, `list`, `hostname` |
| Get list | `GET /sites/{siteId}/lists/{listIdOrTitle}` | `site`, `list`, `siteId`, `listIdOrTitle` |
| Get many lists | `GET /sites/{siteId}/lists` | `site`, `siteId` |

## Microsoft SQL

- **n8n node:** [Microsoft SQL](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftsql/) (`n8n-nodes-base.microsoftSql`, version 1.2), 4 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft SQL* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoftsql/)).
- **Veefore performs it:** not available. Microsoft SQL is not a web API (a database, queue, file transfer or local step), so only n8n can perform it.

**Microsoft SQL in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Execute a SQL query | n8n performs it | `query` |
| Insert rows in database | n8n performs it | `table` |
| Update rows in database | n8n performs it | `table`, `updateKey` |
| Delete rows in database | n8n performs it | `table`, `deleteKey` |

## Microsoft Teams

- **n8n node:** [Microsoft Teams](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftteams/) (`n8n-nodes-base.microsoftTeams`, version 2), 35 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft Teams OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 35 of 35 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `openid offline_access User.Read.All Group.ReadWrite.All Chat.ReadWrite ChannelMessage.Read.All OnlineMeetings.ReadWrite ChannelMessage.ReadWrite TeamworkTag.Read TeamsActivity.Send`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft Teams in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Send an activity notification | `POST /v1.0/users/{recipientId}/teamwork/sendActivityNotification` | `recipientId`, `headline`, `previewText`, `topic`, `topicLink` |
| Create channel | `POST /v1.0/teams/{teamId}/channels` | `teamId`, `name` |
| Delete channel | `DELETE /v1.0/teams/{teamId}/channels/{channelId}` | `teamId`, `channelId` |
| Get channel | `GET /v1.0/teams/{teamId}/channels/{channelId}` | `teamId`, `channelId` |
| Get many channels | `GET /v1.0/teams/{teamId}/channels` | `teamId` |
| Update channel | `PATCH /v1.0/teams/{teamId}/channels/{channelId}` | `teamId`, `channelId` |
| Create message | `POST /beta/teams/{teamId}/channels/{channelId}/messages` | `teamId`, `channelId`, `contentType`, `message` |
| Delete message | `POST /v1.0/teams/{teamId}/channels/{channelId}/messages/{messageId}/softDelete` | `teamId`, `channelId`, `messageId` |
| Get message | `GET /beta/teams/{teamId}/channels/{channelId}/messages/{messageId}` | `teamId`, `channelId`, `messageId` |
| Get many messages | `GET /beta/teams/{teamId}/channels/{channelId}/messages` | `teamId`, `channelId` |
| Get many replies | `GET /beta/teams/{teamId}/channels/{channelId}/messages/{messageId}/replies` | `teamId`, `channelId`, `messageId` |
| Reply to message | `POST /beta/teams/{teamId}/channels/{channelId}/messages/{messageId}/replies` | `teamId`, `channelId`, `messageId`, `contentType`, `message` |
| Undo delete message | `POST /v1.0/teams/{teamId}/channels/{channelId}/messages/{messageId}/undoSoftDelete` | `teamId`, `channelId`, `messageId` |
| Create chat | `POST /v1.0/chats` | — |
| Get chat | `GET /v1.0/chats/{chatId}` | `chatId` |
| Get many chats | `GET /v1.0/chats` | — |
| Add chat member | `POST /v1.0/chats/{chatId}/members` | `chatId`, `userId` |
| Get many chat members | `GET /v1.0/chats/{chatId}/members` | `chatId` |
| Remove chat member | `DELETE /v1.0/chats/{chatId}/members/{membershipId}` | `chatId`, `membershipId` |
| Create chat message | `POST /v1.0/chats/{chatId}/messages` | `chatId`, `contentType`, `message` |
| Delete chat message | `POST /v1.0/users/{userId}/chats/{chatId}/messages/{messageId}/softDelete` | `chatId`, `messageId`, `userId` |
| Get chat message | `GET /v1.0/chats/{chatId}/messages/{messageId}` | `chatId`, `messageId` |
| Get many chat messages | `GET /v1.0/chats/{chatId}/messages` | `chatId` |
| Send message and wait for response | `POST /v1.0/chats/{chatId}/messages` | `chatId`, `message` |
| Undo delete chat message | `POST /v1.0/users/{userId}/chats/{chatId}/messages/{messageId}/undoSoftDelete` | `chatId`, `messageId`, `userId` |
| Create online meeting | `POST /v1.0/me/onlineMeetings` | `subject`, `startDateTime`, `endDateTime` |
| Create or get online meeting | `POST /v1.0/me/onlineMeetings/createOrGet` | `externalId` |
| Delete online meeting | `DELETE /v1.0/me/onlineMeetings/{meetingId}` | `meetingId` |
| Get online meeting | `GET /v1.0/me/onlineMeetings/{meetingId}` | `meetingId` |
| Update online meeting | `PATCH /v1.0/me/onlineMeetings/{meetingId}` | `meetingId` |
| Create task | `POST /v1.0/planner/tasks` | `groupId`, `planId`, `bucketId`, `title` |
| Delete task | `DELETE /v1.0/planner/tasks/{taskId}` | `taskId` |
| Get task | `GET /v1.0/planner/tasks/{taskId}` | `taskId` |
| Get many tasks | `GET /v1.0/planner/plans/{planId}/tasks` | `tasksFor`, `groupId`, `planId` |
| Update task | `PATCH /v1.0/planner/tasks/{taskId}` | `taskId` |

## Microsoft To Do

- **n8n node:** [Microsoft To Do](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsofttodo/) (`n8n-nodes-base.microsoftToDo`, version 1), 15 actions.
- **n8n performs it:** runs on the n8n credential *Microsoft To Do OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/microsoft/)).
- **Veefore performs it:** 15 of 15 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://login.microsoftonline.com/common/oauth2/v2.0/token` (scope `openid offline_access Tasks.ReadWrite`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://graph.microsoft.com/v1.0/me`.
- **Get the key:** [learn.microsoft.com](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials)

**Microsoft To Do in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a linked resource | `POST /todo/lists/{taskListId}/tasks/{taskId}/linkedResources` | `taskListId`, `taskId`, `applicationName` |
| Delete a linked resource | `DELETE /todo/lists/{taskListId}/tasks/{taskId}/linkedResources/{linkedResourceId}` | `taskListId`, `taskId`, `linkedResourceId` |
| Get a linked resource | `GET /todo/lists/{taskListId}/tasks/{taskId}/linkedResources/{linkedResourceId}` | `taskListId`, `taskId`, `linkedResourceId` |
| Get many linked resources | `GET /todo/lists/{taskListId}/tasks/{taskId}/linkedResources` | `taskListId`, `taskId` |
| Update a linked resource | `PATCH /todo/lists/{taskListId}/tasks/{taskId}/linkedResources/{linkedResourceId}` | `taskListId`, `taskId`, `linkedResourceId` |
| Create a list | `POST /todo/lists/` | `displayName` |
| Delete a list | `DELETE /todo/lists/{listId}` | `listId` |
| Get a list | `GET /todo/lists/{listId}` | `listId` |
| Get many lists | `GET /todo/lists` | — |
| Update a list | `PATCH /todo/lists/{listId}` | `listId`, `displayName` |
| Create a task | `POST /todo/lists/{taskListId}/tasks` | `taskListId`, `title` |
| Delete a task | `DELETE /todo/lists/{taskListId}/tasks/{taskId}` | `taskListId`, `taskId` |
| Get a task | `GET /todo/lists/{taskListId}/tasks/{taskId}` | `taskListId`, `taskId` |
| Get many tasks | `GET /todo/lists/{taskListId}/tasks/` | `taskListId` |
| Update a task | `PATCH /todo/lists/{taskListId}/tasks/{taskId}` | `taskListId`, `taskId` |

## Mindee

- **n8n node:** [Mindee](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mindee/) (`n8n-nodes-base.mindee`, version 3), 2 actions.
- **n8n performs it:** runs on the n8n credential *Mindee Receipt API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mindee/)).
- **Veefore performs it:** 2 of 2 actions, with the key in a header, as `Authorization: Token <key>`.
- **You enter:** API key.
- **API address:** `https://api.mindee.net/products`.
- **Get the key:** [developers.mindee.com](https://developers.mindee.com/docs/create-api-key)

**Mindee in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Predict invoice | `POST /invoices/v1/predict` | `binaryPropertyName` |
| Predict receipt | `POST /expense_receipts/v2/predict` | `binaryPropertyName` |

## MiniMax

- **n8n node:** [MiniMax](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.minimax/) (`@n8n/n8n-nodes-langchain.minimax`, version 1.2), 5 actions.
- **n8n performs it:** runs on the n8n credential *MiniMax* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/minimax/)).
- **Veefore performs it:** 5 of 5 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://api.minimax.io/v1`.
- **Get the key:** [minimax.io](https://www.minimax.io/platform/user-center/basic-information/interface-key)

**MiniMax in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Convert text to speech | `POST /t2a_v2` | `text`, `voiceId` |
| Generate an image | `POST /image_generation` | `prompt` |
| Message a model | `POST /chat/completions` | `modelId` |
| Generate video from text prompt | `POST /video_generation` | `prompt` |
| Generate video from image | `POST /video_generation` | `imageUrl`, `prompt` |

## MISP

- **n8n node:** [MISP](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.misp/) (`n8n-nodes-base.misp`, version 1), 44 actions.
- **n8n performs it:** runs on the n8n credential *MISP API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/misp/)).
- **Veefore performs it:** 44 of 44 actions, with the key in a header, as `Authorization: <key>`.
- **You enter:** API key.
- **API address:** `https://{baseUrl}`.

**MISP in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create an attribute | `POST /attributes/add/{eventId}` | `eventId`, `type`, `value`, `baseUrl` |
| Delete an attribute | `DELETE /attributes/delete/{attributeId}` | `attributeId`, `baseUrl` |
| Get an attribute | `GET /attributes/view/{attributeId}` | `attributeId`, `baseUrl` |
| Get many attributes | `GET /attributes` | `baseUrl` |
| Get a filtered list of attributes | `POST /attributes/restSearch` | `value`, `baseUrl` |
| Update an attribute | `PUT /attributes/edit/{attributeId}` | `attributeId`, `baseUrl` |
| Create an event | `POST /events` | `org_id`, `information`, `baseUrl` |
| Delete an event | `DELETE /events/delete/{eventId}` | `eventId`, `baseUrl` |
| Get an event | `GET /events/view/{eventId}` | `eventId`, `baseUrl` |
| Get many events | `GET /events` | `baseUrl` |
| Publish an event | `POST /events/publish/{eventId}` | `eventId`, `baseUrl` |
| Get a filtered list of events | `POST /events/restSearch` | `value`, `baseUrl` |
| Unpublish an event | `POST /events/unpublish/{eventId}` | `eventId`, `baseUrl` |
| Update an event | `PUT /events/edit/{eventId}` | `eventId`, `baseUrl` |
| Add a tag to an event | `POST /events/addTag` | `eventId`, `tagId`, `baseUrl` |
| Remove a tag from an event | `POST /events/removeTag/{eventId}/{tagId}` | `eventId`, `tagId`, `baseUrl` |
| Create a feed | `POST /feeds/add` | `name`, `provider`, `url`, `baseUrl` |
| Disable a feed | `POST /feeds/disable/{feedId}` | `feedId`, `baseUrl` |
| Enable a feed | `POST /feeds/enable/{feedId}` | `feedId`, `baseUrl` |
| Get a feed | `GET /feeds/view/{feedId}` | `feedId`, `baseUrl` |
| Get many feeds | `GET /feeds` | `baseUrl` |
| Update a feed | `PUT /feeds/edit/{feedId}` | `feedId`, `baseUrl` |
| Delete a galaxy | `DELETE /galaxies/delete/{galaxyId}` | `galaxyId`, `baseUrl` |
| Get a galaxy | `GET /galaxies/view/{galaxyId}` | `galaxyId`, `baseUrl` |
| Get many galaxies | `GET /galaxies` | `baseUrl` |
| Get a noticelist | `GET /noticelists/view/{noticelistId}` | `noticelistId`, `baseUrl` |
| Get many noticelists | `GET /noticelists` | `baseUrl` |
| Get a filtered list of objects | `POST /objects/restSearch` | `value`, `baseUrl` |
| Create an organization | `POST /admin/organisations/add` | `name`, `baseUrl` |
| Delete an organization | `DELETE /admin/organisations/delete/{organisationId}` | `organisationId`, `baseUrl` |
| Get an organization | `GET /organisations/view/{organisationId}` | `organisationId`, `baseUrl` |
| Get many organizations | `GET /organisations` | `baseUrl` |
| Update an organization | `PUT /admin/organisations/edit/{organisationId}` | `organisationId`, `baseUrl` |
| Create a tag | `POST /tags/add` | `name`, `baseUrl` |
| Delete a tag | `POST /tags/delete/{tagId}` | `tagId`, `baseUrl` |
| Get many tags | `GET /tags` | `baseUrl` |
| Update a tag | `POST /tags/edit/{tagId}` | `tagId`, `baseUrl` |
| Create a user | `POST /admin/users/add` | `email`, `role_id`, `baseUrl` |
| Delete a user | `DELETE /admin/users/delete/{userId}` | `userId`, `baseUrl` |
| Get a user | `GET /admin/users/view/{userId}` | `userId`, `baseUrl` |
| Get many users | `GET /admin/users` | `baseUrl` |
| Update a user | `PUT /admin/users/edit/{userId}` | `userId`, `baseUrl` |
| Get a warninglist | `GET /warninglists/view/{warninglistId}` | `warninglistId`, `baseUrl` |
| Get many warninglists | `GET /warninglists` | `baseUrl` |

## Mistral AI

- **n8n node:** [Mistral AI](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mistralai/) (`n8n-nodes-base.mistralAi`, version 1), 1 action.
- **n8n performs it:** runs on the n8n credential *Mistral Cloud API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mistral/)).
- **Veefore performs it:** 1 of 1 action, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://api.mistral.ai`.
- **Get the key:** [console.mistral.ai](https://console.mistral.ai/api-keys)

**Mistral AI in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Extract text | `POST /v1/files` | `model`, `documentType`, `inputType`, `binaryProperty` |

## Mocean

- **n8n node:** [Mocean](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mocean/) (`n8n-nodes-base.mocean`, version 1), 2 actions.
- **n8n performs it:** runs on the n8n credential *Mocean Api* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mocean/)).
- **Veefore performs it:** 2 of 2 actions, with the key in the request body, as the `mocean-api-key` field.
- **You enter:** API key, API secret.
- **Also sent:** API secret in the body as `mocean-api-secret`.
- **API address:** `https://rest.moceanapi.com`.
- **Get the key:** [dashboard.moceanapi.com](https://dashboard.moceanapi.com/)

**Mocean in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Send an SMS | `POST /rest/2/sms` | `from`, `to`, `message` |
| Send an SMS | `POST /rest/2/sms` | `from`, `to`, `message` |

## Monday.com

- **n8n node:** [Monday.com](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mondaycom/) (`n8n-nodes-base.mondayCom`, version 1), 18 actions.
- **n8n performs it:** runs on the n8n credential *Monday.com API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mondaycom/)).
- **Veefore performs it:** 18 of 18 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://api.monday.com/v2`.
- **Get the key:** [auth.monday.com](https://auth.monday.com/admin/integrations/api)

**Monday.com in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Archive a board | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Create a board | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Get a board | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Get many boards | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Create a board column | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Get many board columns | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Delete a board group | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Create a board group | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Get many board groups | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Add an update to an item | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Change a column value for a board item | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Change multiple column values for a board item | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Create an item in a board's group | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Delete an item | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Get an item | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Get items item by column value | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Get many items | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |
| Move an item to a group | `POST https://api.monday.com/v2` (a GraphQL document) | `query`, `variables` |

## MongoDB

- **n8n node:** [MongoDB](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mongodb/) (`n8n-nodes-base.mongoDb`, version 1.5), 11 actions.
- **n8n performs it:** runs on the n8n credential *MongoDB* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mongodb/)).
- **Veefore performs it:** not available. MongoDB is not a web API (a database, queue, file transfer or local step), so only n8n can perform it.

**MongoDB in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create Search Index | n8n performs it | `collection`, `indexNameRequired`, `indexDefinition`, `indexType` |
| Drop Search Index | n8n performs it | `collection`, `indexNameRequired` |
| List Search Indexes | n8n performs it | `collection` |
| Update Search Index | n8n performs it | `collection`, `indexNameRequired`, `indexDefinition` |
| Aggregate documents | n8n performs it | `collection`, `query` |
| Delete documents | n8n performs it | `collection`, `query` |
| Find documents | n8n performs it | `collection`, `query` |
| Find and replace documents | n8n performs it | `collection`, `updateKey` |
| Find and update documents | n8n performs it | `collection`, `updateKey` |
| Insert documents | n8n performs it | `collection` |
| Update documents | n8n performs it | `collection`, `updateKey` |

## Monica CRM

- **n8n node:** [Monica CRM](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.monicacrm/) (`n8n-nodes-base.monicaCrm`, version 1), 52 actions.
- **n8n performs it:** runs on the n8n credential *Monica CRM API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/monicacrm/)).
- **Veefore performs it:** 52 of 52 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** API token.
- **API address:** `https://{baseUrl}/api`.

**Monica CRM in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create an activity | `POST /activities` | `activityTypeId`, `contacts`, `happenedAt`, `summary`, `baseUrl` |
| Delete an activity | `DELETE /activities/{activityId}` | `activityId`, `baseUrl` |
| Get an activity | `GET /activities/{activityId}` | `activityId`, `baseUrl` |
| Get many activities | `GET /activities` | `baseUrl` |
| Update an activity | `PUT /activities/{activityId}` | `activityId`, `baseUrl` |
| Create a call | `POST /calls` | `contactId`, `calledAt`, `content`, `baseUrl` |
| Delete a call | `DELETE /calls/{callId}` | `callId`, `baseUrl` |
| Get a call | `GET /calls/{callId}` | `callId`, `baseUrl` |
| Get many calls | `GET /calls` | `baseUrl` |
| Update a call | `PUT /calls/{callId}` | `callId`, `baseUrl` |
| Create a contact | `POST /contacts` | `firstName`, `genderId`, `baseUrl` |
| Delete a contact | `DELETE /contacts/{contactId}` | `contactId`, `baseUrl` |
| Get a contact | `GET /contacts/{contactId}` | `contactId`, `baseUrl` |
| Get many contacts | `GET /contacts` | `baseUrl` |
| Update a contact | `PUT /contacts/{contactId}` | `contactId`, `baseUrl` |
| Create a contact field | `POST /contactfields` | `contactId`, `contactFieldTypeId`, `data`, `baseUrl` |
| Delete a contact field | `DELETE /contactfields/{contactFieldId}` | `contactFieldId`, `baseUrl` |
| Get a contact field | `GET /contactfields/{contactFieldId}` | `contactFieldId`, `baseUrl` |
| Update a contact field | `PUT /contactfields/{contactFieldId}` | `contactId`, `contactFieldId`, `contactFieldTypeId`, `data`, `baseUrl` |
| Add a tag to a contact | `POST /contacts/{contactId}/setTags` | `contactId`, `tagsToAdd`, `baseUrl` |
| Remove a tag from a contact | `POST /contacts/{contactId}/unsetTag` | `contactId`, `tagsToRemove`, `baseUrl` |
| Create a conversation | `POST /conversations` | `contactId`, `contactFieldTypeId`, `happenedAt`, `baseUrl` |
| Delete a conversation | `DELETE /conversations/{conversationId}` | `conversationId`, `baseUrl` |
| Get a conversation | `GET /conversations/{conversationId}` | `conversationId`, `baseUrl` |
| Update a conversation | `PUT /conversations/{conversationId}` | `conversationId`, `contactFieldTypeId`, `happenedAt`, `baseUrl` |
| Add a message to a conversation | `POST /conversations/{conversationId}/messages` | `conversationId`, `content`, `writtenAt`, `writtenByMe`, `baseUrl` |
| Update a message in a conversation | `PUT /conversations/{conversationId}/messages/{messageId}` | `messageId`, `conversationId`, `baseUrl` |
| Create a journal entry | `POST /journal` | `title`, `post`, `baseUrl` |
| Delete a journal entry | `DELETE /journal/{journalId}` | `journalId`, `baseUrl` |
| Get a journal entry | `GET /journal/{journalId}` | `journalId`, `baseUrl` |
| Get many journal entries | `GET /journal` | `baseUrl` |
| Update a journal entry | `PUT /journal/{journalId}` | `journalId`, `baseUrl` |
| Create a note | `POST /notes` | `contactId`, `body`, `baseUrl` |
| Delete a note | `DELETE /notes/{noteId}` | `noteId`, `baseUrl` |
| Get a note | `GET /notes/{noteId}` | `noteId`, `baseUrl` |
| Get many notes | `GET /notes` | `baseUrl` |
| Update a note | `PUT /notes/{noteId}` | `noteId`, `baseUrl` |
| Create a reminder | `POST /reminders` | `frequencyType`, `initialDate`, `title`, `baseUrl` |
| Delete a reminder | `DELETE /reminders/{reminderId}` | `reminderId`, `baseUrl` |
| Get a reminder | `GET /reminders/{reminderId}` | `reminderId`, `baseUrl` |
| Get many reminders | `GET /reminders` | `baseUrl` |
| Update a reminder | `PUT /reminders/{reminderId}` | `reminderId`, `baseUrl` |
| Create a tag | `POST /tags` | `name`, `baseUrl` |
| Delete a tag | `DELETE /tags/{tagId}` | `tagId`, `baseUrl` |
| Get a tag | `GET /tags/{tagId}` | `tagId`, `baseUrl` |
| Get many tags | `GET /tags` | `baseUrl` |
| Update a tag | `PUT /tags/{tagId}` | `tagId`, `name`, `baseUrl` |
| Create a task | `POST /tasks` | `contactId`, `title`, `baseUrl` |
| Delete a task | `DELETE /tasks/{taskId}` | `taskId`, `baseUrl` |
| Get a task | `GET /tasks/{taskId}` | `taskId`, `baseUrl` |
| Get many tasks | `GET /tasks` | `baseUrl` |
| Update a task | `PUT /tasks/{taskId}` | `taskId`, `baseUrl` |

## Moonshot Kimi

- **n8n node:** [Moonshot Kimi](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.moonshot/) (`@n8n/n8n-nodes-langchain.moonshot`, version 1), 2 actions.
- **n8n performs it:** runs on the n8n credential *Moonshot* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/moonshot/)).
- **Veefore performs it:** 2 of 2 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://api.moonshot.ai/v1`.
- **Get the key:** [platform.kimi.ai](https://platform.kimi.ai/console/api-keys)

**Moonshot Kimi in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Analyze image | `POST /chat/completions` | `modelId` |
| Message a model | `POST /chat/completions` | `modelId` |

## MQTT

- **n8n node:** [MQTT](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mqtt/) (`n8n-nodes-base.mqtt`, version 1), 1 action.
- **n8n performs it:** runs on the n8n credential *MQTT* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mqtt/)).
- **Veefore performs it:** not available. MQTT is not a web API (a database, queue, file transfer or local step), so only n8n can perform it.

**MQTT in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| MQTT | n8n performs it | `topic` |

## MSG91

- **n8n node:** [MSG91](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.msg91/) (`n8n-nodes-base.msg91`, version 1), 1 action.
- **n8n performs it:** runs on the n8n credential *Msg91 Api* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/msg91/)).
- **Veefore performs it:** 1 of 1 action, with the key in the query string, as `?authkey=<key>`.
- **You enter:** Auth key.
- **API address:** `https://api.msg91.com/api`.
- **Get the key:** [control.msg91.com](https://control.msg91.com/app/)

**MSG91 in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Send an SMS | `GET /sendhttp.php` | `from`, `to`, `message` |

## MySQL

- **n8n node:** [MySQL](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mysql/) (`n8n-nodes-base.mySql`, version 2.5), 6 actions.
- **n8n performs it:** runs on the n8n credential *MySQL* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/mysql/)).
- **Veefore performs it:** not available. MySQL is not a web API (a database, queue, file transfer or local step), so only n8n can perform it.

**MySQL in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Delete table or rows | n8n performs it | `table` |
| Execute a SQL query | n8n performs it | `query` |
| Insert rows in a table | n8n performs it | `table` |
| Insert or update rows in a table | n8n performs it | `table`, `columnToMatchOn` |
| Select rows from a table | n8n performs it | `table` |
| Update rows in a table | n8n performs it | `table`, `columnToMatchOn` |
