chore: improved schema

This commit is contained in:
Morten Olsen
2025-12-10 20:45:02 +01:00
parent d02102977a
commit 0646390d52
16 changed files with 920 additions and 118 deletions

View File

@@ -0,0 +1,515 @@
/**
* This file was auto-generated by openapi-typescript.
* Do not make direct changes to the file.
*/
export interface paths {
"/system/ready": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Get system ready state */
get: operations["GET/system/ready"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/documents": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** Upsert document */
post: operations["POST/documents"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/document-filters": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** Find documents */
post: operations["POST/documents-filters"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/document-chunk-filters": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** Find document chunks */
post: operations["POST/documents-chunk-filters"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
}
export type webhooks = Record<string, never>;
export interface components {
schemas: never;
responses: never;
parameters: never;
requestBodies: never;
headers: never;
pathItems: never;
}
export type $defs = Record<string, never>;
export interface operations {
"GET/system/ready": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Default Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
/** @enum {string} */
status: "ok";
};
};
};
};
};
"POST/documents": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: {
content: {
"application/json": {
id?: string | null;
owner?: string | null;
contentType?: string | null;
content?: string | null;
source?: string | null;
sourceId?: string | null;
type?: string;
typeVersion?: number | null;
searchText?: string | null;
metadata?: unknown;
};
};
};
responses: {
/** @description Default Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
/** @enum {string} */
action: "inserted" | "updated" | "skipped";
id: string;
document: {
id: string;
owner: string | null;
/** Format: date-time */
createdAt: string;
/** Format: date-time */
updatedAt: string;
/** Format: date-time */
deletedAt: string | null;
contentType: string | null;
content: string | null;
source: string | null;
sourceId: string | null;
type: string;
typeVersion: number | null;
searchText: string | null;
metadata: unknown;
};
};
};
};
};
};
"POST/documents-filters": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": {
/** @default 0 */
offset?: number;
/** @default 20 */
limit?: number;
condition: (({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
}) | {
/** @enum {string} */
type: "operator";
/** @enum {string} */
operator: "and" | "or";
conditions: (({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
}) | {
/** @enum {string} */
type: "operator";
/** @enum {string} */
operator: "and" | "or";
conditions: (({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
}) | {
/** @enum {string} */
type: "operator";
/** @enum {string} */
operator: "and" | "or";
conditions: ({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
})[];
})[];
})[];
}) | string;
};
};
};
responses: {
/** @description Default Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
items: {
id: string;
owner: string | null;
/** Format: date-time */
createdAt: string;
/** Format: date-time */
updatedAt: string;
/** Format: date-time */
deletedAt: string | null;
contentType: string | null;
content: string | null;
source: string | null;
sourceId: string | null;
type: string;
typeVersion: number | null;
searchText: string | null;
metadata: unknown;
}[];
};
};
};
};
};
"POST/documents-chunk-filters": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: {
content: {
"application/json": {
/** @default 20 */
limit?: number;
/** @default 0 */
offset?: number;
semanticText?: string;
conditions?: (({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
}) | {
/** @enum {string} */
type: "operator";
/** @enum {string} */
operator: "and" | "or";
conditions: (({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
}) | {
/** @enum {string} */
type: "operator";
/** @enum {string} */
operator: "and" | "or";
conditions: (({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
}) | {
/** @enum {string} */
type: "operator";
/** @enum {string} */
operator: "and" | "or";
conditions: ({
/** @enum {string} */
type: "text";
tableName?: string;
field: string[];
conditions: {
equal?: string | null;
notEqual?: string;
like?: string;
notLike?: string;
in?: string[];
notIn?: string[];
};
} | {
/** @enum {string} */
type: "number";
tableName?: string;
field: string[];
conditions: {
equals?: number | null;
notEquals?: number | null;
greaterThan?: number;
greaterThanOrEqual?: number;
lessThan?: number;
lessThanOrEqual?: number;
in?: number[];
notIn?: number[];
};
})[];
})[];
})[];
}) | string;
};
};
};
responses: {
/** @description Default Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
items: {
id: string;
owner: string;
content: string;
metadata: unknown;
distance?: number;
}[];
};
};
};
};
};
}

View File

@@ -0,0 +1,19 @@
import createApiClient from 'openapi-fetch';
import type { paths } from './__generated__/schema.js';
type CreateStashClientOptions = {
baseUrl: string;
};
type StashClient = ReturnType<typeof createApiClient<paths>>;
const createStashClient = (options: CreateStashClientOptions): StashClient => {
const client = createApiClient<paths>({
baseUrl: options.baseUrl,
});
return client;
};
export type { StashClient };
export { createStashClient };