import os,json,urllib.request,urllib.error,sys
base=os.environ['BASE_URL'].rstrip('/')
email=os.environ['ADMIN_EMAIL']; password=os.environ['ADMIN_PASSWORD']; group=int(os.environ.get('GROUP_ID','89'))
def req(method,path,headers=None,obj=None):
 data=None; h=headers or {}
 if obj is not None:
  data=json.dumps(obj).encode(); h={**h,'Content-Type':'application/json'}
 r=urllib.request.Request(base+path,data=data,headers=h,method=method)
 try:
  with urllib.request.urlopen(r,timeout=30) as resp:
   return resp.status,json.loads(resp.read().decode())
 except urllib.error.HTTPError as e:
  body=e.read().decode('utf-8','replace')
  print(json.dumps({'http':e.code,'error':body[:500]},ensure_ascii=False)); sys.exit(1)
code,login=req('POST','/api/v1/auth/login',obj={'email':email,'password':password,'turnstile_token':'skip'})
tok=login.get('data',{}).get('access_token') or login.get('access_token')
code,created=req('POST','/api/v1/keys',headers={'Authorization':'Bearer '+tok},obj={'name':'release-smoke-grok-cache-20260430','group_id':group,'expires_in_days':1,'quota':1})
key=created.get('data',{}).get('key') or created.get('key')
id=created.get('data',{}).get('id') or created.get('id')
print(json.dumps({'http':code,'id':id,'key_prefix':key[:10]+'***','key':key},ensure_ascii=False))
