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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions