Azure / Azure/azure-sdk-tools

Identify API versions from language-specific SDK metadata files

Open
#16,868 0 comments 0 reactions 0 assignees View on GitHub
Central-EngSys
Dominant language
C#
Stars
135
Forks
260
Avg merge
3d 1h
Merged PRs (30d)
144

Description

## Background

SDK generators emit metadata files alongside generated SDK source code. These files can provide the `api-version` used to generate a package, avoiding source-code heuristics when identifying API versions.

File names and locations differ by language:

| Language | Metadata file location | MPG/DPG coverage |
| --- | --- | --- |
| Java | `src/main/resources/META-INF/*_metadata.json` | Confirmed for both MPG and DPG |
| JavaScript | `metadata.json` in the SDK package root | Confirmed |
| Python | `_metadata.json` in the root of each SDK folder | Confirmed |
| Go | `_metadata.json` under each package's `testdata` folder | Confirmed |
| .NET | `metadata.json` alongside `CHANGELOG` and `README` in the project root | Confirmed to use the same file for MPG and DPG |

Implement API-version discovery from these generated metadata files in the SDK analysis flow. The implementation should account for language-specific paths and schemas rather than assuming that every language uses the same file name, location, or JSON field shape.

## Scope

- Discover the applicable metadata file for Java, JavaScript, Python, Go, and .NET SDK packages.
- Parse and normalize the generated `api-version` value or values from each supported metadata schema.
- Define deterministic behavior when a metadata file is missing, malformed, contains no API version, or contains multiple API versions.

## Reference

- [Weekly sync-up for LLC discussion](https://teams.microsoft.com/l/message/19:meeting_MWQ2ODAwOTgtMmI4Mi00MWY2LTkxZjgtNzE0N2FjOGJhNDVi@thread.v2/1788226452862?context=%7B%22contextType%22:%22chat%22%7D)

Contributor guide

Open the contributing guide

Research direction

Start by locating the SDK analysis flow that currently identifies API versions, then inspect generated metadata in the language-specific paths listed for Java, JavaScript, Python, Go, and .NET. Done means each supported schema is normalized correctly and missing, malformed, empty, or multi-version metadata follows documented deterministic behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, go, java, javascript, python
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.