has the api2 changed for datacenter manager?

ospfeigrp

New Member
Apr 30, 2024
6
0
1
i keep getting authentication failed - no authentication credentials provided. can anyone give me a curl example or postman for example? i have setup a user just using the default root@pam and the name of the token is root@pam!datacenter but cant seem to get it to work out side the browser.

i am using requests from python heres the code minus the token:
Python:
import requests

headers = {
    'Authorization': 'PBSAPIToken=root@pam!datacenter:<TOKEN>'
}
response = requests.get('https://192.168.1.100:8443/api2/json/', headers=headers, verify=False)
print(resonse.json())


edit: this works

Python:
import requests

url = "https://192.168.1.100:8443/api2/json/"

headers = {"authorization": "PDMAPIToken=root@pdm!datacenter:<TOKEN-PART>"}

response = requests.get(url, headers=headers, verify=False)

print(response.json())
 
Last edited:
solved but on another noter im writing a helper class for the api like how proxmox datacenter manager works for python here is the class so far:


Python:
#this script is called datacenter.py

import requests
class DC():
    def __init__(self,ip,port,token,verify):
        self.DC = DC
        self.ip = ip
        self.port = port
        self.token = token
        self.verify = verify
        self.baseUrl = "https://{}:{}/api2/json".format (ip,port)
    @property
    def getBase(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl, headers=headers, verify=self.verify)
        return response.json()

    @property
    def getAccess(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/access", headers=headers, verify=self.verify)
        return response.json()

    @property
    def getConfig(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/config", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getNodes(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/nodes", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getPbs(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/pbs", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getPing(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/ping", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getPve(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/pve", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getRemotes(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/remotes", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getResources(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/resources", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getSdn(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/sdn", headers=headers,  verify=self.verify)
        return response.json()

    @property
    def getVersion(self):
        headers = {"authorization": "PDMAPIToken=" + self.token}
        response = requests.get(self.baseUrl + "/version", headers=headers,  verify=self.verify)
        return response.json()



Then in app .py or whatever script: you would use:

Code:
from datacenter import DC
datacenter = DC("192.168.1.100",8443,"root@pdm!mytokenname:example-token-long-string", False)
print(datacenter.getVersion)


what do you think am i wasting my time with this or is it of any use?