
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@apifreaks/openapi-specs
Advanced tools
Public OpenAPI 3.1 specifications for all APIFreaks API products.
npm package and source repo for the public OpenAPI 3.1 specifications of APIFreaks products.
The specs (catalog, authentication, and how to open them in Swagger, Postman, or a code generator) are in specs/README.md. This README is the package: install, the typed lookup API, and how the repo is built.
npm install @apifreaks/openapi-specs
Node.js 18 or later. ESM and CommonJS are both supported.
Importing anything from @apifreaks/openapi-specs (the package entry) loads every spec. Use that when you need to list or look up specs at runtime. For a single product, import the JSON file (see below) so you do not go through that entry.
import {
getSpecJson,
getSpecYaml,
getSpecsByCategory,
SpecSlug,
SpecCategory,
} from "@apifreaks/openapi-specs";
const spec = getSpecJson(SpecSlug.IP_LOCATOR);
const yaml = getSpecYaml(SpecSlug.IP_LOCATOR);
const ipSlugs = getSpecsByCategory(SpecCategory.IP_INTELLIGENCE);
SpecSlug and SpecCategory are generated from specs/. If you write SpecSlug.IP_LOCATOR and that file is later renamed or removed, TypeScript fails at compile time. Raw strings (getSpecJson("ip-locator")) still typecheck; unknown slugs return undefined at runtime. Unknown categories return [].
getSpec is a deprecated alias for getSpecJson and will be removed in the next major version.
JSON is published from specs/. TypeScript JSON imports need "resolveJsonModule": true.
import ipLocator from "@apifreaks/openapi-specs/specs/ip-intelligence/ip-locator.json";
YAML copies are also generated at build time into dist/specs/ (not in the GitHub specs/ folder) and published as files, but the YAML text is also embedded in the manifest — reading it through getSpecYaml(slug) at runtime, rather than importing the .yaml file, works from any module system (Node can't import .yaml) and needs no filesystem access.
const { getSpecJson, getSpecYaml, SpecSlug } = require("@apifreaks/openapi-specs");
Importing any of these from @apifreaks/openapi-specs loads every spec.
| Export | Type | Description |
|---|---|---|
getSpecJson(slug) | (string) => OpenAPISpec | undefined | Spec object for a slug |
getSpecYaml(slug) | (string) => string | undefined | Pre-rendered YAML text for a slug |
getSpec(slug) | (string) => OpenAPISpec | undefined | Deprecated. Alias for getSpecJson, removed in the next major version |
getSpecsByCategory(category) | (string) => string[] | Slugs in a category, or [] |
SpecSlug | { IP_LOCATOR: "ip-locator", … } | Enumerated slugs |
SpecCategory | { IP_INTELLIGENCE: "ip-intelligence", … } | Enumerated categories |
SPEC_SLUGS | string[] | All slugs |
SPEC_CATEGORIES | string[] | All category names |
SPECS | Record<string, OpenAPISpec> | Spec objects keyed by slug |
SPECS_YAML | Record<string, string> | Pre-rendered YAML text keyed by slug |
SPECS_BY_CATEGORY | Record<string, string[]> | Slugs grouped by category |
import type {
OpenAPISpec,
SpecSlugValue,
SpecCategoryValue,
} from "@apifreaks/openapi-specs";
OpenAPISpec is a typed envelope (openapi, info, paths, …), not a full OpenAPI 3.1 schema.
specs/ # OpenAPI JSON. See specs/README.md
src/
index.ts # Public API
types.ts # OpenAPISpec
manifest.ts # AUTO-GENERATED. Do not edit.
scripts/
generate-manifest.ts # Walks specs/, writes src/manifest.ts (embeds JSON + YAML)
generate-yaml.ts # JSON → dist/specs/**/*.yaml (published files)
yaml.ts # Shared JSON->YAML dump used by both scripts
test/
validate.test.ts # JSON well-formedness; YAML round-trip after build
npm install
npm run generate # regenerate src/manifest.ts from specs/
npm run build # generate + bundle + YAML
npm run typecheck
npm test
src/manifest.ts is produced by npm run generate. It imports every spec and builds SPECS, SPECS_YAML, SPEC_SLUGS, SpecSlug, and SpecCategory.
specs/<category>/<slug>.json. Use the same security schemes as the existing files: header X-apiKey and query apiKey.npm run generate. Do not edit src/manifest.ts by hand.npm test, then npm run build.prepublishOnly runs the build. The published tarball includes dist/, specs/, package.json, README, and LICENSE.
Pushing a tag matching v* publishes to npm via GitHub Actions. The bump scripts test, commit a version, tag, and push; they will trigger that publish:
npm run bump:patch
npm run bump:minor
npm run bump:major
FAQs
Public OpenAPI 3.1 specifications for all APIFreaks API products.
The npm package @apifreaks/openapi-specs receives a total of 637 weekly downloads. As such, @apifreaks/openapi-specs popularity was classified as not popular.
We found that @apifreaks/openapi-specs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.