Basic Auth
A guide on how to use Basic Auth for authenticating our REST API.
Overview
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.
Prerequisites
Service Account Credentials A Service Account must be created with a membership in the target project. Any role will suffice.
Code Sample
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.
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.
Install the necessary dependencies.
requests==2.31.0Create a file main.py with the following content.
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.
npm install [email protected]Create a file index.js with the following content.
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.
go mod init exampleCreate a file main.go with the following content.
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))
}
curl -X GET "https://api.disruptive-technologies.com/v2/projects" \
-H "accept: application/json" \
-u $DT_SERVICE_ACCOUNT_KEY_ID:$DT_SERVICE_ACCOUNT_SECRETRunning the file should list all projects available to the Service Account.
While this example sends a GET request to the API that lists all available projects, the request URL can be replaced with any call in our REST API Reference.
Last updated
Was this helpful?