-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathlink.py
94 lines (75 loc) · 3.01 KB
/
link.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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}