Skip to content

00005: Initial Application Programming Interface

Status

Accepted

Context

In order to enable programmatic access to the core / backend, an interface needs to be exposed.

Decision

The initial programming interface will be a RESTful API adhering to OpenAPI specifications. The OpenAPI specification will be utilized to generate go server code for the backend, go client code which can be used for e2e tests and other go based clients, and a typescript client which can be used by the frontend.

Alternatives Considered

  • GraphQL
  • gRPC

Consequences

The OpenAPI specification will need to be maintained as the system evolves. The OpenAPI specification will drive much of the development of the system as it will be used to generate significant portions of code for both the backend and frontend.