|
|
const swaggerAutogen = require("swagger-autogen")({ openapi: "3.0.0" }); |
|
|
const fs = require("fs"); |
|
|
const path = require("path"); |
|
|
|
|
|
const doc = { |
|
|
info: { |
|
|
version: "1.0.0", |
|
|
title: "AnythingLLM Developer API", |
|
|
description: |
|
|
"API endpoints that enable programmatic reading, writing, and updating of your AnythingLLM instance. UI supplied by Swagger.io.", |
|
|
}, |
|
|
|
|
|
|
|
|
host: "/api", |
|
|
schemes: ["http"], |
|
|
securityDefinitions: { |
|
|
BearerAuth: { |
|
|
type: "http", |
|
|
scheme: "bearer", |
|
|
bearerFormat: "JWT", |
|
|
}, |
|
|
}, |
|
|
security: [{ BearerAuth: [] }], |
|
|
definitions: { |
|
|
InvalidAPIKey: { |
|
|
message: "Invalid API Key", |
|
|
}, |
|
|
}, |
|
|
}; |
|
|
|
|
|
const outputFile = path.resolve(__dirname, "./openapi.json"); |
|
|
const endpointsFiles = [ |
|
|
"../endpoints/api/auth/index.js", |
|
|
"../endpoints/api/admin/index.js", |
|
|
"../endpoints/api/document/index.js", |
|
|
"../endpoints/api/workspace/index.js", |
|
|
"../endpoints/api/system/index.js", |
|
|
"../endpoints/api/workspaceThread/index.js", |
|
|
"../endpoints/api/userManagement/index.js", |
|
|
"../endpoints/api/openai/index.js", |
|
|
"../endpoints/api/embed/index.js", |
|
|
]; |
|
|
|
|
|
swaggerAutogen(outputFile, endpointsFiles, doc).then(({ data }) => { |
|
|
|
|
|
for (const path of Object.keys(data.paths)) { |
|
|
if (data.paths[path].hasOwnProperty("get")) { |
|
|
let parameters = data.paths[path].get?.parameters || []; |
|
|
parameters = parameters.filter((arg) => arg.name !== "Authorization"); |
|
|
data.paths[path].get.parameters = parameters; |
|
|
} |
|
|
|
|
|
if (data.paths[path].hasOwnProperty("post")) { |
|
|
let parameters = data.paths[path].post?.parameters || []; |
|
|
parameters = parameters.filter((arg) => arg.name !== "Authorization"); |
|
|
data.paths[path].post.parameters = parameters; |
|
|
} |
|
|
|
|
|
if (data.paths[path].hasOwnProperty("delete")) { |
|
|
let parameters = data.paths[path].delete?.parameters || []; |
|
|
parameters = parameters.filter((arg) => arg.name !== "Authorization"); |
|
|
data.paths[path].delete.parameters = parameters; |
|
|
} |
|
|
} |
|
|
|
|
|
const openApiSpec = { |
|
|
...data, |
|
|
servers: [ |
|
|
{ |
|
|
url: "/api", |
|
|
}, |
|
|
], |
|
|
}; |
|
|
fs.writeFileSync(outputFile, JSON.stringify(openApiSpec, null, 2), { |
|
|
encoding: "utf-8", |
|
|
flag: "w", |
|
|
}); |
|
|
console.log(`Swagger-autogen: \x1b[32mPatched servers.url ✔\x1b[0m`); |
|
|
}); |
|
|
|