@tsed/openspec
Version:
OpenSpec2 and OpenSpec3 interfaces declarations for TypeScript application
82 lines (81 loc) • 5.3 kB
TypeScript
import { OpenSpecHash } from "../common/OpenSpecHash.js";
import { OpenSpecRef } from "../common/OpenSpecRef.js";
import { OS3Example } from "./OS3Example.js";
import { OS3MediaType } from "./OS3MediaType.js";
import { OS3Schema } from "./OS3Schema.js";
export type OS3StyleParameter = "matrix" | "label" | "form" | "simple" | "spaceDelimited" | "pipeDelimited" | "deepObject";
export interface OS3Parameter<Schema = OS3Schema> {
/**
*The name of the parameter. Parameter names are case sensitive.
*
* - If [`in`](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#parameterIn) is `"path"`, the `name` field MUST correspond to the associated [path](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#pathsPath) segment from the path field in the [Paths Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#pathsObject). See [Path Templating](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#pathTemplating) for further information.
* - If [`in`](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#parameterIn) is `"header"` and the `name` field is `"Accept"`, `"Content-Type"` or `"Authorization"`, the parameter definition SHALL be ignored.
* - For all other cases, the `name` corresponds to the parameter name used by the [`in`](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#parameterIn) property.
*/
name: string;
/**
* The location of the parameter. Possible values are `"query"`, `"header"`, `"path"` or `"cookie"`.
*/
in: "path" | "query" | "header" | "cookie";
/**
* Determines whether this parameter is mandatory. If the [parameter location](Determines whether this parameter is mandatory.
* If the parameter location is `"path"`, this property is **REQUIRED** and its value MUST be `true`.
* Otherwise, the property MAY be included and its default value is false.) is `"path"`, this property is **REQUIRED** and its value MUST be `true`.
* Otherwise, the property MAY be included and its default value is `false`.
*/
required: boolean;
/**
* A brief description of the parameter. This could contain examples of use. CommonMark syntax MAY be used for rich text representation.
*/
description?: string;
/**
* Specifies that a parameter is deprecated and SHOULD be transitioned out of usage.
*/
deprecated?: boolean;
/**
* Sets the ability to pass empty-valued parameters.
* This is valid only for query parameters and allows sending a parameter with an empty value.
* Default value is `false`.
* If style is used, and if behavior is `n/a` (cannot be serialized), the value of `allowEmptyValue` SHALL be ignored.
*/
allowEmptyValue?: boolean;
/**
* The schema defining the type used for the parameter.
*/
schema?: OS3Schema | OpenSpecRef;
/**
* Describes how the parameter value will be serialized depending on the type of the parameter value.
* Default values (based on value of in): for `query` - `form`; for `path` - `simple`; for `header` - `simple`; for `cookie` - `form`.
* See [style values](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#style-values).
*/
style?: OS3StyleParameter;
/**
* When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map.
* For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false.
*/
explode?: boolean;
/**
* Determines whether the parameter value SHOULD allow reserved characters, as defined by [RFC3986](https://tools.ietf.org/html/rfc3986#section-2.2) `:/?#[]@!$&'()*+,;=` to be included without percent-encoding.
* This property only applies to parameters with an `in` value of `query`. The default value is `false`.
*/
allowReserved?: boolean;
/**
* Example of the media type.
* The `example` SHOULD match the specified schema and encoding properties if present.
* The `example` field is mutually exclusive of the `examples` field.
* Furthermore, if referencing a `schema` which contains an example, the `example` value SHALL override the example provided by the schema.
* To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary.
*/
example?: any;
/**
* Examples of the media type.
* Each example SHOULD contain a value in the correct format as specified in the parameter encoding.
* The `examples` field is mutually exclusive of the `example` field.
* Furthermore, if referencing a `schema` which contains an example, the examples value SHALL override the example provided by the schema.
*/
examples?: OpenSpecHash<OS3Example | OpenSpecRef>;
/***
* A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry.
*/
content?: OpenSpecHash<OS3MediaType>;
}