import { refs } from "../../../misc/schema.js";
export function convertSchemaToOpenApiSchema(schema) {
    const res = schema;
    if (schema.type === "object" && schema.properties) {
        res.required = Object.entries(schema.properties).filter(([k, v])=>!v.optional).map(([k])=>k);
        for (const k of Object.keys(schema.properties)){
            res.properties[k] = convertSchemaToOpenApiSchema(schema.properties[k]);
        }
    }
    if (schema.type === "array" && schema.items) {
        res.items = convertSchemaToOpenApiSchema(schema.items);
    }
    if (schema.anyOf) res.anyOf = schema.anyOf.map(convertSchemaToOpenApiSchema);
    if (schema.oneOf) res.oneOf = schema.oneOf.map(convertSchemaToOpenApiSchema);
    if (schema.allOf) res.allOf = schema.allOf.map(convertSchemaToOpenApiSchema);
    if (schema.ref) {
        res.$ref = `#/components/schemas/${schema.ref}`;
    }
    return res;
}
export const schemas = {
    Error: {
        type: "object",
        properties: {
            error: {
                type: "object",
                description: "An error object.",
                properties: {
                    code: {
                        type: "string",
                        description: "An error code. Unique within the endpoint."
                    },
                    message: {
                        type: "string",
                        description: "An error message."
                    },
                    id: {
                        type: "string",
                        format: "uuid",
                        description: "An error ID. This ID is static."
                    }
                },
                required: [
                    "code",
                    "id",
                    "message"
                ]
            }
        },
        required: [
            "error"
        ]
    },
    ...Object.fromEntries(Object.entries(refs).map(([key, schema])=>[
            key,
            convertSchemaToOpenApiSchema(schema)
        ]))
};
