summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-07-12 22:51:40 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-07-12 22:51:40 +0200
commit145be2b3c92e254904d4040850e3c1e9b6a66f32 (patch)
treeb7dccee6e8fdbf3d7aafdcf40bfe99c1d237f1a0
parenta7dcb397f7aa4f4ec5ad0f5b572b331f9d0f8270 (diff)
fixup! client: Add openapi-typescript and generated schema from openapi spec of server
-rw-r--r--client/package.json2
-rw-r--r--client/src/lib/api/schema.d.ts1422
2 files changed, 1423 insertions, 1 deletions
diff --git a/client/package.json b/client/package.json
index 21be173..b9f228b 100644
--- a/client/package.json
+++ b/client/package.json
@@ -12,7 +12,7 @@
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"format": "prettier --write .",
"lint": "prettier --check . && eslint .",
- "openapi": "openapi-typescript http://127.0.0.1:8000/openapi/openapi.json -o api/schema.d.ts"
+ "openapi": "openapi-typescript http://127.0.0.1:8000/openapi/openapi.json -o src/lib/api/schema.d.ts"
},
"devDependencies": {
"@eslint/compat": "^1.3.1",
diff --git a/client/src/lib/api/schema.d.ts b/client/src/lib/api/schema.d.ts
new file mode 100644
index 0000000..f69f227
--- /dev/null
+++ b/client/src/lib/api/schema.d.ts
@@ -0,0 +1,1422 @@
+/**
+ * This file was auto-generated by openapi-typescript.
+ * Do not make direct changes to the file.
+ */
+
+export interface paths {
+ "/healthcheck": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["healthcheck"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/login": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["login"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/logout": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["logout"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/project/{projectid}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["project"];
+ put?: never;
+ post: operations["project_update"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/project/{projectid}/new": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["project_new"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/project/{projectid}/reviews": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["reviews"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/project/{projectid}/translations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["translation_reviews"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/project/{projectid}/user/{userid}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["project_user_update"];
+ delete: operations["project_user_del"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/project/{projectid}/user/{userid}/new": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["project_user_add"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/projects": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["projects"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/review/{projectid}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["review_id"];
+ put?: never;
+ post?: never;
+ delete: operations["review_id_del"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/review/{projectid}/{branch}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["review"];
+ put?: never;
+ post?: never;
+ delete: operations["review_del"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/status": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["status"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/translation/{projectid}/new": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["translation_review_new"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/translation/{translation_reviewid}/strings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["translation_review_strings"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/user/keys": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["user_keys"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/user/keys/add": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["user_key_add"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/user/keys/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["user_key_get"];
+ put?: never;
+ post?: never;
+ delete: operations["user_key_del"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["users"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+}
+export type webhooks = Record<string, never>;
+export interface components {
+ schemas: {
+ LocalizationPlaceholder: {
+ /** @example %1$d */
+ content: string;
+ /** @example 42 */
+ example: string;
+ /** @example NAME */
+ id: string;
+ };
+ LocalizationString: {
+ /** @example Generic greating */
+ description: string;
+ /** @example strings/strings.grd */
+ file: string;
+ /** @example IDS_GENERIC_WELCOME */
+ id: string;
+ /** @example This should be a positive greating */
+ meaning: string;
+ placeholder_offset: number[];
+ placeholders: components["schemas"]["LocalizationPlaceholder"][];
+ /** @example Hello! */
+ source: string;
+ translations: components["schemas"]["TranslationString"][];
+ };
+ LocalizationStrings: {
+ /**
+ * Format: int32
+ * @example 10
+ */
+ limit: number;
+ /** @example true */
+ more: boolean;
+ /**
+ * Format: int32
+ * @example 0
+ */
+ offset: number;
+ strings: components["schemas"]["LocalizationString"][];
+ /**
+ * Format: int32
+ * @example 42
+ */
+ total_count: number;
+ };
+ Login: {
+ password: string;
+ username: string;
+ };
+ Project: {
+ /** @example Example project */
+ description: string;
+ /** @example fake */
+ id: string;
+ /** @example main */
+ main_branch: string;
+ /** @example ssh://git.example.org/srv/git/ */
+ remote: string;
+ /** @example b3BlbNNz...AQIDBA== */
+ remote_key_abbrev: string;
+ /** @example FAKE: Features All Kids Erase */
+ title: string;
+ users: components["schemas"]["ProjectUserEntry"][];
+ };
+ ProjectData: {
+ /** @example Example project */
+ description?: string | null;
+ /** @example main */
+ main_branch?: string | null;
+ /** @example ssh://git.example.org/srv/git/ */
+ remote?: string | null;
+ /** @example b3BlbNNz...AQIDBA== */
+ remote_key?: string | null;
+ /** @example FAKE: Features All Kids Erase */
+ title?: string | null;
+ };
+ ProjectEntry: {
+ /** @example fake */
+ id: string;
+ /** @example FAKE: Features All Kids Erase */
+ title: string;
+ };
+ ProjectUserEntry: {
+ default_role: components["schemas"]["UserReviewRole"];
+ /** @example false */
+ maintainer: boolean;
+ user: components["schemas"]["User"];
+ };
+ ProjectUserEntryData: {
+ default_role?: null | components["schemas"]["UserReviewRole"];
+ /** @example false */
+ maintainer?: boolean | null;
+ };
+ Projects: {
+ /**
+ * Format: int32
+ * @example 10
+ */
+ limit: number;
+ /** @example false */
+ more: boolean;
+ /**
+ * Format: int32
+ * @example 0
+ */
+ offset: number;
+ projects: components["schemas"]["ProjectEntry"][];
+ /**
+ * Format: int32
+ * @example 1
+ */
+ total_count: number;
+ };
+ Review: {
+ /** @example false */
+ archived: boolean;
+ /** @example r/user/TASK-123456 */
+ branch: string;
+ /** @example We're adding more features because features are what we want. */
+ description: string;
+ /**
+ * Format: int64
+ * @example 1000
+ */
+ id: number;
+ owner: components["schemas"]["User"];
+ /**
+ * Format: float
+ * @example 37.5
+ */
+ progress: number;
+ state: components["schemas"]["ReviewState"];
+ /** @example FAKE-512: Add more features */
+ title: string;
+ users: components["schemas"]["ReviewUserEntry"][];
+ };
+ ReviewEntry: {
+ /** @example r/user/TASK-123456 */
+ branch: string;
+ /**
+ * Format: int64
+ * @example 1000
+ */
+ id: number;
+ owner: components["schemas"]["User"];
+ /**
+ * Format: float
+ * @example 37.5
+ */
+ progress: number;
+ state: components["schemas"]["ReviewState"];
+ /** @example FAKE-512: Add more features */
+ title: string;
+ };
+ /** @enum {string} */
+ ReviewState: "Draft" | "Open" | "Dropped" | "Closed";
+ ReviewUserEntry: {
+ role: components["schemas"]["UserReviewRole"];
+ user: components["schemas"]["User"];
+ };
+ Reviews: {
+ /**
+ * Format: int32
+ * @example 10
+ */
+ limit: number;
+ /** @example true */
+ more: boolean;
+ /**
+ * Format: int32
+ * @example 0
+ */
+ offset: number;
+ reviews: components["schemas"]["ReviewEntry"][];
+ /**
+ * Format: int32
+ * @example 42
+ */
+ total_count: number;
+ };
+ StatusResponse: {
+ ok: boolean;
+ };
+ TranslationReview: {
+ /** @example false */
+ archived: boolean;
+ /** @example d7c502b9c6b833060576a0c4da0287933d603011 */
+ base: string;
+ /** @example New translations */
+ description: string;
+ /** @example 2cecdec660a30bf3964cee645d9cee03640ef8dc */
+ head: string;
+ /**
+ * Format: int64
+ * @example 1
+ */
+ id: number;
+ owner: components["schemas"]["User"];
+ /**
+ * Format: float
+ * @example 37.5
+ */
+ progress: number;
+ state: components["schemas"]["ReviewState"];
+ /** @example FAKE-512: Update translations */
+ title: string;
+ users: components["schemas"]["ReviewUserEntry"][];
+ };
+ TranslationReviewData: {
+ /** @example d7c502b9c6b833060576a0c4da0287933d603011 */
+ base?: string | null;
+ /** @example New translations */
+ description: string;
+ /** @example FAKE-512: Update translations */
+ title: string;
+ };
+ TranslationReviewEntry: {
+ /** @example d7c502b9c6b833060576a0c4da0287933d603011 */
+ base: string;
+ /** @example 2cecdec660a30bf3964cee645d9cee03640ef8dc */
+ head: string;
+ /**
+ * Format: int64
+ * @example 1
+ */
+ id: number;
+ owner: components["schemas"]["User"];
+ /**
+ * Format: float
+ * @example 37.5
+ */
+ progress: number;
+ state: components["schemas"]["ReviewState"];
+ /** @example FAKE-512: Update translations */
+ title: string;
+ };
+ TranslationReviews: {
+ /**
+ * Format: int32
+ * @example 10
+ */
+ limit: number;
+ /** @example true */
+ more: boolean;
+ /**
+ * Format: int32
+ * @example 0
+ */
+ offset: number;
+ reviews: components["schemas"]["TranslationReviewEntry"][];
+ /**
+ * Format: int32
+ * @example 42
+ */
+ total_count: number;
+ };
+ /** @enum {string} */
+ TranslationState: "Unreviewed" | "Unchanged" | "Approved" | "Revert" | "Fix";
+ TranslationString: {
+ comment: string;
+ /** @example sv */
+ language: string;
+ placeholder_offset: number[];
+ reviewer?: null | components["schemas"]["User"];
+ state: components["schemas"]["TranslationState"];
+ /** @example Hej! */
+ translation: string;
+ };
+ User: {
+ /** @example true */
+ active: boolean;
+ /** @example jsmith */
+ id: string;
+ /** @example John Smith */
+ name: string;
+ };
+ UserKey: {
+ /** @example user@host 1970-01-01 */
+ comment: string;
+ /** @example AAAAfoobar== */
+ data: string;
+ /**
+ * Format: int64
+ * @example 1
+ */
+ id: number;
+ /** @example ssh-rsa */
+ kind: string;
+ };
+ UserKeyData: {
+ /** @example user@host 1970-01-01 */
+ comment?: string | null;
+ /** @example AAAAfoobar== */
+ data: string;
+ /** @example ssh-rsa */
+ kind: string;
+ };
+ UserKeys: {
+ keys: components["schemas"]["UserKey"][];
+ /**
+ * Format: int32
+ * @example 10
+ */
+ limit: number;
+ /** @example false */
+ more: boolean;
+ /**
+ * Format: int32
+ * @example 0
+ */
+ offset: number;
+ /**
+ * Format: int32
+ * @example 2
+ */
+ total_count: number;
+ };
+ /** @enum {string} */
+ UserReviewRole: "Reviewer" | "Watcher" | "None";
+ Users: {
+ /**
+ * Format: int32
+ * @example 10
+ */
+ limit: number;
+ /** @example true */
+ more: boolean;
+ /**
+ * Format: int32
+ * @example 0
+ */
+ offset: number;
+ /**
+ * Format: int32
+ * @example 42
+ */
+ total_count: number;
+ users: components["schemas"]["User"][];
+ };
+ };
+ responses: never;
+ parameters: never;
+ requestBodies: never;
+ headers: never;
+ pathItems: never;
+}
+export type $defs = Record<string, never>;
+export interface operations {
+ healthcheck: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description All good */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ login: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/x-www-form-urlencoded": components["schemas"]["Login"];
+ };
+ };
+ responses: {
+ /** @description Login successful */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ /** @example {
+ * "ok": true
+ * } */
+ "application/json": components["schemas"]["StatusResponse"];
+ };
+ };
+ /** @description Login failed */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ /** @example {
+ * "error": "Unauthorized",
+ * "ok": false
+ * } */
+ "application/json": components["schemas"]["StatusResponse"];
+ };
+ };
+ };
+ };
+ logout: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Logout successful */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ /** @example {
+ * "ok": true
+ * } */
+ "application/json": components["schemas"]["StatusResponse"];
+ };
+ };
+ };
+ };
+ project: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get project */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Project"];
+ };
+ };
+ /** @description No such project */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ project_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ProjectData"];
+ };
+ };
+ responses: {
+ /** @description Project updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not maintainer of project */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description No such project */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ project_new: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ProjectData"];
+ };
+ };
+ responses: {
+ /** @description Project created */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Project"];
+ };
+ };
+ /** @description Project with id already exists */
+ 409: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ reviews: {
+ parameters: {
+ query?: {
+ limit?: number;
+ offset?: number;
+ };
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get all reviews for project */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Reviews"];
+ };
+ };
+ /** @description No such project */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ translation_reviews: {
+ parameters: {
+ query?: {
+ limit?: number;
+ offset?: number;
+ };
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get all translation reviews for project */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TranslationReviews"];
+ };
+ };
+ /** @description No such project */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ project_user_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectid: string;
+ userid: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ProjectUserEntryData"];
+ };
+ };
+ responses: {
+ /** @description User updated in project */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not maintainer of project */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description No such project, no such user or user not in project */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ project_user_del: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectid: string;
+ userid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User removed from project */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not maintainer of project */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description No such project, no such user or user not in project */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ project_user_add: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectid: string;
+ userid: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ProjectUserEntryData"];
+ };
+ };
+ responses: {
+ /** @description User added to project */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not maintainer of project */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description No such project */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User already in project */
+ 409: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ projects: {
+ parameters: {
+ query?: {
+ limit?: number;
+ offset?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get all projects */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Projects"];
+ };
+ };
+ };
+ };
+ review_id: {
+ parameters: {
+ query: {
+ reviewid: number;
+ };
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get review */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Review"];
+ };
+ };
+ /** @description No such review */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ review_id_del: {
+ parameters: {
+ query: {
+ reviewid: number;
+ };
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Remove deleted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Review is open or closed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not owner of review or maintainer of project */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description No such review */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ review: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ branch: string;
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get review */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Review"];
+ };
+ };
+ /** @description No such review */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ review_del: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ branch: string;
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Review deleted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Review is open or closed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not owner of review or maintainer of project */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description No such review */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ status: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Current status */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ /** @example {
+ * "ok": true
+ * } */
+ "application/json": components["schemas"]["StatusResponse"];
+ };
+ };
+ /** @description Not authorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ /** @example {
+ * "error": "Unauthorized",
+ * "ok": false
+ * } */
+ "application/json": components["schemas"]["StatusResponse"];
+ };
+ };
+ };
+ };
+ translation_review_new: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectid: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["TranslationReviewData"];
+ };
+ };
+ responses: {
+ /** @description Translation review created */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TranslationReview"];
+ };
+ };
+ };
+ };
+ translation_review_strings: {
+ parameters: {
+ query?: {
+ limit?: number;
+ offset?: number;
+ };
+ header?: never;
+ path: {
+ translation_reviewid: number;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get all strings for a translation review */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["LocalizationStrings"];
+ };
+ };
+ /** @description No such translation review */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ user_keys: {
+ parameters: {
+ query?: {
+ limit?: number;
+ offset?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get all keys for user */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UserKeys"];
+ };
+ };
+ };
+ };
+ user_key_add: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UserKeyData"];
+ };
+ };
+ responses: {
+ /** @description Key added to current user */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UserKey"];
+ };
+ };
+ /** @description Key too large or invalid */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ user_key_get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: number;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User key */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UserKey"];
+ };
+ };
+ /** @description No such key */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ user_key_del: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: number;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Key removed from current user */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description No such key for current user */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ users: {
+ parameters: {
+ query?: {
+ limit?: number;
+ offset?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get all users */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users"];
+ };
+ };
+ };
+ };
+}