Files
infisical-node-sdk/test/speccer.ts
Daniel Hougaard fe0b265ec5 Initial commit
2024-08-29 02:05:00 +04:00

70 lines
2.2 KiB
TypeScript

import https from "https";
import fs from "fs";
const specUrl = "https://app.infisical.com/api/docs/json";
const outputFile = "filtered-spec.json";
// List of endpoints you want to keep, with their HTTP methods
interface Endpoint {
path: string;
method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
}
const desiredEndpoints: Endpoint[] = [
// Identities
{ path: "/api/v1/identities", method: "POST" },
{ path: "/api/v1/identities/{identityId}", method: "PATCH" },
{ path: "/api/v1/identities/{identityId}", method: "DELETE" },
{ path: "/api/v1/identities/{identityId}", method: "GET" },
{ path: "/api/v1/identities", method: "GET" },
// Token Auth
{ path: "/api/v1/auth/token-auth/identities/{identityId}", method: "POST" },
{ path: "/api/v1/auth/token-auth/identities/{identityId}", method: "GET" },
{ path: "/api/v1/auth/token-auth/identities/{identityId}", method: "PATCH" },
{ path: "/api/v1/auth/token-auth/identities/{identityId}", method: "DELETE" },
{ path: "/api/v1/auth/token-auth/identities/{identityId}/tokens", method: "GET" },
{ path: "/api/v1/auth/token-auth/identities/{identityId}/tokens", method: "POST" },
{ path: "/api/v1/auth/token-auth/tokens/{tokenId}", method: "PATCH" },
{ path: "/v1/auth/token-auth/tokens/{tokenId}/revoke", method: "POST" }
];
https
.get(specUrl, res => {
let data = "";
res.on("data", chunk => {
data += chunk;
});
res.on("end", () => {
const spec = JSON.parse(data);
// Filter the paths object
spec.paths = Object.keys(spec.paths).reduce((filteredPaths, path) => {
const matchingEndpoints = desiredEndpoints.filter(
endpoint => endpoint.path === path && spec.paths[path][endpoint.method.toLowerCase()]
);
if (matchingEndpoints.length > 0) {
// @ts-expect-error
filteredPaths[path] = {};
matchingEndpoints.forEach(endpoint => {
// @ts-expect-error
filteredPaths[path][endpoint.method.toLowerCase()] = spec.paths[path][endpoint.method.toLowerCase()];
});
}
return filteredPaths;
}, {});
// Write the filtered spec to a file
fs.writeFileSync(outputFile, JSON.stringify(spec, null, 2));
console.log(`Filtered spec written to ${outputFile}`);
});
})
.on("error", err => {
console.error("Error fetching spec:", err.message);
});