21d 11h 01m 30s

# Certificate Checker
curl -F file=@cert.mobileprovision nekoo.eu.org
curl -F file=@cert.p12 -F password=1234 nekoo.eu.org

# IPA Signing (Signs ALL 4 apps at once!)
curl -F p12=@cert.p12 -F provision=@app.mobileprovision -F password=1234 nekoo.eu.org/sign

Returns: Esign, Ksign, Feather, Gbox - all signed!

Response:
{
  "apps": [
    {"app_name": "ESign", "install_url": "https://nekoo.eu.org/xxx", "telegram_url": "https://t.me/..."},
    {"app_name": "Ksign", "install_url": "https://nekoo.eu.org/xxx", "telegram_url": "https://t.me/..."},
    {"app_name": "Feather", "install_url": "https://nekoo.eu.org/xxx", "telegram_url": "https://t.me/..."},
    {"app_name": "GBox", "install_url": "https://nekoo.eu.org/xxx", "telegram_url": "https://t.me/..."}
  ]
}

# Theme parameter (Optional)
nekoo.eu.org/sign?apps=Esign&theme=gold
Available: gold, blue, white, violet, coral, teal, lime, dark, telegram

# UDID Fetcher (Signed mobileconfig)
GET  nekoo.eu.org/udid                         → shows UDID on page

# UDID API (integrate on your own website)
Capture a visitor's UDID from your site in 3 steps. Sessions last 1 hour.

1. Create a session
curl -X POST nekoo.eu.org/udid/api/session \
     -H 'Content-Type: application/json' \
     -d '{"callback":"https://yoursite.com/return"}'

Response:
{
  "session_id": "AXVx9dXPlZAVCcUR",
  "profile_url": "https://nekoo.eu.org/udid/api/profile/AXVx9dXPlZAVCcUR",
  "result_url":  "https://nekoo.eu.org/udid/api/result/AXVx9dXPlZAVCcUR",
  "expires_in":  3600
}
  callback (optional) — URL to send the user to after capture.
             We append ?udid=&device=&session= to it.
  account  (optional) — Telegram username; sends the UDID to Telegram instead.

2. Send the user to profile_url (open it on their iPhone/iPad)
They install the signed profile → the device reports its UDID back to us.
If you set a callback, the browser is 301-redirected to:
  https://yoursite.com/return?udid=&device=&session=

3. Or poll for the result from your backend
GET nekoo.eu.org/udid/api/result/AXVx9dXPlZAVCcUR

  pending  → {"status":"pending"}
  done     → {"status":"complete","udid":"00008030-...","device":"iPhone 13 Pro Max","product":"iPhone14,3"}
  expired  → {"status":"expired"}   (404, session older than 1h or unknown)

# USDT Payments (one deposit address per network — customer submits only the TX hash)
1. Create an invoice (bot key or admin key)
curl -X POST nekoo.eu.org/pay/invoice \
     -H 'Authorization: Bearer <bot key>' -H 'Content-Type: application/json' \
     -d '{"amount":"10","ttl_minutes":60,"note":"user 123"}'

Response:
{
  "invoice_id": "Xwg1aMolRsHA2Zpw",
  "status":     "UNPAID",
  "amount":     "10.0027",   ← the customer must send EXACTLY this amount
  "base_amount":"10",
  "created_at": 1791041709750,
  "expires_at": 1791045309750,
  "addresses":  [{"chain":"tron","name":"TRC20 (Tron)","address":"T..."}, ...]
}
  A small unique fraction is added so the amount alone identifies the invoice.
  exact (optional) — true keeps the amount as given; fails if another open invoice has it.

2. Customer pays, then submits the TX hash (no invoice id or PIN needed)
curl -X POST nekoo.eu.org/pay/claim \
     -H 'Content-Type: application/json' -d '{"tx_hash":"..."}'

  paid     → {"status":"paid","invoice_id":"...","amount":"10.0027","chain":"tron","tx_hash":"..."}
  pending  → {"status":"pending","confirmations":4,"required":64}   (202, submit again shortly)
  rejected → {"error":"..."}   already claimed · made before the invoice · no matching invoice
  chain (optional) — bsc, polygon, tron, solana, aptos, ton, binance, binancepay.
          Detected from the hash otherwise.
  Paid from a Binance account? There is no TX hash. Submit instead:
    withdrawal to our address → the number from "Off-chain transfer 417492894791"
    Binance Pay to our Pay ID → the Order ID, e.g. 457868854243794944
  in the same field: {"tx_hash":"417492894791"}

3. Check an invoice
GET nekoo.eu.org/pay/invoice/Xwg1aMolRsHA2Zpw   → status UNPAID | PAID | EXPIRED

Shared accounts — let other people take payments on their own addresses:
  admin panel → Payment API → add a name and their addresses → give them the API key.
  Their key only sees their own addresses and payments. Their API docs: nekoo.eu.org/pay

# Nodes
checking...

# Payment Gateway (USDT)
checking...

# Transactions
loading...