API Docs

Globio API v1

Endpoint pronti per web e app Flutter, con abbonamento premium mensile, badge premium integrato nel profilo utente e playlist CRUD complete.

Base URL

https://www.determined-spence.82-165-53-81.plesk.page/api/v1

Auth Header

Authorization: Bearer <token>

Billing

Stripe Checkout + Customer Portal

Formato

application/json

Premium Features

  • Video e reels senza pubblicita
  • Background playback e picture in picture
  • Qualita avanzata e controlli premium
  • Customer portal e rinnovo gestibile via API

Badge Premium

  • Restituito da `GET /me` e `GET /me/premium`
  • `short_label` pronto per chip e pill UI
  • `icon` allineata a `fa-crown`
  • `profile.is_premium_subscriber` come flag rapido

Webhook

POST https://www.determined-spence.82-165-53-81.plesk.page/billing/stripe/webhook

Da collegare agli eventi Stripe di checkout, rinnovo, cancellazione e pagamenti falliti.

Auth

Registrazione, login e logout token-based per app e client mobile.

Method Endpoint Auth Parametri
POST /auth/register No name, email, password, password_confirmation, device_name?
POST /auth/login No email, password, device_name?
POST /auth/logout Si Bearer token

Public Content

Feed, creators, ricerca e configurazione globale dell'app.

Method Endpoint Auth Parametri
GET /app-config No feature flags, premium plan, app config
GET /home No limit? (4-24)
GET /videos No type?, sort?, q?, creator?, per_page?
GET /videos/{id_or_slug} No video detail
GET /videos/{id_or_slug}/comments No commenti approvati
GET /creators No q?, per_page?
GET /creators/{id_or_username_or_channel_slug} No creator detail
GET /creators/{id_or_username_or_channel_slug}/videos No type?, per_page?
GET /search No q, limit?

Premium

Abbonamento mensile con Stripe Checkout, Customer Portal, badge premium e rinnovo gestibile via API.

Method Endpoint Auth Parametri
GET /premium/plans No piano premium disponibile
GET /me/premium Si stato premium, capabilities, badge, scadenza
POST /me/premium/checkout Si success_url?, cancel_url?
POST /me/premium/confirm Si session_id Stripe Checkout
POST /me/premium/portal Si return_url?
POST /me/premium/cancel Si disattiva rinnovo automatico
POST /me/premium/resume Si riattiva rinnovo automatico

Account & Badge

Profilo utente con blocco premium, badge e flag rapidi per la UI.

Method Endpoint Auth Parametri
GET /me Si profilo con stato premium, badge e profile.is_premium_subscriber
PUT /me Si name?, channel_name?, channel_description?, country?
GET /me/notifications Si lista notifiche
POST /me/notifications/read-all Si segna tutte come lette
POST /me/notifications/{id}/read Si segna una come letta

Library

Watch later e cronologia personale.

Method Endpoint Auth Parametri
GET /me/watch-later Si -
POST /me/watch-later/{id_or_slug} Si aggiungi watch later
DELETE /me/watch-later/{id_or_slug} Si rimuovi watch later
GET /me/history Si -
POST /me/history/{id_or_slug} Si watched_duration, total_duration?, completed?

Playlists

CRUD playlist dedicato all'app mobile e web autenticato.

Method Endpoint Auth Parametri
GET /me/playlists Si lista playlist utente
POST /me/playlists Si title, description?, is_public?, video_ids[]?
GET /me/playlists/{playlist} Si dettaglio playlist con video
PUT /me/playlists/{playlist} Si title?, description?, is_public?
DELETE /me/playlists/{playlist} Si elimina playlist
POST /me/playlists/{playlist}/videos Si video_id
DELETE /me/playlists/{playlist}/videos/{video} Si rimuovi video

Creator & Studio

Canale, analytics, community, feedback e upload contenuti.

Method Endpoint Auth Parametri
GET /me/channel Si info canale
PUT /me/channel Si channel_name?, channel_description?, country?, social_links?
GET /me/subscriptions Si iscrizioni ai canali
GET /me/subscribers Si iscritti al canale
GET /me/studio/summary Si start_date?, end_date?
GET /me/studio/analytics Si start_date?, end_date?, limit?
GET /me/studio/community Si status?, per_page?
GET /me/studio/reports Si view?, status?, per_page?
POST /videos/upload Si title, video_file, thumbnail?, description?, is_public?, is_reel?, tags?
POST /reels/upload Si title, video_file, thumbnail?, description?

Esempio Premium Checkout

curl -X POST "https://www.determined-spence.82-165-53-81.plesk.page/api/v1/me/premium/checkout" \
  -H "Authorization: Bearer TOKEN_VALUE" \
  -H "Content-Type: application/json" \
  -d '{
    "success_url": "https://www.determined-spence.82-165-53-81.plesk.page/premium/success",
    "cancel_url": "https://www.determined-spence.82-165-53-81.plesk.page/premium/cancel"
  }'

Risposta Premium Status

{
  "active": true,
  "plan": {
    "id": 3,
    "plan_code": "globio-premium",
    "plan_name": "Globio Premium",
    "status": "active",
    "billing_interval": "month",
    "amount": 1199,
    "currency": "eur",
    "cancel_at_period_end": false
  },
  "features": {
    "ad_free": true,
    "background_playback": true,
    "picture_in_picture": true,
    "smart_downloads": true,
    "higher_quality_streaming": true,
    "reels_enhanced_controls": true,
    "queue_management": true
  },
  "premium_access_ends_at": "2026-05-24T12:00:00+02:00",
  "badge": {
    "label": "Abbonato Premium",
    "short_label": "Premium",
    "icon": "fa-crown",
    "current_period_end": "2026-05-24T12:00:00+02:00",
    "cancel_at_period_end": false
  },
  "current_period_end": "2026-05-24T12:00:00+02:00"
}

Esempio Badge in GET /me

{
  "premium": {
    "active": true,
    "badge": {
      "label": "Abbonato Premium",
      "short_label": "Premium",
      "icon": "fa-crown",
      "current_period_end": "2026-05-24T12:00:00+02:00",
      "cancel_at_period_end": false
    }
  },
  "profile": {
    "is_premium_subscriber": true
  }
}

Esempio Creazione Playlist

curl -X POST "https://www.determined-spence.82-165-53-81.plesk.page/api/v1/me/playlists" \
  -H "Authorization: Bearer TOKEN_VALUE" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Reels da rivedere",
    "description": "Playlist personale",
    "is_public": true,
    "video_ids": [12, 18, 22]
  }'

Rinnovo e Ripristino

POST https://www.determined-spence.82-165-53-81.plesk.page/api/v1/me/premium/cancel
POST https://www.determined-spence.82-165-53-81.plesk.page/api/v1/me/premium/resume

Risposta:
{
  "message": "Premium subscription automatic renewal restored.",
  "subscription": {
    "status": "active",
    "cancel_at_period_end": false,
    "current_period_end": "2026-05-24T12:00:00+02:00"
  }
}

Webhook Stripe Da Registrare

checkout.session.completed
customer.subscription.created
customer.subscription.updated
customer.subscription.deleted
invoice.payment_failed
invoice.paid