Files

59 lines
2.5 KiB
Python

#!/usr/bin/env python3
"""Open Notebook API setup helper — reads .env vars, drives provider setup."""
import json, os, sys, urllib.request
BASE = os.environ.get("ON_BASE", "http://72.62.251.51:5055")
PW = os.environ.get("ON_PW", "UltimaHub2026!Notes")
def call(method, path, body=None, timeout=90):
req = urllib.request.Request(BASE + path, method=method)
req.add_header("Authorization", "Bearer " + PW)
req.add_header("Content-Type", "application/json")
data = json.dumps(body).encode() if body is not None else None
try:
with urllib.request.urlopen(req, data=data, timeout=timeout) as r:
return r.status, json.loads(r.read().decode())
except urllib.error.HTTPError as e:
try:
return e.code, json.loads(e.read().decode())
except Exception:
return e.code, e.read().decode()[:300]
except Exception as e:
return -1, str(e)
if __name__ == "__main__":
cmd = sys.argv[1]
if cmd == "creds":
print(json.dumps(call("GET", "/api/credentials")[1], indent=1))
elif cmd == "discover":
s, r = call("POST", f"/api/credentials/{sys.argv[2]}/discover")
print("discover:", s, json.dumps(r)[:800])
elif cmd == "register":
s, r = call("POST", f"/api/credentials/{sys.argv[2]}/register-models")
print("register:", s, json.dumps(r)[:800])
elif cmd == "add-creds":
body = {"provider": sys.argv[2], "name": sys.argv[3]}
if len(sys.argv) > 4 and sys.argv[4]:
body["api_key"] = sys.argv[4]
if len(sys.argv) > 5 and sys.argv[5]:
body["base_url"] = sys.argv[5]
s, r = call("POST", "/api/credentials", body)
print("add:", s, json.dumps(r)[:800])
elif cmd == "autoassign":
s, r = call("POST", "/api/models/auto-assign")
print("auto-assign:", s, json.dumps(r)[:800])
elif cmd == "post":
path = sys.argv[2]
body = json.loads(sys.argv[3]) if len(sys.argv) > 3 else None
s, r = call("POST", path, body)
print(s, json.dumps(r)[:900])
elif cmd == "defaults":
print(json.dumps(call("GET", "/api/models/defaults")[1], indent=1))
elif cmd == "models":
s, r = call("GET", "/api/models")
print("models:", s)
for m in (r if isinstance(r, list) else r.get("models", []))[:40]:
print(" -", m.get("provider"), "|", m.get("model_id") or m.get("id"), "|", m.get("modality"), "| enabled:", m.get("enabled"))
elif cmd == "providers":
print(json.dumps(call("GET", "/api/models/providers")[1], indent=1)[:900])