oas2mcp.models.normalized¶
Normalized OpenAPI models.
- Purpose:
Define stable, typed Pydantic models for the normalized internal view of an OpenAPI specification.
- Design:
Flatten OpenAPI structures into reusable, agent-friendly models.
Preserve enough metadata for Rich rendering, inspection, and later MCP generation.
Use clean internal field names instead of OpenAPI alias names where the alias would be awkward or invalid in Python, such as
in.Keep raw fragments available for debugging and future enrichment.
Examples
from oas2mcp.models.normalized import ApiCatalog, ApiOperation
operation = ApiOperation(
method="get",
path="/pets/{petId}",
operation_id="getPetById",
summary="Fetch one pet",
)
catalog = ApiCatalog(
name="Petstore",
source_uri="https://petstore3.swagger.io/api/v3/openapi.json",
operations=[operation],
)
Attributes¶
Classes¶
Top-level normalized API catalog. |
|
Contact metadata for an API. |
|
Top-level API metadata. |
|
License metadata for an API. |
|
Normalized media type description. |
|
One normalized HTTP operation. |
|
Normalized operation parameter. |
|
Normalized path item grouping multiple operations. |
|
Normalized request body definition. |
|
Normalized response definition. |
|
One normalized security requirement mapping. |
|
One named security scheme. |
|
Resolved server definition. |
|
Normalized tag metadata. |
|
Base model for normalized OpenAPI objects. |
Module Contents¶
- class oas2mcp.models.normalized.ApiCatalog(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelTop-level normalized API catalog.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
catalog = ApiCatalog( name="Petstore", source_uri="https://example.com/openapi.json", )
- global_security: list[ApiSecurityRequirement] = None[source][source]¶
- property operation_count: int[source][source]¶
Return the number of normalized operations.
- Parameters:
None.
- Returns:
The number of operations in the catalog.
- Raises:
None. –
Examples
catalog = ApiCatalog( name="Petstore", source_uri="https://example.com/openapi.json", ) assert catalog.operation_count == 0
- operations: list[ApiOperation] = None[source][source]¶
- paths: list[ApiPathItem] = None[source][source]¶
- security_schemes: list[ApiSecurityScheme] = None[source][source]¶
- class oas2mcp.models.normalized.ApiContact(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelContact metadata for an API.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
contact = ApiContact( name="API Support", email="support@example.com", url="https://example.com/support", )
- class oas2mcp.models.normalized.ApiInfo(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelTop-level API metadata.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
info = ApiInfo( title="Petstore", version="1.0.0", summary="Pet operations", )
- contact: ApiContact | None = None[source][source]¶
- license: ApiLicense | None = None[source][source]¶
- class oas2mcp.models.normalized.ApiLicense(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelLicense metadata for an API.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
license_info = ApiLicense(name="MIT")
- class oas2mcp.models.normalized.ApiMediaType(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelNormalized media type description.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
media = ApiMediaType( content_type="application/json", schema_type="object", )
- class oas2mcp.models.normalized.ApiOperation(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelOne normalized HTTP operation.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
operation = ApiOperation( method="get", path="/pets/{petId}", operation_id="getPetById", )
- classmethod normalize_method(value: str) str[source][source]¶
Normalize and validate an HTTP method.
- Parameters:
value – The input HTTP method.
- Returns:
The normalized uppercase HTTP method.
- Raises:
ValueError – If the method is unsupported.
Examples
ApiOperation( method="get", path="/pets", )
- classmethod normalize_path(value: str) str[source][source]¶
Normalize a path string.
- Parameters:
value – The raw path string.
- Returns:
The normalized path starting with
/.- Raises:
ValueError – If the path is empty.
Examples
ApiOperation( method="GET", path="pets/{petId}", )
- property is_mutating: bool[source][source]¶
Return whether the operation mutates remote state.
- Parameters:
None.
- Returns:
Truefor mutating HTTP methods.- Raises:
None. –
Examples
operation = ApiOperation(method="POST", path="/pets") assert operation.is_mutating is True
- property key: str[source][source]¶
Return a stable operation lookup key.
- Parameters:
None.
- Returns:
A
METHOD pathlookup key.- Raises:
None. –
Examples
operation = ApiOperation(method="GET", path="/pets") assert operation.key == "GET /pets"
- parameters: list[ApiParameter] = None[source][source]¶
- request_body: ApiRequestBody | None = None[source][source]¶
- responses: list[ApiResponse] = None[source][source]¶
- security: list[ApiSecurityRequirement] = None[source][source]¶
- class oas2mcp.models.normalized.ApiParameter(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelNormalized operation parameter.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
parameter = ApiParameter( name="petId", location="path", required=True, schema_type="integer", )
- class oas2mcp.models.normalized.ApiPathItem(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelNormalized path item grouping multiple operations.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
item = ApiPathItem( path="/pets", operations=[], )
- classmethod normalize_path(value: str) str[source][source]¶
Normalize a path item path.
- Parameters:
value – The raw path string.
- Returns:
The normalized path string.
- Raises:
ValueError – If the path is empty.
Examples
ApiPathItem(path="/pets")
- operations: list[ApiOperation] = None[source][source]¶
- parameters: list[ApiParameter] = None[source][source]¶
- class oas2mcp.models.normalized.ApiRequestBody(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelNormalized request body definition.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
body = ApiRequestBody( required=True, media_types=[ApiMediaType(content_type="application/json")], )
- media_types: list[ApiMediaType] = None[source][source]¶
- class oas2mcp.models.normalized.ApiResponse(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelNormalized response definition.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
response = ApiResponse( status_code="200", description="Success", )
- media_types: list[ApiMediaType] = None[source][source]¶
- class oas2mcp.models.normalized.ApiSecurityRequirement(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelOne normalized security requirement mapping.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
requirement = ApiSecurityRequirement( scheme_names=["bearerAuth"], )
- class oas2mcp.models.normalized.ApiSecurityScheme(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelOne named security scheme.
- Design:
nameis the scheme identifier fromcomponents.securitySchemes.parameter_nameis the header/query/cookie parameter name used by some schemes such as API key auth.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
scheme = ApiSecurityScheme( name="apiKeyAuth", type="apiKey", location="header", parameter_name="X-API-Key", )
- class oas2mcp.models.normalized.ApiServer(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelResolved server definition.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
server = ApiServer( url="https://api.example.com", description="Production", )
- class oas2mcp.models.normalized.ApiTag(/, **data: Any)[source][source]¶
Bases:
NormalizedBaseModelNormalized tag metadata.
- Parameters:
None.
- Returns:
None.
- Raises:
None. –
Examples
tag = ApiTag( name="pets", description="Operations about pets.", )