SpectraSpectra

Documentazione

Organizzazione

Leggi il profilo dell'organizzazione (piano, limiti, conteggi) e — con i permessi di Admin — aggiornane nome, descrizione e logo. L'eliminazione è riservata all'utente principale.

Organizzazione

Lettura e gestione del profilo dell'organizzazione: dettaglio con piano e conteggi, aggiornamento di nome e descrizione, logo ed eliminazione completa.

Dettaglio & profilo

Leggi i dati dell'organizzazione (piano e conteggi) e aggiornane nome e descrizione.

GEThttps://api.spectraholo.it/v1/organization/{id}Authority ≥ 0 · Lettura

Dettaglio organizzazione

Restituisce il profilo, il piano (con i limiti effettivi), l'ID dell'utente principale e i conteggi di membri, modelli e viewer. Accessibile a qualsiasi membro dell'organizzazione tramite token di sessione, oppure a un servizio backend tramite API key.

Autenticazione: Token utente (Bearer) — qualsiasi membro

Parametri del percorso

id*ID numerico dell'organizzazione

Esempio di richiesta

GET https://api.spectraholo.it/v1/organization/42

Risposta200

{
  "organization": {
    "id": 42,
    "name": "ACME Corp",
    "description": "Holographic visualization platform",
    "logoUrl": "https://api.spectraholo.it/orgs/42/logo.png",
    "planId": 2,
    "planName": "Business",
    "maxUsers": 50,
    "maxStorageGb": 25,
    "maxViewers": 15,
    "maxModels": 150,
    "mainUserId": "550e8400-e29b-41d4-a716-446655440000",
    "memberCount": 12,
    "modelCount": 25,
    "viewerCount": 8,
    "createdAt": "2026-01-15T10:30:00Z"
  }
}

Errori

  • 401Nessun token di sessione valido o backend API key forniti
  • 403Il token di sessione è valido ma il livello di authority dell'utente è inferiore a AUTHORITY_VIEW (0)
  • 404L'organizzazione con l'ID indicato non esiste
  • 502Il server di autenticazione è irraggiungibile o ha restituito un errore
PATCHhttps://api.spectraholo.it/v1/organization/{id}/profileAuthority ≥ 3 · Admin

Aggiorna nome/descrizione

Aggiorna il nome e/o la descrizione dell'organizzazione. L'autorizzazione richiede una backend API key (server-to-server) oppure un token di sessione valido di un utente con authority ADMIN (livello 3) all'interno dell'organizzazione. Entrambi i campi sono facoltativi ma almeno uno deve essere fornito.

Autenticazione: Token utente (Bearer) — authority ≥ 3 (Admin)

Parametri del percorso

id*ID dell'organizzazione (intero positivo)

Corpo della richiesta · application/json

namefacolt.
string
Nome dell'organizzazione (1–32 caratteri). Se fornito, deve essere non vuoto dopo il trim.
descriptionfacolt.
string
Descrizione dell'organizzazione (1–256 caratteri). Se fornita, deve essere non vuota dopo il trim.

Esempio di corpo (JSON)

{
  "name": "ACME S.r.l.",
  "description": "Vetrine olografiche per il retail"
}

Risposta200

{
  "message": "Organization profile updated."
}

Errori

  • 400Il corpo della richiesta non è JSON valido
  • 400Il campo 'name' è fornito ma non è una stringa
  • 400Il campo 'description' è fornito ma non è una stringa
  • 400Il campo 'name' è fornito ma è vuoto o più lungo di 32 caratteri dopo il trim
  • 400Il campo 'description' è fornito ma è vuoto o più lungo di 256 caratteri dopo il trim
  • 400Né 'name' né 'description' sono forniti nel corpo della richiesta
  • 401Nessun token di sessione valido o backend API key fornito, oppure token di sessione non valido/scaduto
  • 403Il token di sessione è valido ma il livello di authority dell'utente è inferiore ad ADMIN (3)
  • 404L'organizzazione con l'ID indicato non esiste
  • 502Il server di autenticazione è irraggiungibile o restituisce un errore durante la validazione della sessione

Scarica il logo pubblico o caricane uno nuovo.

GEThttps://api.spectraholo.it/v1/organization/{id}/logoPubblico

Logo dell'organizzazione

Recupera l'immagine del logo di un'organizzazione. Il logo viene servito con header di sicurezza (nosniff, CSP sandbox) e con caching abilitato. Restituisce i byte grezzi dell'immagine con l'header Content-Type appropriato, determinato dal contenuto del file e non dalla dichiarazione del client.

Autenticazione: Pubblico — nessuna autenticazione

Parametri del percorso

id*ID dell'organizzazione (numerico, analizzato e validato)

Esempio di richiesta

GET https://api.spectraholo.it/v1/organization/42/logo

Risposta200

Raw image bytes (PNG, JPEG, GIF, or WEBP) with headers: Content-Type: image/png (or appropriate MIME type), Content-Disposition: inline, X-Content-Type-Options: nosniff, Content-Security-Policy: default-src 'none'; sandbox, Cache-Control: public, max-age=3600

Errori

  • 404Logo non trovato per l'organizzazione indicata
  • 500Errore interno del server
POSThttps://api.spectraholo.it/v1/organization/{id}/logoAuthority ≥ 3 · Admin

Carica il logo

Carica e aggiorna l'immagine del logo di un'organizzazione. Richiede una richiesta multipart/form-data con il file del logo nel campo 'logo'. Il content-type viene verificato dai magic bytes del file (per sicurezza sono consentiti solo i formati raster PNG, JPEG, GIF, WEBP; niente SVG o HTML per prevenire XSS). Richiede authority ADMIN (>= 3) o una backend API key.

Autenticazione: Token utente (Bearer) — authority ≥ 3 (Admin)

Parametri del percorso

id*ID dell'organizzazione (numerico, analizzato e validato)

Corpo della richiesta · multipart/form-data

logo*
file (binary)
File immagine del logo (PNG, JPEG, GIF o WEBP). Massimo 5 MB. Il content-type è rilevato dai byte del file, non dal campo Content-Type dell'header multipart.

Esempio di richiesta

POST https://api.spectraholo.it/v1/organization/42/logo

# Campi del modulo (multipart/form-data)
logo = @logo.png

Risposta200

{
  "success": true,
  "message": "Logo updated.",
  "logoUrl": "https://api.spectraholo.it/logos/org-123-abc123.png"
}

Errori

  • 400Richiesta non valida: corpo multipart/form-data mancante o non valido, campo logo assente, oppure formato immagine non supportato (sono ammessi solo PNG, JPEG, GIF, WEBP)
  • 401Autenticazione richiesta: nessun token di sessione valido o backend API key fornito
  • 403Authority insufficiente: l'utente della sessione ha un livello di authority < 3 (ADMIN)
  • 413Logo troppo grande: il file supera il limite di 5 MB
  • 502Servizio backend (server di autenticazione) irraggiungibile durante la validazione della sessione
  • 500Errore interno del server

Eliminazione

Rimuovi definitivamente l'organizzazione e tutto il suo contenuto.

DELETEhttps://api.spectraholo.it/v1/organization/{id}Utente principale

Elimina l'organizzazione

Rimuove definitivamente l'organizzazione e propaga l'eliminazione a tutti i membri, modelli e viewer. I dati vengono rimossi dal database locale e propagati al server di autenticazione e al server delle risorse. L'operazione è idempotente dal punto di vista del client: restituisce 200 anche se l'organizzazione non esiste più. Sono supportate due modalità di autenticazione: backend API key oppure la sessione dell'utente principale dell'organizzazione.

Autenticazione: Token utente (Bearer) — solo l'utente principale dell'organizzazione

Parametri del percorso

id*ID numerico dell'organizzazione

Esempio di richiesta

DELETE https://api.spectraholo.it/v1/organization/42

Risposta200

{
  "message": "Organization successfully deleted!"
}

Errori

  • 401Nessuna backend API key valida o token di sessione fornito
  • 403Il token di sessione è valido ma l'utente non è l'utente principale dell'organizzazione
  • 404L'organizzazione non esiste (nota: idempotente; restituisce comunque 200 dal punto di vista del client)
  • 502Il server di autenticazione o il server delle risorse è irraggiungibile o ha restituito un errore durante la propagazione