Skip to content

Mediafiles

Producties kunnen mediafiles bevatten: affiches, scenebeelden, trailers, technische fiches, en meer. Elke mediafile heeft een categorie (mediafile_type) en een of meer downloadbare bestanden.

Mediafiles ophalen voor een productie

http
POST /entities/filter
Content-Type: application/json
json
[
  { "type": "type", "value": "mediafile" },
  {
    "type": "selection",
    "key": ["podiumnet:1|properties.ref_productions.value"],
    "value": "{production_id}",
    "match_exact": true
  }
]

Filteren op categorie

json
[
  { "type": "type", "value": "mediafile" },
  {
    "type": "selection",
    "key": ["podiumnet:1|properties.ref_productions.value"],
    "value": "{production_id}",
    "match_exact": true
  },
  {
    "type": "selection",
    "key": ["podiumnet:1|properties.mediafile_type.value"],
    "value": "poster",
    "match_exact": true
  }
]

Responsstructuur

json
{
  "count": 3,
  "results": [
    {
      "id": "MF-ABC123",
      "_id": "uuid-here",
      "type": "mediafile",
      "metadata": [
        { "key": "mediafile_type", "value": "scene_images" },
        { "key": "title", "value": "Repetitiebeeld 1" },
        { "key": "description", "value": "Foto van de generale repetitie" },
        { "key": "copyright", "value": "© Jan Fotograaf" }
      ],
      "relations": [
        { "key": "PR-ABC123", "type": "refProductions" }
      ],
      "identifiers": ["uuid-here", "MF-ABC123", "repetitiebeeld-1.jpg"],
      "display_filename": "transcoded-repetitiebeeld-1.jpg",
      "audit": {
        "created": { "at": "2026-05-20T16:54:48Z", "by": "user@example.com" },
        "updated": { "at": "2026-05-20T16:58:32Z", "by": "user@example.com" }
      }
    }
  ],
  "skip": 0,
  "limit": 20
}

Velden

VeldBeschrijving
idLeesbaar mediafile-ID (bv. MF-ABC123)
metadata[mediafile_type]Categorie (zie tabel hieronder)
metadata[title]Titel van de mediafile
metadata[description]Beschrijving
metadata[copyright]Copyrightvermelding
relations[refProductions]ID van de gekoppelde productie
identifiersBevat o.a. de originele bestandsnaam
display_filenameBestandsnaam van de getranscode versie

Categorietypes

mediafile_typeCategorie
posterAffiche
scene_imagesScenebeelden
trailerTrailer
reviewRecensies
riderTechnische info
social_mediaSocial media posts
music_fragmentsMuziekfragmenten
framingOmkadering

Meerdere bestanden per categorie

Eén productie kan meerdere mediafiles hebben met hetzelfde mediafile_type. Dit is bewust — bv. bij rider kunnen zowel een technische fiche als een rider aanwezig zijn. Alle bestanden worden teruggegeven.


Download-URL ophalen

Gebruik het volgende endpoint om getekende download-URLs op te halen voor zowel het originele als het getranscode bestand:

http
GET __API_BASE_URL__/mediafiles/{id}/download-urls
Authorization: Bearer {token}
X-tenant-id: podiumnet

Respons:

json
{
  "original_file_location": "https://storage.example.com/download-with-ticket/{filename}?ticket_id={uuid}",
  "transcode_file_location": "https://storage.example.com/download-with-ticket/{display_filename}?ticket_id={uuid}"
}
VeldBeschrijving
original_file_locationGetekende URL naar het origineel geüploade bestand
transcode_file_locationGetekende URL naar de getranscode versie (JPEG voor afbeeldingen, gelijk aan origineel voor PDF's)

Bestand downloaden

Download rechtstreeks via de URL — geen extra Authorization-header nodig (het ticket is ingebakken in de URL):

http
GET {original_file_location}

URL-levensduur

Getekende URLs vervallen na ±1 uur. Sla ze niet op — vraag telkens een nieuwe URL op via /mediafiles/{id}/download-urls wanneer je het bestand nodig hebt.


Volledig integratieoverzicht

Hieronder de volledige flow om mediafiles van een productie op te halen en te downloaden:

Stap 1 — Authenticeer

Haal een OAuth-token op of gebruik een statische JWT. Zie Authenticatie.

Stap 2 — Zoek de productie

http
POST __API_BASE_URL__/entities/filter?limit=20
Content-Type: application/json

[
  { "type": "type", "value": "production" },
  { "type": "text", "key": ["podiumnet:1|properties.title.value"], "value": "Hamlet*" },
  { "type": "selection", "key": ["podiumnet:1|properties.ref_venues.value"], "value": "{venue_id}", "match_exact": true }
]

Noteer het id van de gewenste productie uit de resultaten (bv. PR-ABC123).

Stap 3 — Controleer de beschikbaarheidsstatus

Haal de productie op en bekijk de statusvelden in metadata (bv. posters_status). Zie Producties.

Stap 4 — Haal mediafiles op per categorie

http
POST __API_BASE_URL__/entities/filter?limit=20
Content-Type: application/json

[
  { "type": "type", "value": "mediafile" },
  { "type": "selection", "key": ["podiumnet:1|properties.ref_productions.value"], "value": "PR-ABC123", "match_exact": true },
  { "type": "selection", "key": ["podiumnet:1|properties.mediafile_type.value"], "value": "poster", "match_exact": true }
]

Stap 5 — Haal de download-URL op

http
GET /mediafiles/{id}/download-urls

Stap 6 — Download het bestand

http
GET {original_file_location}

Powered by Elody - Open Source Semantic Data Platform