feat: api tokens (#705)

* feat: api tokens (vibe)

* self-review

* remove token terminology + pr comments (vibe)

* return email_verified

---------

Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
This commit is contained in:
Igor Monadical
2025-10-20 12:55:25 -04:00
committed by GitHub
parent af86c47f1d
commit 9a258abc02
9 changed files with 532 additions and 31 deletions

View File

@@ -4,6 +4,23 @@
*/
export interface paths {
"/health": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Health */
get: operations["health"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/metrics": {
parameters: {
query?: never;
@@ -587,6 +604,41 @@ export interface paths {
patch?: never;
trace?: never;
};
"/v1/user/tokens": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** List Tokens */
get: operations["v1_list_tokens"];
put?: never;
/** Create Token */
post: operations["v1_create_token"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/v1/user/tokens/{token_id}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
post?: never;
/** Delete Token */
delete: operations["v1_delete_token"];
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/v1/zulip/streams": {
parameters: {
query?: never;
@@ -759,6 +811,27 @@ export interface components {
*/
allow_duplicated: boolean | null;
};
/** CreateTokenRequest */
CreateTokenRequest: {
/** Name */
name?: string | null;
};
/** CreateTokenResponse */
CreateTokenResponse: {
/** Id */
id: string;
/** User Id */
user_id: string;
/** Name */
name: string | null;
/**
* Created At
* Format: date-time
*/
created_at: string;
/** Token */
token: string;
};
/** CreateTranscript */
CreateTranscript: {
/** Name */
@@ -1352,6 +1425,20 @@ export interface components {
* @enum {string}
*/
SyncStatus: "success" | "unchanged" | "error" | "skipped";
/** TokenResponse */
TokenResponse: {
/** Id */
id: string;
/** User Id */
user_id: string;
/** Name */
name: string | null;
/**
* Created At
* Format: date-time
*/
created_at: string;
};
/** Topic */
Topic: {
/** Name */
@@ -1509,6 +1596,26 @@ export interface components {
}
export type $defs = Record<string, never>;
export interface operations {
health: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": unknown;
};
};
};
};
metrics: {
parameters: {
query?: never;
@@ -2899,6 +3006,90 @@ export interface operations {
};
};
};
v1_list_tokens: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["TokenResponse"][];
};
};
};
};
v1_create_token: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["CreateTokenRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["CreateTokenResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
v1_delete_token: {
parameters: {
query?: never;
header?: never;
path: {
token_id: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": unknown;
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
v1_zulip_get_streams: {
parameters: {
query?: never;