94 lines
3 KiB
Python
94 lines
3 KiB
Python
from typing import Any, Dict, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from openapi_pydantic.compat import PYDANTIC_V2, ConfigDict, Extra
|
|
|
|
from .server import Server
|
|
|
|
_examples = [
|
|
{
|
|
"operationId": "getUserAddressByUUID",
|
|
"parameters": {"userUuid": "$response.body#/uuid"},
|
|
},
|
|
{
|
|
"operationRef": "#/paths/~12.0~1repositories~1{username}/get",
|
|
"parameters": {"username": "$response.body#/username"},
|
|
},
|
|
]
|
|
|
|
|
|
class Link(BaseModel):
|
|
"""
|
|
The `Link object` represents a possible design-time link for a response.
|
|
The presence of a link does not guarantee the caller's ability to successfully
|
|
invoke it, rather it provides a known relationship and traversal mechanism between
|
|
responses and other operations.
|
|
|
|
Unlike _dynamic_ links (i.e. links provided **in** the response payload),
|
|
the OAS linking mechanism does not require link information in the runtime response.
|
|
|
|
For computing links, and providing instructions to execute them,
|
|
a [runtime expression](#runtimeExpression) is used for accessing values in an
|
|
operation and using them as parameters while invoking the linked operation.
|
|
"""
|
|
|
|
operationRef: Optional[str] = None
|
|
"""
|
|
A relative or absolute URI reference to an OAS operation.
|
|
This field is mutually exclusive of the `operationId` field,
|
|
and MUST point to an [Operation Object](#operationObject).
|
|
Relative `operationRef` values MAY be used to locate an existing
|
|
[Operation Object](#operationObject) in the OpenAPI definition.
|
|
"""
|
|
|
|
operationId: Optional[str] = None
|
|
"""
|
|
The name of an _existing_, resolvable OAS operation, as defined with a unique
|
|
`operationId`.
|
|
|
|
This field is mutually exclusive of the `operationRef` field.
|
|
"""
|
|
|
|
parameters: Optional[Dict[str, Any]] = None
|
|
"""
|
|
A map representing parameters to pass to an operation
|
|
as specified with `operationId` or identified via `operationRef`.
|
|
The key is the parameter name to be used,
|
|
whereas the value can be a constant or an expression to be evaluated and passed to
|
|
the linked operation.
|
|
|
|
The parameter name can be qualified using the [parameter location](#parameterIn)
|
|
`[{in}.]{name}` for operations that use the same parameter name in different
|
|
locations (e.g. path.id).
|
|
"""
|
|
|
|
requestBody: Optional[Any] = None
|
|
"""
|
|
A literal value or [{expression}](#runtimeExpression) to use as a request body when
|
|
calling the target operation.
|
|
"""
|
|
|
|
description: Optional[str] = None
|
|
"""
|
|
A description of the link.
|
|
[CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text
|
|
representation.
|
|
"""
|
|
|
|
server: Optional[Server] = None
|
|
"""
|
|
A server object to be used by the target operation.
|
|
"""
|
|
|
|
if PYDANTIC_V2:
|
|
model_config = ConfigDict(
|
|
extra="allow",
|
|
json_schema_extra={"examples": _examples},
|
|
)
|
|
|
|
else:
|
|
|
|
class Config:
|
|
extra = Extra.allow
|
|
schema_extra = {"examples": _examples}
|