# 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 Endpoints ### Create Integration By default, for new integration synchronization is enabled. Request: - `service_account_key`: 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 ``` - `sync_interval`: 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 '{ "service_account_key": "", "customerID": "" }' ``` Response ```json { "id": , "customer_id": " \ --header 'Accept: application/json' \ --header 'Authorization: Token ' ``` Response ```json { "id": , "customer_id": "' ``` Response ```json [ { "id": , "customer_id": "", "sync_interval": 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 - `service_account_key`: 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 ``` - `sync_interval`: 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 '{ "service_account_key": "", "sync_interval": 300, "enabled": false }' ``` Response ```json { "id": , "customer_id": "", "sync_interval": 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 Endpoints 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 By default, for new integration synchronization is enabled. Request: - `client_secret`: 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 ``` - `client_id`: Azure Directory application client Id. - `tenant_id`: Azure Directory ID. - `sync_interval`: 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 '{ "client_secret": "", "client_id": "", "tenant_id": "" }' ``` Response ```json { "id": , "client_id": "", "tenant_id": "", "sync_interval": 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": , "client_id": "", "tenant_id": "", "sync_interval": 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": , "client_id": "", "tenant_id": "", "sync_interval": 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 - `client_secret`: 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 ``` - `sync_interval`: 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 '{ "client_secret": "", "sync_interval": 300, "enabled": false }' ``` Response ```json { "id": , "client_id": "", "tenant_id": "", "sync_interval": 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" } ] ```