kioai / lib /api-zod /src /generated /api.ts
kinaiok
Initial deployment setup for Hugging Face Spaces
5ef6e9d
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Api
* API specification
* OpenAPI spec version: 0.1.0
*/
import * as zod from "zod";
/**
* Returns server health status
* @summary Health check
*/
export const HealthCheckResponse = zod.object({
status: zod.string(),
});
/**
* Check if a Bearer token is configured
* @summary Get API token status
*/
export const GetConfigTokenResponse = zod.object({
configured: zod.boolean(),
token: zod.string().nullish(),
});
/**
* Save the Bearer token for geminigen.ai API
* @summary Set API token
*/
export const SetConfigTokenBody = zod.object({
token: zod.string(),
});
export const SetConfigTokenResponse = zod.object({
success: zod.boolean(),
message: zod.string().optional(),
});
/**
* Remove the stored Bearer token
* @summary Delete API token
*/
export const DeleteConfigTokenResponse = zod.object({
success: zod.boolean(),
message: zod.string().optional(),
});
/**
* Generate an image using AI based on a text prompt
* @summary Generate image
*/
export const generateImageBodyStyleDefault = `realistic`;
export const generateImageBodyAspectRatioDefault = `1:1`;
export const generateImageBodyModelDefault = `grok`;
export const generateImageBodyIsPrivateDefault = false;
export const GenerateImageBody = zod.object({
prompt: zod.string().describe("Text description for image generation"),
style: zod
.enum([
"none",
"realistic",
"anime",
"artistic",
"cartoon",
"sketch",
"oil_painting",
"watercolor",
"digital_art",
])
.default(generateImageBodyStyleDefault)
.describe("Style of image to generate"),
aspectRatio: zod
.enum(["1:1", "16:9", "9:16", "4:3", "3:4", "2:3", "3:2"])
.default(generateImageBodyAspectRatioDefault)
.describe("Aspect ratio for the image"),
model: zod
.enum([
"grok",
"meta",
"imagen-pro",
"imagen-4",
"imagen-flash",
"nano-banana-pro",
"nano-banana-2",
])
.default(generateImageBodyModelDefault)
.describe("AI model to use"),
resolution: zod
.enum(["1K", "2K", "4K"])
.optional()
.describe(
"Output resolution for supported models (Nano Banana Pro \/ Nano Banana 2)",
),
referenceImageBase64: zod
.string()
.optional()
.describe(
"Base64-encoded reference image for image-to-image generation (optional)",
),
referenceImageMime: zod
.string()
.optional()
.describe("MIME type of the reference image (e.g. image\/jpeg)"),
isPrivate: zod
.boolean()
.default(generateImageBodyIsPrivateDefault)
.describe(
"Whether this image should be private (only visible to the creator)",
),
});
export const GenerateImageResponse = zod.object({
id: zod.number(),
imageUrl: zod.string(),
prompt: zod.string(),
style: zod.string(),
aspectRatio: zod.string(),
model: zod.string(),
createdAt: zod.coerce.date(),
apiDebug: zod.object({
requestUrl: zod.string(),
requestMethod: zod.string(),
requestHeaders: zod.record(zod.string(), zod.string()),
requestBody: zod.object({}).passthrough(),
responseStatus: zod.number(),
responseBody: zod.object({}).passthrough(),
durationMs: zod.number(),
usedFallback: zod.boolean(),
fallbackReason: zod.string().optional(),
}),
});
/**
* Retrieve the list of previously generated images
* @summary Get image history
*/
export const getImageHistoryQueryLimitDefault = 20;
export const getImageHistoryQueryOffsetDefault = 0;
export const GetImageHistoryQueryParams = zod.object({
limit: zod.coerce.number().default(getImageHistoryQueryLimitDefault),
offset: zod.coerce.number().default(getImageHistoryQueryOffsetDefault),
});
export const GetImageHistoryResponse = zod.object({
images: zod.array(
zod.object({
id: zod.number(),
imageUrl: zod.string(),
prompt: zod.string(),
style: zod.string(),
aspectRatio: zod.string(),
model: zod.string(),
isPrivate: zod.boolean(),
userId: zod.number().nullish(),
createdAt: zod.coerce.date(),
}),
),
total: zod.number(),
});
/**
* Delete a generated image from history
* @summary Delete image
*/
export const DeleteImageParams = zod.object({
id: zod.coerce.number(),
});
export const DeleteImageResponse = zod.object({
success: zod.boolean(),
message: zod.string().optional(),
});