Skip to content

New API #14

@LukasKalbertodt

Description

@LukasKalbertodt

With the data model changing quite significantly in some ways, there is the obvious question of how to expose that to the world. Opencast currently has a number of APIs (external API, search API, ...). We talked about this on 2025-07-31.

We decided already:

  • We want a new API!
    • Advantage: this clearly communicates that the data model has changed. Reusing and adjusting the old API runs the risk of lots of small breaking changes going unnoticed.
    • Additionally: new API allows for a fresh clean start without baggage. It allows us to switch to some other API framework if we so wish.
    • Of course, not all old APIs are deleted. Some are important to keep around, like ingest and CA APIs.
    • We also said that a single OC release will: introduce new data model, new API and remove old API. We might want to support (via updates) the previous version for longer.
  • We want to listen to feedback for the API more and adjust over time until we're happy to stabilize.
  • The API should be "self-describing":
    • Meaning, the API has well typed responses and parameters. GraphQL has this out of the box: you always know exactly what the response JSON looks like. We don't need to use GraphQL, but we want this property. JSON-Schema is a potential alternative. For example, would be great to generate Typescript bindings for the API automatically to type check frontend code. Also: it would be great if the API explorer UI lets you look at the exact response type as well.
  • We want to experiment with different API frameworks (OpenAPI, GraphQL) to see what works well. See Experiment with new API for new data model (OpenAPI with dummy data) opencast#6968

Open questions

Previous discussions:

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussA discussion issue: we need to decide how to handle a specific thing in the new data model.needs-researchSomeone needs to sit down and collect some information to continue this discussion

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions