API available #368

Open
opened 2025-06-08 13:09:56 +02:00 by kiara · 0 comments
Owner

As a front-end developer,
I want to be able to interact with Fediversity through an API,
so that I may work with its functionality while treating it as a black box.

notes

  • while this is primarily a research project, the expectation of running and maintaining a live service would alter that scope to potentially include becoming responsible to constantly staying on-call in case of production issues, whereas outsiders may not have the needed expertise. we may need to further consider how to best handle this.

implementation notes

  • it could be valid to extend panel to offer either or both of:
    • a synchronous API
    • an asynchronous WebSockets-based API (see #334): specs in markdown, yaml
      • deployment.submit
      • deployment.get
      • deployment.delete (#1036)
      • deployment.cancel (#242 ?)
      • schema.get
      • build.logs
      • builds
      • deployment.list
      • build.list
      • deployments
      • auth.authorize
      • auth.authenticate
      • decoupled versions (#304)
      • parallel deployment handling (#242)
      • endpoints for switching between hosting providers (#100)
      • OpenTelemetry integration (#184)
  • steps:
    • simultaneous handling of requests may be a challenge, given Nix uses locks to prevent parallel builds. this may need to be solved in the background using a build queue (#242)
      • of potentially multiple (even on-the-fly generated) nodes (-> separated services.windmill vs services.windmill-worker[-native]).
    • split up the panel into API vs front-end, even if still both django right now, to already kinda pioneer the split envisioned for the purpose of procolix's front-end (#992)
    • hosted Swagger UI
    • hosted AsyncAPI's equivalent of Swagger UI (package: #997)
      • PR
      • asyncapi generate fromTemplate ./path/to/ASYNC_API.yaml @asyncapi/html-template
    • spec compliance verified
      • yaml itself (#998)
      • individual request/response (#1000)
    • proper framework used (supporting migrations)
    • [ ] typescript rewrite (#1020, #1023)
    • deployed in production
**As** a front-end developer, **I want** to be able to interact with Fediversity through an API, **so that** I may work with its functionality while treating it as a black box. ## notes - while this is primarily a research project, the expectation of running and maintaining a live service would alter that scope to potentially include becoming responsible to constantly staying on-call in case of production issues, whereas outsiders may not have the needed expertise. we may need to further consider how to best handle this. ### implementation notes - it could be valid to extend `panel` to offer either or both of: - a synchronous API - an asynchronous WebSockets-based API (see #334): specs in [markdown](https://git.fediversity.eu/fediversity/fediversity/src/branch/main/src/api-specification.md), [yaml](https://git.fediversity.eu/fediversity/fediversity/src/branch/main/src/api-specification.yaml) - [x] `deployment.submit` - [x] `deployment.get` - [x] `deployment.delete` (#1036) - [ ] `deployment.cancel` (#242 ?) - [x] `schema.get` - [x] `build.logs` - [x] `builds` - [x] `deployment.list` - [ ] `build.list` - [x] `deployments` - [x] `auth.authorize` - [x] `auth.authenticate` - [x] decoupled versions (#304) - [x] parallel deployment handling (#242) - [ ] ~endpoints for switching between hosting providers~ (#100) - [ ] ~OpenTelemetry integration~ (#184) - steps: - [x] simultaneous handling of requests may be a challenge, given Nix uses locks to prevent parallel builds. this may need to be solved in the background using a build queue (#242) - [ ] of potentially multiple (even on-the-fly generated) nodes (-> separated `services.windmill` vs `services.windmill-worker[-native]`). - [x] split up the panel into API vs front-end, even if still both django right now, to already kinda pioneer the split envisioned for the purpose of procolix's front-end (#992) - [ ] hosted Swagger UI - [ ] hosted AsyncAPI's equivalent of Swagger UI (package: #997) - [x] [PR](https://github.com/NixOS/nixpkgs/pull/495016) - `asyncapi generate fromTemplate ./path/to/ASYNC_API.yaml @asyncapi/html-template` - spec compliance verified - [x] yaml itself (#998) - [x] individual request/response (#1000) - [ ] proper framework used (supporting migrations) - ~~[ ] typescript rewrite~~ (#1020, #1023) - [ ] deployed in production
kiara changed title from offer REST API to REST API available 2025-06-08 13:10:08 +02:00
kiara changed title from REST API available to API available 2025-12-04 13:00:17 +01:00
kiara referenced this issue from a commit 2026-05-23 15:49:18 +02:00
kiara added this to the Fediversity project 2026-05-23 20:55:49 +02:00
kiara referenced this issue from a commit 2026-05-25 22:03:47 +02:00
kiara self-assigned this 2026-05-29 15:29:47 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Blocks Depends on
#242 enqueuing deployment syncs
fediversity/fediversity
#334 API specification published
fediversity/fediversity
#632 use schemas to validate input
fediversity/fediversity
Reference
fediversity/fediversity#368
No description provided.