# Integration API Documentation ## Introduction This reference provides detailed information on managing integrations via NetBird Cloud API. ## Authentication Authentication is required for all API requests. Please refer to the [authentication guideline](https://docs.netbird.io/how-to/access-netbird-public-api) for how to create and authenticate API calls using Personal Access Tokens (PAT). ## Google Workspace Integration ### Create Integration The new integration synchronization is enabled by default when created. Request: - `serviceAccountKey`: A Base64 encoded string derived from a service account key JSON. For the creation of the service account key JSON, refer to the provided [IdP guideline](idp.md). Encode service account JSON to base64 by using the command: ```shell base64 -i ``` - `syncInterval`: Optional. The default value is 300 seconds. ```shell curl --request POST \ --url https://api.netbird.io/api/integrations/google-idp \ --header 'Accept: application/json' \ --header 'Authorization: Token ' \ --header 'Content-Type: application/json' \ --data '{ "serviceAccountKey": "", "customerID": "" }' ``` Response ```json { "id": , "customerId": " \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json { "id": , "customerId": "' ``` Response ```json [ { "id": , "customerId": "", "syncInterval": 300, "enabled": true } ] ``` ### Force Integration Sync Request ```shell curl --request GET \ --url https://api.netbird.io/api/integrations/google-idp//sync \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json { "result": "ok" } ``` ### Update Integration Updates the selected parameters for a specific integration. Request - `serviceAccountKey`: A Base64 encoded string derived from a service account key JSON.For the creation of the service account key JSON, refer to the provided [IdP guideline](idp.md). Encode service account JSON to base64 by using the command: ```shell base64 -i ``` - `syncInterval`: Optional. Should not be less than 300 seconds. - `enabled`: Optional. Used to disable/enable the integration. ```shell curl --request PUT \ --url https://api.netbird.io/api/integrations/google-idp/ \ --header 'Accept: application/json' \ --header 'Authorization: Token ' \ --header 'Content-Type: application/json' \ --data '{ "serviceAccountKey": "", "syncInterval": 300, "enabled": false }' ``` Response ```json { "id": , "customerId": "", "syncInterval": 300, "enabled": false } ``` ### Delete Integration Request ```shell curl --request DELETE \ --url https://api.netbird.io/api/integrations/google-idp/ \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json {} ``` ### Get Integration sync logs Request ```shell curl --request GET \ --url https://api.netbird.io/api/integrations/google-idp//logs \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json [ { "id": , "level": "info", "timestamp": "timestamp UTC", "message": "message" } ] ``` ## Azure AD Integration Before proceeding with the setup, please ensure that you have configured Azure as per the guidelines outlined in the [IdP guideline](idp.md). ### Create Integration The new integration synchronization is enabled by default when created. Request: - `clientSecret`: A Base64 encoded string derived from Azure Directory application client credential secret. Encode service account JSON to base64 by using the command: ```shell echo -n | base64 ``` - `clientId`: Azure Directory application client Id. - `tenantId`: Azure Directory ID. - `syncInterval`: Optional. The default value is 300 seconds. ```shell curl --request POST \ --url https://api.netbird.io/api/integrations/azure-idp \ --header 'Accept: application/json' \ --header 'Authorization: Token ' \ --header 'Content-Type: application/json' \ --data '{ "clientSecret": "", "clientId": "", "tenantId": "" }' ``` Response ```json { "id": , "clientId": "", "tenantId": "", "syncInterval": 300, "enabled": true } ``` ### Get Integration by ID Request ```shell curl --request GET \ --url https://api.netbird.io/api/integrations/azure-idp/ \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json { "id": , "clientId": "", "tenantId": "", "syncInterval": 300, "enabled": true } ``` ### Get All Integrations By AccountID Request ```shell curl --request GET \ --url https://api.netbird.io/api/integrations/azure-idp \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json [ { "id": , "clientId": "", "tenantId": "", "syncInterval": 300, "enabled": true } ] ``` ### Force Integration Sync Request ```shell curl --request GET \ --url https://api.netbird.io/api/integrations/azure-idp//sync \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json { "result": "ok" } ``` ### Update Integration Updates the selected parameters for a specific integration. Request - `clientSecret`: A Base64 encoded string derived from Azure Directory application client credential secret. Encode service account JSON to base64 by using the command: ```shell echo -n | base64 ``` - `syncInterval`: Optional. Should not be less than 300 seconds. - `enabled`: Optional. Used to disable/enable the integration. ```shell curl --request PUT \ --url https://api.netbird.io/api/integrations/azure-idp/ \ --header 'Accept: application/json' \ --header 'Authorization: Token ' \ --header 'Content-Type: application/json' \ --data '{ "clientSecret": "", "syncInterval": 300, "enabled": false }' ``` Response ```json { "id": , "clientId": "", "tenantId": "", "syncInterval": 300, "enabled": true } ``` ### Delete Integration Request ```shell curl --request DELETE \ --url https://api.netbird.io/api/integrations/azure-idp/ \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json {} ``` ### Get Integration sync logs Request ```shell curl --request GET \ --url https://api.netbird.io/api/integrations/azure-idp//logs \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json [ { "id": , "level": "info", "timestamp": "timestamp UTC", "message": "message" } ] ```