/** * 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]: IApiMediaType; * }} * @memberof IApiResponse */ content?: { [key: string]: IApiMediaType; }; /** * A map of operations links that can be followed from the response. The key of the * map is a short name for the link, following the naming constraints of the names * for Component Objects. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {({ * [key: string]: IApiLink | IApiReference; * })} * @memberof IApiResponse */ links?: { [key: string]: IApiLink | IApiReference; }; } /** * A map of possible out-of band callbacks related to the parent operation. Each value * in the map is a Path Item Object that describes a set of requests 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 * * @export * @interface IApiCallback */ export interface IApiCallback { /** * A Path Item Object used to define a callback request and expected responses. A * complete example is available. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiPathItem} * @memberof IApiCallback */ [expression: string]: IApiPathItem; } export interface IApiExample { /** * Short description for the example. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiExample */ summary?: string; /** * Long description for the example. 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 IApiExample */ description?: string; /** * Embedded literal example. The value field and externalValue field are mutually * exclusive. To represent examples of media types that cannot naturally represented * in JSON or YAML, use a string value to contain the example, escaping where necessary. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {*} * @memberof IApiExample */ value?: any; /** * A URL that points to the literal example. This provides the capability to reference * examples that cannot easily be included in JSON or YAML documents. The value field * and externalValue field are mutually exclusive. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiExample */ externalValue?: string; } /** * 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 is used * for accessing values in an operation and using them as parameters while invoking the linked * operation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiLink */ export interface IApiLink { /** * A relative or absolute reference to an OAS operation. This field is mutually exclusive of * the operationId field, and MUST point to an Operation Object. Relative operationRef values * MAY be used to locate an existing Operation Object in the OpenAPI definition. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiLink */ operationRef?: string; /** * The name of an existing, resolvable OAS operation, as defined with a unique operationId. * This field is mutually exclusive of the operationRef field. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiLink */ operationId?: string; /** * 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 [{in}.]{name} * for operations that use the same parameter name in different locations (e.g. path.id). * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {{ * [key: string]: any; * }} * @memberof IApiLink */ parameters?: { [key: string]: any | string; }; /** * A literal value or {expression} to use as a request body when calling the target operation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {*} * @memberof IApiLink */ requestBody?: any | string; /** * A description of the link. 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 IApiLink */ description?: string; /** * A server object to be used by the target operation. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiServer} * @memberof IApiLink */ server?: IApiServer; } /** * The Header Object follows the structure of the Parameter Object with the following changes: * * 1. name MUST NOT be specified, it is given in the corresponding headers map. * 2. in MUST NOT be specified, it is implicitly in header. * 3. All traits that are affected by the location MUST be applicable to a location of * header (for example, style). * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export */ export type IApiHeader = Pick>; /** * Adds metadata to a single tag that is used by the Operation Object. It is not * mandatory to have a Tag Object per tag defined in the Operation Object instances. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiTag */ export interface IApiTag { /** * The name of the tag. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiTag */ name: string; /** * A short description for the tag. 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 IApiTag */ description?: string; /** * Additional external documentation for this tag. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiExternalDocumentation} * @memberof IApiTag */ externalDocs?: IApiExternalDocumentation; } /** * A simple object to allow referencing other components in the specification, * internally and externally. * * The Reference Object is defined by JSON Reference and follows the same structure, * behavior and rules. * * For this specification, reference resolution is accomplished as defined by the JSON * Reference specification and not by the JSON Schema specification. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiReference */ export interface IApiReference { /** * The reference string. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiReference */ $ref: string; } /** * The Schema Object allows the definition of input and output data types. * These types can be objects, but also primitives and arrays. This object * is an extended subset of the JSON Schema Specification Wright Draft 00. * * For more information about the properties, see JSON Schema Core and JSON Schema * Validation. Unless stated otherwise, the property definitions follow the JSON Schema. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiSchema */ export interface IApiSchema { title?: string; multipleOf?: number; maximum?: number; exclusiveMaximum?: number; minimum?: number; exclusiveMinimum?: number; maxLength?: number; minLength?: number; pattern?: string; maxItems?: number; minItems?: number; uniqueItems?: boolean; maxProperties?: number; minProperties?: number; required?: string[]; enum?: any[]; type?: 'null' | 'boolean' | 'object' | 'array' | 'number' | 'string' | 'integer'; allOf?: (IApiSchema | IApiReference)[]; oneOf?: (IApiSchema | IApiReference)[]; anyOf?: (IApiSchema | IApiReference)[]; not?: IApiSchema | IApiReference; items?: IApiSchema | IApiReference; properties?: { [key: string]: IApiSchema | IApiReference; }; additionalProperties?: boolean | (IApiSchema | IApiReference); description?: string; format?: string; default?: any; /** * Allows sending a null value for the defined schema. Default value is false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiSchema */ nullable?: boolean; /** * Adds support for polymorphism. The discriminator is an object name that is used * to differentiate between other schemas which may satisfy the payload description. * See Composition and Inheritance for more details. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiSchema */ discriminator?: IApiDiscriminator; /** * Relevant only for Schema "properties" definitions. Declares the property as "read only". * This means that it MAY be sent as part of a response but SHOULD NOT be sent as part of * the request. If the property is marked as readOnly being true and is in the required list, * the required will take effect on the response only. A property MUST NOT be marked as both * readOnly and writeOnly being true. Default value is false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiSchema */ readOnly?: boolean; /** * Relevant only for Schema "properties" definitions. Declares the property as "write only". * Therefore, it MAY be sent as part of a request but SHOULD NOT be sent as part of the response. * If the property is marked as writeOnly being true and is in the required list, the required * will take effect on the request only. A property MUST NOT be marked as both readOnly and * writeOnly being true. Default value is false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiSchema */ writeOnly?: boolean; /** * This MAY be used only on properties schemas. It has no effect on root schemas. Adds * additional metadata to describe the XML representation of this property. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiXML} * @memberof IApiSchema */ xml?: IApiXML; /** * Additional external documentation for this schema. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiExternalDocumentation} * @memberof IApiSchema */ externalDocs?: IApiExternalDocumentation; /** * A free-form property to include an example of an instance for this schema. To represent * examples that cannot be naturally represented in JSON or YAML, a string value can be used * to contain the example with escaping where necessary. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {*} * @memberof IApiSchema */ example?: any; /** * Specifies that a schema 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 IApiSchema */ deprecated?: boolean; } /** * When request bodies or response payloads may be one of a number of different schemas, * a discriminator object can be used to aid in serialization, deserialization, and * validation. The discriminator is a specific object in a schema which is used to inform * the consumer of the specification of an alternative schema based on the value * associated with it. * * When using the discriminator, inline schemas will not be considered. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiDiscriminator */ export interface IApiDiscriminator { /** * The name of the property in the payload that will hold the discriminator value. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiDiscriminator */ propertyName: string; /** * An object to hold mappings between payload values and schema names or references. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {{ * [key: string]: string; * }} * @memberof IApiDiscriminator */ mapping?: { [key: string]: string; }; } /** * A metadata object that allows for more fine-tuned XML model definitions. * * When using arrays, XML element names are not inferred (for singular/plural forms) and * the name property SHOULD be used to add that information. See examples for expected behavior. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiXML */ export interface IApiXML { /** * Replaces the name of the element/attribute used for the described schema property. * When defined within items, it will affect the name of the individual XML elements * within the list. When defined alongside type being array (outside the items), it * will affect the wrapping element and only if wrapped is true. If wrapped is false, * it will be ignored. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiXML */ name?: string; /** * The URI of the namespace definition. Value MUST be in the form of an absolute URI. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiXML */ namespace?: string; /** * The prefix to be used for the name. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiXML */ prefix?: string; /** * Declares whether the property definition translates to an attribute instead of an * element. Default value is false. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiXML */ attribute?: boolean; /** * MAY be used only for an array definition. Signifies whether the array is wrapped * (for example, ) or unwrapped (). Default * value is false. The definition takes effect only when defined alongside type being * array (outside the items). * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {boolean} * @memberof IApiXML */ wrapped?: boolean; } export interface IApiAbstractSecurityScheme { /** * The type of the security scheme. Valid values are "apiKey", "http", "oauth2", * "openIdConnect". * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {('apiKey'|'http'|'oauth2'|'openIdConnect')} * @memberof IApiAbstractSecurityScheme */ type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect'; /** * A short description for security scheme. 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 IApiAbstractSecurityScheme */ description?: string; } export interface IApiApiKeySecurityScheme extends IApiAbstractSecurityScheme { type: 'apiKey'; /** * The name of the header, query or cookie parameter to be used. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiApiKeySecurityScheme */ name: string; /** * The location of the API key. Valid values are "query", "header" or "cookie". * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {('query'|'header'|'cookie')} * @memberof IApiApiKeySecurityScheme */ in: 'query' | 'header' | 'cookie'; } export interface IApiHttpSecurityScheme extends IApiAbstractSecurityScheme { type: 'http'; /** * The name of the HTTP Authorization scheme to be used in the Authorization * header as defined in RFC7235. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiHttpSecurityScheme */ scheme: string; /** * A hint to the client to identify how the bearer token is formatted. Bearer * tokens are usually generated by an authorization server, so this information * is primarily for documentation purposes. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiHttpSecurityScheme */ bearerFormat?: string; } export interface IApiOAuth2SecurityScheme extends IApiAbstractSecurityScheme { type: 'oauth2'; /** * An object containing configuration information for the flow types supported. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOAuthFlows} * @memberof IApiOAuth2SecurityScheme */ flows: IApiOAuthFlows; } export interface IApiOpenIdConnectSecurityScheme extends IApiAbstractSecurityScheme { type: 'openIdConnect'; /** * OpenId Connect URL to discover OAuth2 configuration values. This MUST be * in the form of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiOpenIdConnectSecurityScheme */ openIdConnectUrl: string; } /** * Defines a security scheme that can be used by the operations. Supported schemes * are HTTP authentication, an API key (either as a header, a cookie parameter or as * a query parameter), OAuth2's common flows (implicit, password, application and access * code) as defined in RFC6749, and OpenID Connect Discovery. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export */ export type IApiSecurityScheme = IApiApiKeySecurityScheme | IApiHttpSecurityScheme | IApiOAuth2SecurityScheme | IApiOpenIdConnectSecurityScheme; /** * Allows configuration of the supported OAuth Flows. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiOAuthFlows */ export interface IApiOAuthFlows { /** * Configuration for the OAuth Implicit flow * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOAuthFlow} * @memberof IApiOAuthFlows */ implicit?: IApiImplicitOAuthFlow; /** * Configuration for the OAuth Resource Owner Password flow * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOAuthFlow} * @memberof IApiOAuthFlows */ password?: IApiPasswordOAuthFlow; /** * Configuration for the OAuth Client Credentials flow. Previously called * application in OpenAPI 2.0. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOAuthFlow} * @memberof IApiOAuthFlows */ clientCredentials?: IApiClientCredentialsOAuthFlow; /** * Configuration for the OAuth Authorization Code flow. Previously called * accessCode in OpenAPI 2.0. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {IApiOAuthFlow} * @memberof IApiOAuthFlows */ authorizationCode?: IApiAuthorizationCodeOAuthFlow; } /** * Configuration details for a supported OAuth Flow * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiOAuthFlow */ export interface IApiOAuthFlow { /** * The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiOAuthFlow */ refreshUrl?: string; /** * The available scopes for the OAuth2 security scheme. A map between the scope * name and a short description for it. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {{ * [key: string]: string; * }} * @memberof IApiOAuthFlow */ scopes: { [key: string]: string; }; } export interface IApiImplicitOAuthFlow extends IApiOAuthFlow { /** * The authorization URL to be used for this flow. This MUST be in the form of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiImplicitOAuthFlow */ authorizationUrl?: string; } export interface IApiPasswordOAuthFlow extends IApiOAuthFlow { /** * The token URL to be used for this flow. This MUST be in the form of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiPasswordOAuthFlow */ tokenUrl?: string; } export interface IApiClientCredentialsOAuthFlow extends IApiOAuthFlow { /** * The token URL to be used for this flow. This MUST be in the form of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiClientCredentialsOAuthFlow */ tokenUrl?: string; } export interface IApiAuthorizationCodeOAuthFlow extends IApiOAuthFlow { /** * The authorization URL to be used for this flow. This MUST be in the form of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiAuthorizationCodeOAuthFlow */ authorizationUrl?: string; /** * The token URL to be used for this flow. This MUST be in the form of a URL. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string} * @memberof IApiOAuthFlow */ tokenUrl?: string; } /** * Lists the required security schemes to execute this operation. The name used * for each property MUST correspond to a security scheme declared in the Security * Schemes under the Components Object. * * Security Requirement Objects that contain multiple schemes require that all schemes * MUST be satisfied for a request to be authorized. This enables support for scenarios * where multiple query parameters or HTTP headers are required to convey security information. * * When a list of Security Requirement Objects is defined on the OpenAPI Object or * Operation Object, only one of the Security Requirement Objects in the list needs to * be satisfied to authorize the request. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @export * @interface IApiSecurityRequirement */ export interface IApiSecurityRequirement { /** * Each name MUST correspond to a security scheme which is declared in the Security * Schemes under the Components Object. If the security scheme is of type "oauth2" or * "openIdConnect", then the value is a list of scope names required for the execution. * For other security scheme types, the array MUST be empty. * * Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md * * @type {string[]} * @memberof IApiSecurityRequirement */ [name: string]: string[]; }