Anume Player / Panou reseller

API reseller v1

Liste pe MAC, Xtream și URL-uri M3U, M3U8 sau TS. Același APK preia modificările la sincronizare.

Acces și autentificare

  1. Resellerul își creează contul și solicită activarea. Administratorul verifică și activează contul din panou. Conturile în așteptare nu au acces API.
  2. După activare, resellerul intră în panoul său și apasă Creează cheie API.
  3. Cheia se afișează o singură dată. Se trimite la fiecare cerere în headerul Authorization: Bearer ap_....

În panou poți încărca un logo PNG, JPEG sau WebP (maximum 1 MB și 2048 px), poți seta numele brandului și culoarea accent. Identitatea se aplică în interiorul aplicației, pentru listele asociate contului; numele și iconul din launcher rămân Anume Player. Pentru atribuirea corectă a listelor folosește panoul reseller sau cheia API a propriului cont.

https://anumeplayer.ro/api/reseller/v1/

Folosește exclusiv HTTPS. Nu pune cheia în URL, aplicația TV sau cod JavaScript public. Rotirea invalidează imediat cheia veche; revocarea oprește accesul API. Listele deja asociate nu sunt șterse.

Poți adăuga lista pe MAC înainte de prima pornire a aplicației. Anume Player o preia când televizorul se conectează. Un dispozitiv blocat nu acceptă liste noi. Maximum 10 liste per dispozitiv.

Limite API: 240 de cereri pe minut pentru fiecare cont și 600 pe minut pentru fiecare IP. La răspunsul 429, așteaptă numărul de secunde din headerul Retry-After. Cererile de modificare au maximum 16 KB. Nu retrimite automat o adăugare dacă răspunsul s-a pierdut; verifică mai întâi lista de profiluri.

Citește listele și jurnalul

curl --request GET \
  --url 'https://anumeplayer.ro/api/reseller/v1/' \
  --header 'Authorization: Bearer CHEIA_TA'

Răspunsul conține reseller, profiles (cel mult 500, cele mai recente) și events (ultimele 40). Fiecare profil are id, device_id, name, type (xtream sau m3u), device_status, selected, created_at și last_seen_at. Timpurile sunt Unix seconds.

{"ok":true,"reseller":{"username":"demo","brand_name":"Brand TV","logo_url":"","accent":"#22D3EE"},"profiles":[{"id":42,"device_id":"A1:B2:C3:D4:E5:F6","name":"Lista TV","type":"m3u","device_status":"active","selected":true,"created_at":1790000000,"last_seen_at":1790000001}],"events":[]}

API-ul de citire nu returnează URL-ul portalului, linkul listei, utilizatorul sau parola. Cheia API are acces doar la listele resellerului care a creat-o.

Adaugă o listă

Trimite POST cu Content-Type: application/json. Sunt acceptate și câmpuri de formular. Câmpuri comune: action="add", device_id (MAC cu două puncte), profile_name (1–100 caractere), mode. select este opțional: true activează imediat lista; implicit, o listă nouă devine activă doar când dispozitivul nu are altă listă selectată.

Xtream: server, utilizator și parolă

curl --request POST \
  --url 'https://anumeplayer.ro/api/reseller/v1/' \
  --header 'Authorization: Bearer CHEIA_TA' \
  --header 'Content-Type: application/json' \
  --data '{"action":"add","device_id":"A1:B2:C3:D4:E5:F6","profile_name":"Lista Xtream","mode":"xtream","server":"https://portal.example","username":"UTILIZATOR","password":"PAROLA","select":true}'

Playlist M3U prin URL HTTP sau HTTPS

curl --request POST \
  --url 'https://anumeplayer.ro/api/reseller/v1/' \
  --header 'Authorization: Bearer CHEIA_TA' \
  --header 'Content-Type: application/json' \
  --data '{"action":"add","device_id":"A1:B2:C3:D4:E5:F6","profile_name":"Lista M3U","mode":"m3u","m3u_url":"http://liste.example/playlist.m3u"}'

Stream direct HLS/M3U8 sau MPEG-TS

curl --request POST \
  --url 'https://anumeplayer.ro/api/reseller/v1/' \
  --header 'Authorization: Bearer CHEIA_TA' \
  --header 'Content-Type: application/json' \
  --data '{"action":"add","device_id":"A1:B2:C3:D4:E5:F6","profile_name":"Canal direct","mode":"ts","url":"https://stream.example/live/canal.ts","select":true}'

Modurile m3u, m3u8, ts, url și direct folosesc același câmp URL: m3u_url, playlist_url sau url. Intern sunt stocate ca tip m3u. Pentru Xtream, server acceptă HTTP sau HTTPS. Fișierele locale nu sunt acceptate. O sursă HTTP transmite datele și credențialele fără criptare; site-ul și API-ul panoului rămân HTTPS. Suportul unui codec depinde de player și de stream.

HTTP/1.1 201 Created
{"ok":true,"profile_id":42,"selected":true}

Selectează sau șterge

Folosește profile_id primit la adăugare ori din GET. Poți selecta și șterge numai listele contului tău. Selectarea schimbă lista activă de pe dispozitiv.

curl --request POST \
  --url 'https://anumeplayer.ro/api/reseller/v1/' \
  --header 'Authorization: Bearer CHEIA_TA' \
  --header 'Content-Type: application/json' \
  --data '{"action":"select","profile_id":42}'

curl --request POST \
  --url 'https://anumeplayer.ro/api/reseller/v1/' \
  --header 'Authorization: Bearer CHEIA_TA' \
  --header 'Content-Type: application/json' \
  --data '{"action":"delete","profile_id":42}'

La ștergerea listei active, dispozitivul selectează următoarea listă disponibilă sau revine în starea fără listă. Jurnalul păstrează acțiunile added, selected și deleted.

Răspunsuri și limite

CodSemnificație
200Citire, selectare sau ștergere reușită.
201Listă creată.
400Date invalide, MAC neînregistrat sau blocat, listă inaccesibilă ori limita de 10 atinsă.
401Cheie lipsă, invalidă, revocată sau cont reseller inactiv.
403HTTPS obligatoriu.
405Metodă HTTP neacceptată.
413Corpul cererii depășește 16 KB.
500Eroare internă; verifică jurnalul serverului și încearcă din nou.
{"ok":false,"message":"Acest dispozitiv este blocat din panou."}

URL-urile și parolele sunt stocate criptat de panou, dar sistemul care trimite cererea și dispozitivul care redă lista le pot cunoaște. Nu folosi API-ul ca înlocuitor pentru protecția streamurilor la serverul video.