Observed since 20 Oct, 19:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Transform and split OpenAPI specs (JSON/YAML) for the ADP1 APIM repository
A CLI tool that transforms OpenAPI specifications (JSON or YAML) for use in the ADP1 APIM repository. It enriches specs with missing attributes, normalizes operation metadata, and can split large specs into smaller per-tag or per-path files — each containing only the relevant paths and schemas.
.json, .yaml, or .yml formats.operationId, summary, and tags fields to every operation.operationId ends with the -{{consumerphase}} suffix (appends it if missing).info.title to the template value {{apiTitle}}.api/v1).pip install adp-api-transformer
Clone the repository and install in editable mode:
git clone <repo-url>
cd adp-api-converter
pip install -e .
adp-api-transformer <input_file> [output] [--split-by-tag] [--split-by-path] [--ignore-prefix PREFIX]
| Argument | Description |
|---|---|
input_file | Path to the input OpenAPI spec (JSON or YAML). Required. |
output | Output file path (single-file mode) or ignored when splitting. Defaults to openapi.json. |
--split-by-tag | Split the spec into multiple files based on each operation's first tag. |
--split-by-path | Split the spec into multiple files based on the first path segment. |
--ignore-prefix PREFIX | Used with --split-by-path. Strips this prefix before determining the grouping segment (e.g. api/v1). |
When using
--split-by-tagor--split-by-path, output files are written to a directory named after the input file (without the extension).
Convert a spec and write a single enriched JSON file:
adp-api-transformer api.yaml modified_api.json
Create one file per tag. Each file only contains the operations for that tag, with paths rewritten to start after the tag segment:
adp-api-transformer api.yaml --split-by-tag
Given an input with paths /collection, /collection/{id}, and /user/profile, this produces:
api/
collection.openapi.json # paths: / and /{id}
user.openapi.json # paths: /profile
Group endpoints by the first meaningful path segment. Useful when tags are absent or unreliable:
adp-api-transformer api.yaml --split-by-path
If your paths share a common prefix (e.g. /api/v1/studies/..., /api/v1/extractions/...), use --ignore-prefix so grouping happens on the segment after the prefix:
adp-api-transformer api.yaml --split-by-path --ignore-prefix api/v1
This groups /api/v1/studies/{id} under studies (path becomes /{id}) and /api/v1/extractions under extractions (path becomes /).
Every operation in the spec is processed with the following rules:
| Field | Rule |
|---|---|
info.title | Always set to {{apiTitle}}. |
operationId | If missing or empty, generated as <method>_<path>-{{consumerphase}} (e.g. get_collection_id-{{consumerphase}}). If present but not ending with -{{consumerphase}}, the suffix is appended. |
summary | If missing, generated as <METHOD> <path> (e.g. GET /collection/{id}). |
tags | If missing or empty, set to the first path segment (e.g. /collection/{id} → ["collection"]). |
When splitting, each output file only includes:
$ref pointing to #/components/schemas/... found in that file's operations.security, error, paginated, or metadata are always included (if they exist).securitySchemes are copied to every output file. Other top-level fields (e.g. servers, security) are also preserved.| Mode | Input path | Result |
|---|---|---|
Split by tag (tag = collection) | /collection/{id} | /{id} |
Split by tag (tag = collection) | /collection | / |
| Split by path | /studies/{id}/results | Group: studies, path: /{id}/results |
Split by path with --ignore-prefix api/v1 | /api/v1/studies/{id} | Group: studies, path: /{id} |
The example/ directory contains sample output files generated by splitting the included example.openapi.json by tag:
example/
collection.openapi.json
domain.openapi.json
user.openapi.json
workflow.openapi.json
...
To regenerate them:
adp-api-transformer example.openapi.json --split-by-tag
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.6 | 11 May 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:1adedce3a8c7759c78db7cf97291c80fd2ac9aeb1ed9f8d9035f67157df99679