API

  • API Erişimi

    API Erişimi ekranından, harici sistem ve servisleri Berqnet SASE ile entegre etmek için client kimlik bilgileri (Client ID ve Client Secret) oluşturabilirsiniz. Bu kimlik bilgileri, üçüncü taraf uygulamalardan gelen API çağrılarının yetkilendirilmesi ve doğrulanması için kullanılır.

    Özel bir kontrol paneli geliştirirken, kullanıcı tanımlama sürecini otomatikleştirirken veya kimlik sağlayıcılarını entegre ederken ihtiyaç duyduğunuz token'lar bu ekrandan yönetilir.

    Ayarlar → Konfigürasyonlar → API Erişimi

    Her kart, mevcut bir API Erişimi yapılandırmasını temsil eder ve şu bilgileri içerir:

    Sütun Açıklama
    Başlık Entegrasyonu tanımlamak için belirlediğiniz etiket
    Son Geçerlilik Tarihi Token'ın geçersiz olacağı tarih
    Client ID Entegrasyonun genel kimlik tanımlayıcısı
    Client Secret Kimlik doğrulama için kullanılan özel token

    Her biri farklı bir kullanım senaryosuna bağlı olacak şekilde, aynı anda birden fazla yapılandırma yönetebilirsiniz.

     

    Yeni Bir API Erişimi Oluşturun

    Kurulum penceresini açmak için Yeni Oluştur'a tıklayın. İki alanı doldurmanız gerekir:

    Alan Açıklama
    Başlık Entegrasyonun adı
    Uygulama Türü Entegre edilecek sistemi seçin:
    Active Directory: AD kurulumunuzla entegrasyon için  
    Özel: Listede yer almayan dahili araçlar, scriptler veya diğer servisler için  


    💡Active Directory entegrasyonunda yardıma mı ihtiyacınız var? Active Directory Entegrasyon Kılavuzu'na göz atın.

    Kaydettiğinizde bir Client ID ve Client Secret oluşturulur. Bu değerleri, harici uygulamanızın API başlıklarında güvenli iletişim için kullanın.

     

    API referansları dokümanı için makaleye göz atabilirsiniz.

     

    En İyi Uygulamalar

    • Client Secret'ınızı güvende tutun. Bu değer, entegrasyon adına tam erişim sağlar.
    • Token'ları periyodik olarak değiştirin. Anahtarları API üzerinden veya yeni bir kayıt oluşturarak yenileyebilirsiniz.
    • Token'larınızı net etiketleyin. Sisteminiz büyüdükçe karışıklığı önlemek için anlamlı başlıklar kullanın.
    Daha fazlasını göster
  • API Referansları

    Berqnet SASE API'sini etkin şekilde kullanabilmeniz için her endpoint'e ait parametreler, istek ve yanıt örnekleri ile kullanım yönergelerini aşağıda bulabilirsiniz.

    Cihazlar

    Cihazlar API Referansı dokümanı ile cihazlarınızı yönetebilirsiniz. Bu API sayesinde cihaz envanteriniz üzerinde kapsamlı kontrol sağlar, gerektiğinde yapılandırmaları izleyebilir ve güncelleyebilirsiniz.

    Etiketler

    Etiketler API Referansı dokümanı ile oluşturduğunuz etiketleri yönetebilirsiniz.

    Kullanıcı

    Kullanıcılar API Referansı dokümanı ile kullanıcı silme veya cihaz bağlantısı sonlandırma gibi işlemleri gerçekleştirebilirsiniz.

     

    Daha fazlasını göster
  • Kullanıcılar API Referansı

    Kullanıcı hesaplarını ve cihaz bağlantılarını yönetmenize ilişkin detayları aşağıda bulabilirsiniz.


    Kullanıcı Silme

    Bir kullanıcıyı e-posta adresine göre siler. Kullanıcı bağlıysa, bu istek cihaz bağlantısını da sonlandırır.

    DELETE https://api.berqnetservices.com/users?email=test@berqnet.com

    Request Parametreleri

    AdTürAçıklama
    emailstringKullanıcının e-posta adresi

    Response:

    200 Kullanıcı Başarıyla Silindi

    {
      "date": "2024-11-18T08:25:50.587Z",
      "status": true,
      "messages": [],
      "results": {}
    }
    

    400 Geçersiz Parametreler

    {
      "date": "2024-11-18T08:18:39.086Z",
      "status": false,
      "messages": [
        {
          "code": "UserNotFound",
          "description": "User cannot be found."
        }
      ],
      "results": []
    }
    

    Bu metodu nasıl çağırabileceğinize ilişkin bir örnek:

    curl --request DELETE \
     --url '<https://api.berqnetservices.com/users?email=test@berqnet.com>' \
     --header 'Authorization: Bearer YOUR_TOKEN'
    

    Kullanıcı Bağlantısını Sonlandırma

    Bir kullanıcının tüm cihaz bağlantılarını e-posta adresine göre sonlandırır.

    POST https://api.berqnetservices.com/users/vpn/drop

    Request Parametreleri

    AdTürAçıklama
    emailstringKullanıcının e-posta adresi

    Response:

    200 Kullanıcı VPN Bağlantısı Başarıyla Düşürüldü

    {
      "date": "2024-11-18T08:25:50.587Z",
      "status": true,
      "messages": [],
      "results": {}
    }
    

    400 Geçersiz Parametreler

    {
      "date": "2024-11-18T08:18:39.086Z",
      "status": false,
      "messages": [
        {
          "code": "UserNotFound",
          "description": "User cannot be found."
        }
      ],
      "results": []
    }
    

    Bu metodu nasıl çağırabileceğinize ilişkin bir örnek:

    curl --request POST \
      --url '<https://api.berqnetservices.com/users/vpn/drop>' \
      --header 'Authorization: Bearer YOUR_TOKEN' \
      --header 'Content-Type: application/json' \
      --data '{
        "email": "test@berqnet.com"
    }'
    
    Daha fazlasını göster
  • Etiketler API Referansı

    Etiketler listesini çekme, yeni etiket oluşturma ve varolan etiketi güncelleme dahil olmak üzere sisteminizdeki etiketleri etkin şekilde yönetmenize ve kullanmanıza ilişkin detayları aşağıda bulabilirsiniz.

    Etiketler Listesi Çekme

    GET https://api.berqnetservices.com/tags

    Request Parametreleri

    AdTürAçıklama
    pagenumberSonuçların belirli bir bölümüne erişmek için sayfa numarasını belirtin.
    limitnumberİstek başına döndürülen sonuç sayısına sınır koyun.

     

    Response:

    200 Etiketler Başarıyla Getirildi

    {
        "date": "2024-04-18T21:20:51.734Z",
        "status": true,
        "messages": [],
        "results": []
    }
    

    400 Geçersiz Parametreler

    {
        "date": "2024-04-18T21:20:51.734Z",
        "status": false,
        "messages": [],
        "results": []
    }
    

    Bu metodu nasıl çağırabileceğinize ilişkin bir örnekler:

    curl

    curl --location '<https://api.berqnetservices.com/tags?page=1&limit=100>' \
    --header 'Authorization: Bearer YOUR_TOKEN'
    

    NodeJS

    const axios = require('axios');
    let config = {
        method: 'get',
        maxBodyLength: Infinity,
        url: '<https://api.berqnetservices.com/tags?page=1&limit=100>',
        headers: {
            'Authorization': 'Bearer YOUR_TOKEN'
        }
    };
    axios.request(config)
    .then((response) => {
        console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
        console.log(error);
    });
    

    Go

    package main
    import (
      "fmt"
      "net/http"
      "io/ioutil"
    )
    func main() {
      url := "<https://api.berqnetservices.com/tags?page=1&limit=100>"
      method := "GET"
      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, nil)
      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Authorization", "Bearer YOUR_TOKEN")
      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    
    Daha fazlasını göster
  • Cihazlar API Referansı

    Cihaz envanterinizi API üzerinden yönetmeye ilişkin kapsamlı bilgileri, cihaz yapılandırmalarının izlenmesi ve güncellenmesine dair detayları aşağıda bulabilirsiniz.


    Cihaz Listesi Çekme

    GET https://api.berqnetservices.com/devices

    Request Parametreleri

    AdTürAçıklama
    pagenumberSonuçların belirli bir bölümüne erişmek için sayfa numarasını belirtin
    orderstringSonuçları artan veya azalan sırada sıralayın
    filter_namestringBelirli cihazları bulmak için isme göre arama yapın
    limitnumberİstek başına döndürülen sonuç sayısına sınır koyun
    sortstringSonuçları izin verilen alanlara göre sıralayın: name, local_ip, os.type, online status, last_seen_at, network_interfaces.mac veya created_at

    Response:

    200 Cihazlar Başarıyla Getirildi

    {
        "date": "2024-04-18T21:06:38.569Z",
        "status": true,
        "messages": [],
        "results": {
            "total": 41,
            "entries": [
                {
                    "site_id": 848,
                    "node_id": 1633,
                    "user_id": null,
                    "name": "John's Laptop",
                    "alias": "John's Laptop",
                    "os": {
                        "type": "windows",
                        "version": ""
                    },
                    "public_ip": null,
                    "local_ip": "192.168.249.8",
                    "private_interface_id": 2339,
                    "uuid": null,
                    "epp_device_identifiers": {
                        "sentinelone": null,
                        "bitdefender": null,
                        "microsoft_defender": null
                    },
                    "network_interfaces": [
                        {
                            "mac": "b0:a4:60:76:bd:c1",
                            "inet": [
                                null
                            ]
                        }
                    ],
                    "is_ssl_inspection_enabled": false,
                    "tunnel_configuration": {},
                    "is_online": false,
                    "last_seen_at": "2023-10-18T08:53:02.000Z",
                    "created_at": "2023-10-18T07:25:36.000Z",
                    "updated_at": "2023-10-18T08:53:02.000Z",
                    "sdn_id": 183,
                    "id": "73ibf44BYIdzK88IGmtp",
                    "tags": []
                }
            ]
        }
    }
    

    400 Geçersiz Parametreler

    {
        "date": "2024-04-18T21:08:12.946Z",
        "status": false,
        "messages": [
            {
                "code": "BadRequestException",
                "description": "Sort must be specified using one of the following values: name, local_ip, os.type, online, last_seen_at, network_interfaces.mac, or created_at."
            }
        ],
        "results": []
    }
    

    Bu metodu nasıl çağırabileceğinize ilişkin bir örnekler:

    curl

    curl --location '<https://api.berqnetservices.com/devices?page=1&order=asc&search=MyDevice&limit=1&sort=name3>' \
    --header 'Authorization: Bearer YOUR_TOKEN'
    

    NodeJS

    const axios = require('axios');
    
    let config = {
        method: 'get',
        maxBodyLength: Infinity,
        url: '<https://api.berqnetservices.com/devices?page=1&order=asc&search=test&limit=1&sort=name3>',
        headers: {
            'Authorization': 'Bearer YOUR_TOKEN'
        }
    };
    
    axios.request(config)
    .then((response) => {
        console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
        console.log(error);
    });
    

    Go

    package main
    
    import (
      "fmt"
      "net/http"
      "io/ioutil"
    )
    
    func main() {
    
      url := "<https://api.berqnetservices.com/devices?page=1&order=asc&search=test&limit=1&sort=name3>"
      method := "GET"
    
      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, nil)
    
      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Authorization", "Bearer YOUR_TOKEN")
    
      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
    
      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    

    Cihaz Güncelleme

    PUT <https://api.berqnetservices.com/devices/:id>

    Request Parametreleri

    AdTürAçıklama
    namestringCihazın güncellenmiş adı
    tagsarrayCihaza atanmış güncellenmiş etiket listesi
    aliasstringCihazın güncellenmiş takma adı

    Response:

    200 Cihaz Başarıyla Güncellendi

    {
        "date": "2024-04-18T21:18:29.977Z",
        "status": true,
        "messages": [],
        "results": {
            "site_id": 848,
            "node_id": 1633,
            "user_id": null,
            "name": "Richard",
            "alias": "Richard's iPhone",
            "os": {
                "type": "ios 15.1.0",
                "version": null
            },
            "public_ip": null,
            "local_ip": "192.168.2.53",
            "private_interface_id": "2093",
            "uuid": null,
            "epp_device_identifiers": {
                "sentinelone": null,
                "bitdefender": null,
                "microsoft_defender": null
            },
            "network_interfaces": [
                {
                    "inet": [
                        "192.168.2.53"
                    ],
                    "mac": "26:b1:0a:6d:c9:78"
                }
            ],
            "is_ssl_inspection_enabled": true,
            "tunnel_configuration": {},
            "is_online": false,
            "last_seen_at": "2023-05-30T08:21:17.000Z",
            "created_at": "2023-05-30T05:12:10.000Z",
            "updated_at": "2024-04-18T21:18:29.628Z",
            "sdn_id": 183,
            "id": "bnii4I0BgdRKipEj9t7A",
            "allowed_sites": [
                848
            ],
            "tags": [
                "hWPsHY4BKyic2m5h68XM",
                "0Hif4I0BgdRKipEjFN2n",
                "lp6mcIsBT1DQPYTabiYd"
            ],
            "static_ips": [
                {
                    "ip": "192.168.249.4/32",
                    "site_id": 848,
                    "private_interface_id": 2601
                }
            ]
        }
    }
    

    400 Geçersiz Parametreler

    {
        "date": "2024-04-18T21:20:51.734Z",
        "status": false,
        "messages": [
            {
                "code": "BadRequestException",
                "description": "Name must be a string"
            }
        ],
        "results": []
    }
    

    Bu metodu nasıl çağırabileceğinize ilişkin bir örnekler:

    curl

    curl --location --request PUT '<https://api.berqnetservices.com/devices/bnii4I0BgdRKipEj9t7A>' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer YOUR_TOKEN' \
    --data '{
        "name": "Test",
        "tags": [
            "hWPsHY4BKyic2m5h68XM",
            "0Hif4I0BgdRKipEjFN2n",
            "lp6mcIsBT1DQPYTabiYd"
        ]
    }'
    

    NodeJS

    const axios = require('axios');
    let data = JSON.stringify({
        "name": "Test",
        "tags": [
            "hWPsHY4BKyic2m5h68XM",
            "0Hif4I0BgdRKipEjFN2n",
            "lp6mcIsBT1DQPYTabiYd"
        ]
    });
    
    let config = {
        method: 'put',
        maxBodyLength: Infinity,
        url: '<https://api.berqnetservices.com/devices/bnii4I0BgdRKipEj9t7A>',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer YOUR_TOKEN',
        },
        data : data
    };
    
    axios.request(config)
    .then((response) => {
        console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
        console.log(error);
    });
    

    Go

    package main
    
    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )
    
    func main() {
    
      url := "<https://api.berqnetservices.com/devices/bnii4I0BgdRKipEj9t7A>"
      method := "PUT"
    
      payload := strings.NewReader(`{
        "name": "Test",
        "tags": [
            "hWPsHY4BKyic2m5h68XM",
            "0Hif4I0BgdRKipEjFN2n",
            "lp6mcIsBT1DQPYTabiYd"
        ]
    }`)
    
      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)
    
      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
      req.Header.Add("Authorization", "Bearer YOUR_TOKEN")
    
      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
    
      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    
    Daha fazlasını göster