Basic Auth is supported in most request libraries and is often as simple as adding a username- and password parameter. To get you up and running quickly, we present a few language-specific methods by fetching a list of projects available from the REST API using a Service Account for access control.
Add the following environment variables as they will be used to authenticate the API. Replace the values of the form <VARIABLE>
with your own details.
Copy export DT_SERVICE_ACCOUNT_KEY_ID=<YOUR_SERVICE_ACCOUNT_KEY_ID>
export DT_SERVICE_ACCOUNT_SECRET=<YOUR_SERVICE_ACCOUNT_SECRET>
Create and enter a new directory that will contain the example project.
Python 3.11 Node.js 20 Go 1.20 cURL
Install the necessary dependencies.
Create a file main.py
with the following content.
Copy import os
import requests
if __name__ == '__main__':
projects = requests.get(
url='https://api.d21s.com/v2/projects',
auth=(
os.environ.get('DT_SERVICE_ACCOUNT_KEY_ID'),
os.environ.get('DT_SERVICE_ACCOUNT_SECRET'),
)
)
print(projects.json())
Install the necessary dependencies.
Copy npm install axios@1.4.0
Create a file index.js
with the following content.
Copy const axios = require('axios').default;
async function main() {
const response = await axios({
method: 'GET',
url: 'https://api.disruptive-technologies.com/v2/projects',
auth: {
username: process.env.DT_SERVICE_ACCOUNT_KEY_ID,
password: process.env.DT_SERVICE_ACCOUNT_SECRET,
}
})
console.log(JSON.stringify(response.data, null, 2))
}
main()
Initialize a new Go project.
Create a file main.go
with the following content.
Copy package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"os"
"time"
)
func main() {
// Construct endpoint URL for listing devices in project.
deviceListUrl := "https://api.d21s.com/v2/projects"
// Create a custom http Client with timeout.
client := &http.Client{Timeout: time.Second * 3}
// Create the request object with method, URL, but no optional body.
req, err := http.NewRequest("GET", deviceListUrl, nil)
if err != nil {
log.Fatal(err)
}
// Set the request's Authorization header to use HTTP Basic Authentication.
req.SetBasicAuth(
os.Getenv("DT_SERVICE_ACCOUNT_KEY_ID"),
os.Getenv("DT_SERVICE_ACCOUNT_SECRET"),
)
// Send an HTTP request and return an HTTP response.
response, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer response.Body.Close()
// Convert response body to map.
var body map[string]interface{}
if err = json.NewDecoder(response.Body).Decode(&body); err != nil {
log.Fatal(err)
}
// Pretty print the response body.
prettyBody, _ := json.MarshalIndent(body, "", " ")
fmt.Println(string(prettyBody))
}
Copy curl -X GET "https://api.disruptive-technologies.com/v2/projects" \
-H "accept: application/json" \
-u $DT_SERVICE_ACCOUNT_KEY_ID:$DT_SERVICE_ACCOUNT_SECRET
Running the file should list all projects available to the Service Account.