UNPKG

@foal/core

Version:

Full-featured Node.js framework, with no complexity

1,337 lines 76.5 kB
/** * This is the root document object of the OpenAPI document. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IOpenAPI */ export interface IOpenAPI { /** * This string MUST be the semantic version number of the OpenAPI Specification version * that the OpenAPI document uses. The openapi field SHOULD be used by tooling * specifications and clients to interpret the OpenAPI document. This is not related * to the API info.version string. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IOpenAPI */ openapi: string; /** * Provides metadata about the API. The metadata MAY be used by tooling as required. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiInfo} * @memberof IOpenAPI */ info: IApiInfo; /** * An array of Server Objects, which provide connectivity information to a target * server. If the servers property is not provided, or is an empty array, the default * value would be a Server Object with a url value of /. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiServer[]} * @memberof IOpenAPI */ servers?: IApiServer[]; /** * The available paths and operations for the API. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiPaths} * @memberof IOpenAPI */ paths: IApiPaths; /** * An element to hold various schemas for the specification. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiComponent[]} * @memberof IOpenAPI */ components?: IApiComponents; /** * A declaration of which security mechanisms can be used across the API. The list * of values includes alternative security requirement objects that can be used. * Only one of the security requirement objects need to be satisfied to authorize * a request. Individual operations can override this definition. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiSecurityRequirement[]} * @memberof IOpenAPI */ security?: IApiSecurityRequirement[]; /** * A list of tags used by the specification with additional metadata. The order of * the tags can be used to reflect on their order by the parsing tools. Not all tags * that are used by the Operation Object must be declared. The tags that are not * declared MAY be organized randomly or based on the tools' logic. Each tag name in * the list MUST be unique. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiTag[]} * @memberof IOpenAPI */ tags?: IApiTag[]; /** * Additional external documentation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiExternalDocumentation} * @memberof IOpenAPI */ externalDocs?: IApiExternalDocumentation; } /** * The object provides metadata about the API. The metadata MAY be used by the clients * if needed, and MAY be presented in editing or documentation generation tools for * convenience. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiInfo */ export interface IApiInfo { /** * The title of the application. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiInfo */ title: string; /** * A short description of the application. CommonMark syntax MAY be used for rich * text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiInfo */ description?: string; /** * A URL to the Terms of Service for the API. MUST be in the format of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiInfo */ termsOfService?: string; /** * The contact information for the exposed API. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiContact} * @memberof IApiInfo */ contact?: IApiContact; /** * The license information for the exposed API. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiLicense} * @memberof IApiInfo */ license?: IApiLicense; /** * The version of the OpenAPI document (which is distinct from the OpenAPI * Specification version or the API implementation version). * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiInfo */ version: string; } /** * Contact information for the exposed API. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiContact */ export interface IApiContact { /** * The identifying name of the contact person/organization. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiContact */ name?: string; /** * The URL pointing to the contact information. MUST be in the format of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiContact */ url?: string; /** * The email address of the contact person/organization. MUST be in the format * of an email address. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiContact */ email?: string; } /** * License information for the exposed API. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiLicense */ export interface IApiLicense { /** * The license name used for the API. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiLicense */ name: string; /** * A URL to the license used for the API. MUST be in the format of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiLicense */ url?: string; } /** * An object representing a Server. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiServer */ export interface IApiServer { /** * A URL to the target host. This URL supports Server Variables and MAY be * relative, to indicate that the host location is relative to the location * where the OpenAPI document is being served. Variable substitutions will * be made when a variable is named in {brackets}. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiServer */ url: string; /** * An optional string describing the host designated by the URL. CommonMark * syntax MAY be used for rich text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiServer */ description?: string; /** * A map between a variable name and its value. The value is used for substitution * in the server's URL template. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {{ * [key: string]: IApiServerVariable; * }} * @memberof IApiServer */ variables?: { [key: string]: IApiServerVariable; }; } /** * An object representing a Server Variable for server URL template substitution. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiServerVariable */ export interface IApiServerVariable { /** * An enumeration of string values to be used if the substitution options are * from a limited set. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string[]} * @memberof IApiServerVariable */ enum?: string[]; /** * The default value to use for substitution, which SHALL be sent if an alternate * value is not supplied. Note this behavior is different than the Schema Object's * treatment of default values, because in those cases parameter values are optional. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiServerVariable */ default: string; /** * An optional description for the server variable. CommonMark syntax MAY be used for * rich text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiServerVariable */ description?: string; } /** * Holds a set of reusable objects for different aspects of the OAS. All objects defined * within the components object will have no effect on the API unless they are explicitly * referenced from properties outside the components object. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiComponents */ export interface IApiComponents { /** * An object to hold reusable Schema Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiSchema | IApiReference; * })} * @memberof IApiComponents */ schemas?: { [key: string]: IApiSchema | IApiReference; }; /** * An object to hold reusable Response Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiResponse | IApiReference; * })} * @memberof IApiComponents */ responses?: { [key: string]: IApiResponse | IApiReference; }; /** * An object to hold reusable Parameter Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiParameter | IApiReference; * })} * @memberof IApiComponents */ parameters?: { [key: string]: IApiParameter | IApiReference; }; /** * An object to hold reusable Example Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiExample | IApiReference; * })} * @memberof IApiComponents */ examples?: { [key: string]: IApiExample | IApiReference; }; /** * An object to hold reusable Request Body Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiRequestBody | IApiReference; * })} * @memberof IApiComponents */ requestBodies?: { [key: string]: IApiRequestBody | IApiReference; }; /** * An object to hold reusable Header Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiHeader | IApiReference; * })} * @memberof IApiComponents */ headers?: { [key: string]: IApiHeader | IApiReference; }; /** * An object to hold reusable Security Scheme Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiSecurityScheme | IApiReference; * })} * @memberof IApiComponents */ securitySchemes?: { [key: string]: IApiSecurityScheme | IApiReference; }; /** * An object to hold reusable Link Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiLink | IApiReference; * })} * @memberof IApiComponents */ links?: { [key: string]: IApiLink | IApiReference; }; /** * An object to hold reusable Callback Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiCallback | IApiReference; * })} * @memberof IApiComponents */ callbacks?: { [key: string]: IApiCallback | IApiReference; }; } /** * Holds the relative paths to the individual endpoints and their operations. * The path is appended to the URL from the Server Object in order to construct * the full URL. The Paths MAY be empty, due to ACL constraints. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiPaths */ export interface IApiPaths { /** * A relative path to an individual endpoint. The field name MUST begin with a slash. * The path is appended (no relative URL resolution) to the expanded URL from the * Server Object's url field in order to construct the full URL. Path templating * is allowed. When matching URLs, concrete (non-templated) paths would be matched * before their templated counterparts. Templated paths with the same hierarchy but * different templated names MUST NOT exist as they are identical. In case of * ambiguous matching, it's up to the tooling to decide which one to use. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiPathItem} * @memberof IApiPaths */ [path: string]: IApiPathItem; } /** * Describes the operations available on a single path. A Path Item MAY be empty, * due to ACL constraints. The path itself is still exposed to the documentation viewer * but they will not know which operations and parameters are available. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiPathItem */ export interface IApiPathItem { /** * Allows for an external definition of this path item. The referenced structure MUST * be in the format of a Path Item Object. If there are conflicts between the referenced * definition and this Path Item's definition, the behavior is *undefined*. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiPathItem */ $ref?: string; /** * An optional, string summary, intended to apply to all operations in this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiPathItem */ summary?: string; /** * An optional, string description, intended to apply to all operations in this path. * CommonMark syntax MAY be used for rich text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiPathItem */ description?: string; /** * A definition of a GET operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ get?: IApiOperation; /** * A definition of a PUT operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ put?: IApiOperation; /** * A definition of a POST operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ post?: IApiOperation; /** * A definition of a DELETE operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ delete?: IApiOperation; /** * A definition of a OPTIONS operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ options?: IApiOperation; /** * A definition of a HEAD operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ head?: IApiOperation; /** * A definition of a PATCH operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ patch?: IApiOperation; /** * A definition of a TRACE operation on this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOperation} * @memberof IApiPathItem */ trace?: IApiOperation; /** * An alternative server array to service all operations in this path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiServer[]} * @memberof IApiPathItem */ servers?: IApiServer[]; /** * A list of parameters that are applicable for all the operations described * under this path. These parameters can be overridden at the operation level, * but cannot be removed there. The list MUST NOT include duplicated parameters. * A unique parameter is defined by a combination of a name and location. The list * can use the Reference Object to link to parameters that are defined at the OpenAPI * Object's components/parameters. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {((IApiParameter | IApiReference)[])} * @memberof IApiPathItem */ parameters?: (IApiParameter | IApiReference)[]; } /** * Describes a single API operation on a path. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiOperation */ export interface IApiOperation { /** * A list of tags for API documentation control. Tags can be used for * logical grouping of operations by resources or any other qualifier. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string[]} * @memberof IApiOperation */ tags?: string[]; /** * A short summary of what the operation does. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiOperation */ summary?: string; /** * A verbose explanation of the operation behavior. CommonMark syntax * MAY be used for rich text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiOperation */ description?: string; /** * Additional external documentation for this operation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiExternalDocumentation} * @memberof IApiOperation */ externalDocs?: IApiExternalDocumentation; /** * Unique string used to identify the operation. The id MUST be unique among all * operations described in the API. The operationId value is case-sensitive. Tools * and libraries MAY use the operationId to uniquely identify an operation, therefore, * it is RECOMMENDED to follow common programming naming conventions. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiOperation */ operationId?: string; /** * A list of parameters that are applicable for this operation. If a parameter is already * defined at the Path Item, the new definition will override it but can never remove it. * The list MUST NOT include duplicated parameters. A unique parameter is defined by a * combination of a name and location. The list can use the Reference Object to link to * parameters that are defined at the OpenAPI Object's components/parameters. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {((IApiParameter | IApiReference)[])} * @memberof IApiOperation */ parameters?: (IApiParameter | IApiReference)[]; /** * The request body applicable for this operation. The requestBody is only supported in * HTTP methods where the HTTP 1.1 specification RFC7231 has explicitly defined semantics * for request bodies. In other cases where the HTTP spec is vague, requestBody SHALL be * ignored by consumers. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiRequestBody | IApiReference)} * @memberof IApiOperation */ requestBody?: IApiRequestBody | IApiReference; /** * The list of possible responses as they are returned from executing this operation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiResponse[]} * @memberof IApiOperation */ responses: IApiResponses; /** * A map of possible out-of band callbacks related to the parent operation. The key is a * unique identifier for the Callback Object. Each value in the map is a Callback Object * that describes a request that may be initiated by the API provider and the expected * responses. The key value used to identify the callback object is an expression, evaluated * at runtime, that identifies a URL to use for the callback operation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiCallback | IApiReference; * })} * @memberof IApiOperation */ callbacks?: { [key: string]: IApiCallback | IApiReference; }; /** * Declares this operation to be deprecated. Consumers SHOULD refrain from usage of the * declared operation. Default value is false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiOperation */ deprecated?: boolean; /** * A declaration of which security mechanisms can be used for this operation. The list of * values includes alternative security requirement objects that can be used. Only one of * the security requirement objects need to be satisfied to authorize a request. This * definition overrides any declared top-level security. To remove a top-level security * declaration, an empty array can be used. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiSecurityRequirement[]} * @memberof IApiOperation */ security?: IApiSecurityRequirement[]; /** * An alternative server array to service this operation. If an alternative server object * is specified at the Path Item Object or Root level, it will be overridden by this value. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiServer[]} * @memberof IApiOperation */ servers?: IApiServer[]; } /** * Allows referencing an external resource for extended documentation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiExternalDocumentation */ export interface IApiExternalDocumentation { /** * A short description of the target documentation. CommonMark syntax MAY be used for * rich text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiExternalDocumentation */ description?: string; /** * The URL for the target documentation. Value MUST be in the format of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiExternalDocumentation */ url: string; } export interface IApiAbstractParameter { /** * The name of the parameter. Parameter names are case sensitive. * * If in is "path", the name field MUST correspond to the associated path segment * from the path field in the Paths Object. See Path Templating for further information. * * If in 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 property. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiAbstractParameter */ name: string; /** * The location of the parameter. Possible values are "query", "header", "path" or "cookie". * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {('query'|'header'|'path'|'cookie')} * @memberof IApiAbstractParameter */ in: 'query' | 'header' | 'path' | 'cookie'; /** * A brief description of the parameter. This could contain examples of use. CommonMark * syntax MAY be used for rich text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiAbstractParameter */ description?: string; /** * 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. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiAbstractParameter */ required?: boolean; /** * Specifies that a parameter is deprecated and SHOULD be transitioned out of usage. * Default value is false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiAbstractParameter */ deprecated?: boolean; /** * 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. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiAbstractParameter */ style?: 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject'; /** * 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. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiAbstractParameter */ explode?: boolean; /** * The schema defining the type used for the parameter. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiSchema | IApiReference)} * @memberof IApiAbstractParameter */ schema?: IApiSchema | IApiReference; /** * 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. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {*} * @memberof IApiAbstractParameter */ 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. * * @type {({ * [key: string]: IApiExample | IApiReference; * })} * @memberof IApiAbstractParameter */ examples?: { [key: string]: IApiExample | IApiReference; }; /** * 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. * * @type {{ * [key: string]: IApiMediaType; * }} * @memberof IApiAbstractParameter */ content?: { [key: string]: IApiMediaType; }; } export interface IApiPathParameter extends IApiAbstractParameter { in: 'path'; required: true; style?: 'matrix' | 'label' | 'simple'; } export interface IApiQueryParameter extends IApiAbstractParameter { in: 'query'; /** * 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. Use of this property is NOT RECOMMENDED, as it is likely to be removed in a * later revision. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiAbstractParameter */ allowEmptyValue?: boolean; /** * Determines whether the parameter value SHOULD allow reserved characters, as defined by * RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only * applies to parameters with an in value of query. The default value is false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiQueryParameter */ allowReserved?: boolean; style?: 'form' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject'; } export interface IApiHeaderParameter extends IApiAbstractParameter { in: 'header'; style?: 'simple'; } export interface IApiCookieParameter extends IApiAbstractParameter { in: 'cookie'; style?: 'form'; } /** * Describes a single operation parameter. * * A unique parameter is defined by a combination of a name and location. * * Parameter Locations * There are four possible parameter locations specified by the in field: * * * path - Used together with Path Templating, where the parameter value is actually part * of the operation's URL. This does not include the host or base path of the API. For example, * in /items/{itemId}, the path parameter is itemId. * * query - Parameters that are appended to the URL. For example, in /items?id=###, the query * parameter is id. * * header - Custom headers that are expected as part of the request. Note that RFC7230 states * header names are case insensitive. * * cookie - Used to pass a specific cookie value to the API. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export */ export type IApiParameter = IApiPathParameter | IApiQueryParameter | IApiHeaderParameter | IApiCookieParameter; /** * Describes a single request body. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiRequestBody */ export interface IApiRequestBody { /** * A brief description of the request body. This could contain examples * of use. CommonMark syntax MAY be used for rich text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiRequestBody */ description?: string; /** * The content of the request body. The key is a media type or media type * range and the value describes it. For requests that match multiple keys, * only the most specific key is applicable. e.g. text/plain overrides text/* * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {{ * [key: string]: IApiMediaType; * }} * @memberof IApiRequestBody */ content: { [key: string]: IApiMediaType; }; /** * Determines if the request body is required in the request. Defaults to false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiRequestBody */ required?: boolean; } /** * Each Media Type Object provides schema and examples for the media type * identified by its key. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiMediaType */ export interface IApiMediaType { /** * The schema defining the content of the request, response, or parameter. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiSchema | IApiReference)} * @memberof IApiMediaType */ schema?: IApiSchema | IApiReference; /** * Example of the media type. The example object SHOULD be in the correct * format as specified by the media type. 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. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {*} * @memberof IApiMediaType */ example?: any; /** * Examples of the media type. Each example object SHOULD match the media type * and specified schema if present. 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. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiExample | IApiReference; * })} * @memberof IApiMediaType */ examples?: { [key: string]: IApiExample | IApiReference; }; /** * A map between a property name and its encoding information. The key, being the * property name, MUST exist in the schema as a property. The encoding object SHALL * only apply to requestBody objects when the media type is multipart or * application/x-www-form-urlencoded. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {{ * [key: string]: IApiEncoding; * }} * @memberof IApiMediaType */ encoding?: { [key: string]: IApiEncoding; }; } /** * A single encoding definition applied to a single schema property. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiEncoding */ export interface IApiEncoding { /** * The Content-Type for encoding a specific property. Default value depends on * the property type: for string with format being binary – application/octet-stream; * for other primitive types – text/plain; for object - application/json; for * array – the default is defined based on the inner type. The value can be a specific * media type (e.g. application/json), a wildcard media type (e.g. image/*), or a * comma-separated list of the two types. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiEncoding */ contentType?: string; /** * A map allowing additional information to be provided as headers, for example * Content-Disposition. Content-Type is described separately and SHALL be ignored in * this section. This property SHALL be ignored if the request body media type is not * a multipart. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiHeader | IApiReference; * })} * @memberof IApiEncoding */ headers?: { [key: string]: IApiHeader | IApiReference; }; /** * Describes how a specific property value will be serialized depending on its type. * See Parameter Object for details on the style property. The behavior follows the * same values as query parameters, including default values. This property SHALL be * ignored if the request body media type is not application/x-www-form-urlencoded. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiEncoding */ style?: 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject'; /** * When this is true, property 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 properties * this property has no effect. When style is form, the default value is true. For all other * styles, the default value is false. This property SHALL be ignored if the request body * media type is not application/x-www-form-urlencoded. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiEncoding */ explode?: boolean; /** * Determines whether the parameter value SHOULD allow reserved characters, as defined by * RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. The default value is * false. This property SHALL be ignored if the request body media type is not * application/x-www-form-urlencoded. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiEncoding */ allowReserved?: boolean; } /** * A container for the expected responses of an operation. The container maps a HTTP response * code to the expected response. * * The documentation is not necessarily expected to cover all possible HTTP response codes * because they may not be known in advance. However, documentation is expected to cover a * successful operation response and any known errors. * * The default MAY be used as a default response object for all HTTP codes that are not covered * individually by the specification. * * The Responses Object MUST contain at least one response code, and it SHOULD be the response * for a successful operation call. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiResponses */ export interface IApiResponses { /** * The documentation of responses other than the ones declared for specific HTTP response * codes. Use this field to cover undeclared responses. A Reference Object can link to a * response that the OpenAPI Object's components/responses section defines. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiResponse | IApiReference)} * @memberof IApiResponses */ default?: IApiResponse | IApiReference; /** * Any HTTP status code can be used as the property name, but only one property per code, * to describe the expected response for that HTTP status code. A Reference Object can link * to a response that is defined in the OpenAPI Object's components/responses section. This * field MUST be enclosed in quotation marks (for example, "200") for compatibility between * JSON and YAML. To define a range of response codes, this field MAY contain the uppercase * wildcard character X. For example, 2XX represents all response codes between [200-299]. * Only the following range definitions are allowed: 1XX, 2XX, 3XX, 4XX, and 5XX. If a * response is defined using an explicit code, the explicit code definition takes precedence * over the range definition for that code. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiResponse | IApiReference)} * @memberof IApiResponses */ [httpStatusCode: number]: IApiResponse | IApiReference; /** * Any HTTP status code can be used as the property name, but only one property per code, * to describe the expected response for that HTTP status code. A Reference Object can link * to a response that is defined in the OpenAPI Object's components/responses section. This * field MUST be enclosed in quotation marks (for example, "200") for compatibility between * JSON and YAML. To define a range of response codes, this field MAY contain the uppercase * wildcard character X. For example, 2XX represents all response codes between [200-299]. * Only the following range definitions are allowed: 1XX, 2XX, 3XX, 4XX, and 5XX. If a * response is defined using an explicit code, the explicit code definition takes precedence * over the range definition for that code. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiResponse | IApiReference)} * @memberof IApiResponses */ '1XX'?: IApiResponse | IApiReference; /** * Any HTTP status code can be used as the property name, but only one property per code, * to describe the expected response for that HTTP status code. A Reference Object can link * to a response that is defined in the OpenAPI Object's components/responses section. This * field MUST be enclosed in quotation marks (for example, "200") for compatibility between * JSON and YAML. To define a range of response codes, this field MAY contain the uppercase * wildcard character X. For example, 2XX represents all response codes between [200-299]. * Only the following range definitions are allowed: 1XX, 2XX, 3XX, 4XX, and 5XX. If a * response is defined using an explicit code, the explicit code definition takes precedence * over the range definition for that code. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiResponse | IApiReference)} * @memberof IApiResponses */ '2XX'?: IApiResponse | IApiReference; /** * Any HTTP status code can be used as the property name, but only one property per code, * to describe the expected response for that HTTP status code. A Reference Object can link * to a response that is defined in the OpenAPI Object's components/responses section. This * field MUST be enclosed in quotation marks (for example, "200") for compatibility between * JSON and YAML. To define a range of response codes, this field MAY contain the uppercase * wildcard character X. For example, 2XX represents all response codes between [200-299]. * Only the following range definitions are allowed: 1XX, 2XX, 3XX, 4XX, and 5XX. If a * response is defined using an explicit code, the explicit code definition takes precedence * over the range definition for that code. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiResponse | IApiReference)} * @memberof IApiResponses */ '3XX'?: IApiResponse | IApiReference; /** * Any HTTP status code can be used as the property name, but only one property per code, * to describe the expected response for that HTTP status code. A Reference Object can link * to a response that is defined in the OpenAPI Object's components/responses section. This * field MUST be enclosed in quotation marks (for example, "200") for compatibility between * JSON and YAML. To define a range of response codes, this field MAY contain the uppercase * wildcard character X. For example, 2XX represents all response codes between [200-299]. * Only the following range definitions are allowed: 1XX, 2XX, 3XX, 4XX, and 5XX. If a * response is defined using an explicit code, the explicit code definition takes precedence * over the range definition for that code. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiResponse | IApiReference)} * @memberof IApiResponses */ '4XX'?: IApiResponse | IApiReference; /** * Any HTTP status code can be used as the property name, but only one property per code, * to describe the expected response for that HTTP status code. A Reference Object can link * to a response that is defined in the OpenAPI Object's components/responses section. This * field MUST be enclosed in quotation marks (for example, "200") for compatibility between * JSON and YAML. To define a range of response codes, this field MAY contain the uppercase * wildcard character X. For example, 2XX represents all response codes between [200-299]. * Only the following range definitions are allowed: 1XX, 2XX, 3XX, 4XX, and 5XX. If a * response is defined using an explicit code, the explicit code definition takes precedence * over the range definition for that code. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {(IApiResponse | IApiReference)} * @memberof IApiResponses */ '5XX'?: IApiResponse | IApiReference; } /** * Describes a single response from an API Operation, including design-time, static * links to operations based on the response. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiResponse */ export interface IApiResponse { /** * A short description of the response. CommonMark syntax MAY be used for rich * text representation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiResponse */ description: string; /** * Maps a header name to its definition. RFC7230 states header names are case * insensitive. If a response header is defined with the name "Content-Type", * it SHALL be ignored. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiHeader | IApiReference; * })} * @memberof IApiResponse */ headers?: { [key: string]: IApiHeader | IApiReference; }; /** * A map containing descriptions of potential response payloads. The key is a * media type or media type range and the value describes it. For responses that * match multiple keys, only the most specific key is applicable. e.g. text/plain * overrides text/* * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {{ * [key: string]: