|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace erasys\OpenApi\Spec\v3; |
|
4
|
|
|
|
|
5
|
|
|
/** |
|
6
|
|
|
* Describes a single operation parameter. |
|
7
|
|
|
* A unique parameter is defined by a combination of a name and location. |
|
8
|
|
|
* |
|
9
|
|
|
* Parameter Locations |
|
10
|
|
|
* There are four possible parameter locations specified by the in field: |
|
11
|
|
|
* |
|
12
|
|
|
* - path: Used together with Path Templating, where the parameter value is actually part of the operation's URL. This |
|
13
|
|
|
* does not include the host or base path of the API. For example, in /items/{itemId}, the path parameter is itemId. |
|
14
|
|
|
* |
|
15
|
|
|
* - query: Parameters that are appended to the URL. For example, in /items?id=###, the query parameter is id. |
|
16
|
|
|
* |
|
17
|
|
|
* - header: Custom headers that are expected as part of the request. Note that RFC7230 states header names are case |
|
18
|
|
|
* insensitive. |
|
19
|
|
|
* |
|
20
|
|
|
* - cookie: - Used to pass a specific cookie value to the API. |
|
21
|
|
|
* |
|
22
|
|
|
* |
|
23
|
|
|
* The rules for serialization of the parameter are specified in one of two ways. |
|
24
|
|
|
* For simpler scenarios, a "schema" and "style" can describe the structure and syntax of the parameter. |
|
25
|
|
|
* |
|
26
|
|
|
* For more complex scenarios, the "content" property can define the media type and schema of the parameter. |
|
27
|
|
|
* A parameter MUST contain either a "schema" property, or a "content" property, but not both |
|
28
|
|
|
* When "example" or "examples" are provided in conjunction with the "schema" object, the "example" MUST |
|
29
|
|
|
* follow the prescribed serialization strategy for the parameter. |
|
30
|
|
|
* |
|
31
|
|
|
* @see https://swagger.io/specification/#parameterObject |
|
32
|
|
|
*/ |
|
33
|
|
|
class Parameter extends AbstractParameter |
|
34
|
|
|
{ |
|
35
|
|
|
const IN_PATH = 'path'; |
|
36
|
|
|
const IN_QUERY = 'query'; |
|
37
|
|
|
const IN_HEADER = 'header'; |
|
38
|
|
|
const IN_COOKIE = 'cookie'; |
|
39
|
|
|
|
|
40
|
|
|
/** |
|
41
|
|
|
* REQUIRED. The name of the parameter. Parameter names are case sensitive. |
|
42
|
|
|
* |
|
43
|
|
|
* - If in is "path", the name field MUST correspond to the associated path segment from the path field in the Paths |
|
44
|
|
|
* Object. See Path Templating for further information. |
|
45
|
|
|
* |
|
46
|
|
|
* - If in is "header" and the name field is "Accept", |
|
47
|
|
|
* "Content-Type" or "Authorization", the parameter definition SHALL be ignored. |
|
48
|
|
|
* |
|
49
|
|
|
* - For all other cases, the name corresponds to the parameter name used by the in property. |
|
50
|
|
|
* |
|
51
|
|
|
* @see https://swagger.io/specification/#pathTemplating |
|
52
|
|
|
* |
|
53
|
|
|
* |
|
54
|
|
|
* @var string |
|
55
|
|
|
*/ |
|
56
|
|
|
public $name; |
|
57
|
|
|
|
|
58
|
|
|
/** |
|
59
|
|
|
* REQUIRED. The location of the parameter. Possible values are "query", "header", "path" or "cookie". |
|
60
|
|
|
* |
|
61
|
|
|
* |
|
62
|
|
|
* @var string |
|
63
|
|
|
*/ |
|
64
|
|
|
public $in; |
|
65
|
|
|
|
|
66
|
|
|
/** |
|
67
|
|
|
* @param string $name |
|
68
|
|
|
* @param string $in |
|
69
|
|
|
* @param string|null $description |
|
70
|
|
|
* @param array $additionalProperties |
|
71
|
|
|
*/ |
|
72
|
6 |
|
public function __construct(string $name, string $in, string $description = null, array $additionalProperties = []) |
|
73
|
|
|
{ |
|
74
|
6 |
|
parent::__construct($additionalProperties); |
|
75
|
6 |
|
$this->name = $name; |
|
76
|
6 |
|
$this->in = $in; |
|
77
|
6 |
|
$this->description = $description; |
|
78
|
6 |
|
} |
|
79
|
|
|
} |
|
80
|
|
|
|