Use case: device deletion with REST API

<< Click to Display Table of Contents >>

Raynet One > 1.1 > User Guide > Technical overview > API 

Use case: device deletion with REST API

A common task of IT landscape maintenance is the deletion of devices. Old devices need to be cleaned up. Sold devices need to be removed. The IT administration can automate the device removal from the device registries as part of their device scripts.

Requirements

Python 3+

Requests library (https://docs.python-requests.org/en/latest/)

API key

frontend URL

Program content

import requests
 
APIKEY = "PUT API KEY HERE"
FRONTEND = "PUT FRONTEND URL HERE"
 
HEADERS = { "ApiKey": APIKEY }
 
def is_trial_device_name(S):
    return S.startswith("trial-")
 
def obtain_paged(EP):
    P = {}
    P["count"] = 1000
    
    items = []
    
    while True:
        result = requests.get(EP, params=P, headers=HEADERS)
        
        if result.ok == False:
            break
        
        objs = result.json()
        
        if objs == None:
            return
        
        if len(objs) == 0:
            return
        
        items.extend(objs)
        
        lastobj = objs[len(objs)-1]
        
        P["LastId"] = lastobj["id"]
    
    return items
 
def main():
    devs = obtain_paged(FRONTEND + "/api/v1/Devices")
    
    if devs == None:
        print( "failed to fetch devices from the frontend (" + FRONTEND + ")" )
        return
    
    print( "garbage collecting devices..." )
    
    has_collected_device = False
    
    for D in devs:
        if "name" in D and is_trial_device_name(D["name"]):
            params = {
                "deviceId": D["id"]
            }
            
            R = requests.delete(FRONTEND + "/api/v1/Operations/device-id-delete", headers=HEADERS, params=params)
            
            if R.ok:
                print( "removed device " + D["name"] )
                
                has_collected_device = True
            else:
                print( "failed to remove device " + D["name"] + " (" + str(R.status_code) + ")" )
    
    if has_collected_device == False:
        print( "didn't remove any device" )