feat(backups): archive download endpoint + GitHub App install surfacing

- GET /databases/:id/backups/:bid/download streams the archive out of the
  containr-db-backups volume via a stopped utility container and
  CopyFromContainer; daemon logs sanitize non-UTF-8 so binary through
  container logs was not viable. Verified e2e: byte-identical payload,
  404 missing/cross-user, 401 unauthenticated.
- Settings Git Providers gains an Install GitHub App action that opens the
  install_url and completes the installation_id return via connect endpoint.
- ROADMAP: mark both items done with verification evidence.

Authored By: TDvorak <[email protected]>
This commit is contained in:
Tomas Dvorak committed 2026-09-17 17:30:30 +02:00
1 parent 18fe56f948
commit bcd3a83aa4
8 files changed
+304 -24

No files matched your search

+58
View File
@@ -1710,6 +1710,63 @@ export interface paths {
patch?: never;
trace?: never;
};
"/databases/{id}/backups/{bid}/download": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Download a completed backup archive */
get: {
parameters: {
query?: never;
header?: never;
path: {
id: string;
bid: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Backup archive stream */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/gzip": string;
};
};
/** @description Backup not found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["Error"];
};
};
/** @description Backup not completed */
409: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["Error"];
};
};
};
};
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/git/providers": {
parameters: {
query?: never;
@@ -5783,6 +5840,7 @@ export interface paths {
parameters: {
query?: {
project_id?: string;
service_id?: string;
};
header?: never;
path?: never;