New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

openapi-schema-ref-parser

Package Overview
Dependencies
Maintainers
0
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

openapi-schema-ref-parser

Recursively parse OpenAPI specifications such that all `"$ref": "#/foo"` entries are replaced with what the reference in the spec resolves to.

  • 0.0.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

OpenAPI Schema Reference Parser

Recursively parse OpenAPI specifications such that all "$ref": "#/foo" entries are replaced with what the reference in the spec resolves to.

Our goal is to make it easier to load an OpenAPI schema into a search index or tool calling repository for RAG-style LLM usecases.

This is a very simple package which wraps @json-schema-tools/reference-resolver. You may want to consider copying the index.ts function intead of installing this entire package.

Install

npm install openapi-schema-ref-parser

Usage Example

import expandRefs from "openapi-schema-ref-parser";

async function expandOpenapiSpec() {
  const specResponse = await fetch(
    "https://api.trieve.ai/api-docs/openapi.json"
  );
  const specText = await specResponse.text();
  const openapiSpec = JSON.parse(specText);

  // Expand all $ref pointers within the OpenAPI document
  const expandedSpec = await expandRefs(openapiSpec, { maxDepth: 1000 });

  // Process each route in the specification
  for (const path in expandedSpec.paths) {
    for (const method in expandedSpec.paths[path]) {
      const methodPath = `${method.toUpperCase()} ${path}`;
      const route = { [methodPath]: expandedSpec.paths[path][method] };

      // Instead of logging, you might want to:
      // - Add to a search/RAG system like trieve.ai
      // - Update a tool repository
      console.log(JSON.stringify(route, null, 2));
    }
  }
}

expandOpenapiSpec();

Context

OpenAPI specs have gotten more valuable in the past couple years of LLMs being around since LLMs are able to intelligently do things once they know about every route available in a given API. However, they can be hard to process into a search index or tool calling repository because they leverage a $ref system.

OpenAPI specifications tend to re-use types across many path's and method's. To simplify their defitions, the final JSON or YAML files contain several field values like {"schema": { "$ref": "#/components/schemas/ErrorResponseBody" }} where the actual value lies at openapiSpec.components.schemas.ErrorResponseBody.

  • parses all $ref values to their specifications
  • handles circular dependencies

FAQs

Package last updated on 01 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc