- Build API via annotations using HotChocolate.
- Export to `artifacts` on build.
- Repurpose REST API types where possible, but many have to be reimplemented.
- Transfer controller and bridge controller will definitely have to stay forever.
- Added `Tgstation.Server.Client.GraphQL` built from schema using StrawberryShake.
- Added equivalent server information query.
- Setup semver and u32 (de)serialization.
- Begin transitioning to multi-client type live tests.
- Add GraphQL route `/api/graphql`
- Rename ServerClient likes to RestServerClient equivalent.
- Major API/Client library version bumps.
Move `BridgeController` route but BYOND forces us to support the legacy one as well.
Add a basic homepage if it's not obvious where to redirect the user.
Closes#1689
Because SignalR buffers messages, we can't guarantee these will be delivered before the connection is aborted.
We'll have to rely on the client not being pants-on-head.
- Add one hub `/hubs/jobs`, strongly typed API included.
- Adjust request pipeline to support SignalR.
- Allow `Accept: text/event-stream` for SSE requests.
- Add client library support for hubs.
- Add integration tests.
- Add IPermissionSetNotifyee to support dynamic changes based on perms.
- Keep job state in `JobService` for pushing updates.
- `nbf` and `exp` should be numbers, not strings.
- Parse JWT in `ApiHeaders` fully for errors.
- Use `iat` and increment `nbf` by one second if equal and may trigger the `LastPasswordUpdate` bug.
- Make client aware of this change and move the delay there.
- Deprecated `TokenResponse.ExpiresAt`.