#!/usr/bin/env python3
"""
Вариант 1: Авторизация через JWT.
1. Логинимся POST /user/login -> получаем JWT
2. Кладём JWT в заголовок "token"
3. Отправляем картинку на POST /v1/kyc/process
"""
import requests
import json
import sys
# ===== НАСТРОЙКИ =====
API_BASE = "https://api.neuro-vision.ru"
LOGIN_URL = f"{API_BASE}/v1/user/login"
PROCESS_URL = f"{API_BASE}/v1/kyc/process"
# Креды для логина
LOGIN = "your_email@example.com" # <-- подставить email
PASSWORD = "your_password" # <-- подставить пароль
SCHEMA_ID = "your-schema-id" # <-- подставить schemaId из ЛК
IMAGE_PATH = "path/to/your/image.jpg" # <-- путь к изображению
TIMEOUT = (30, 120)
# --- Шаг 1: получаем JWT ---
print("Шаг 1: Логин...")
resp = requests.post(
LOGIN_URL,
json={"email": LOGIN, "password": PASSWORD, "valid_days": 5},
timeout=TIMEOUT,
)
print(f" Login status: {resp.status_code}")
login_data = resp.json()
print(f" Response: {json.dumps(login_data, ensure_ascii=False, indent=2)}")
if resp.status_code != 200:
sys.exit(f"Ошибка логина: {resp.status_code}")
jwt = login_data.get("token") or login_data.get("jwt") or login_data.get("accessToken")
if not jwt:
sys.exit(f"JWT не найден в ответе. Ключи: {list(login_data.keys())}")
print(f" JWT получен: {jwt[:20]}...")
# --- Шаг 2: отправляем картинку с JWT в заголовке ---
print(f"nШаг 2: Отправляем {IMAGE_PATH}...")
headers = {
"Token": jwt,
}
data = {
"schemaId": SCHEMA_ID,
"mode": "sync",
}
with open(IMAGE_PATH, "rb") as f:
files = [("images", (IMAGE_PATH.split("/")[-1], f, "image/jpeg"))]
resp = requests.post(
PROCESS_URL,
headers=headers,
data=data,
files=files,
timeout=TIMEOUT,
)
print(f"Status: {resp.status_code}")
try:
print(json.dumps(resp.json(), ensure_ascii=False, indent=2))
except Exception:
print(resp.text)