/** * 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; 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; 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']; }; }; }; }; }