254    "serialize": \make_yaml(),
 
  255    "serialize_verbose": 
string sub (
auto val) {
return make_yaml(val, BlockStyle);},
 
  256    "deserialize": \parse_yaml(),
 
  264        "serialize": \make_json(),
 
  265        "serialize_verbose": 
string sub (
auto val) {
return make_json(val, JGF_ADD_FORMATTING);},
 
  266        "deserialize": \parse_json(),
 
  279        "serialize": \make_xml(),
 
  280        "serialize_verbose": 
string sub (
auto val) {
return make_xml(val, XGF_ADD_FORMATTING);},
 
  281        "deserialize": \parse_xml(),
 
  285    # Content-Type: application/x-www-form-urlencoded
 
  286    MimeTypeFormUrlEncoded: (
 
  287        "serialize": \mime_get_form_urlencoded_string(),
 
  288        "serialize_verbose": \mime_get_form_urlencoded_string(),
 
  289        "deserialize": \mime_parse_form_urlencoded_string(),
 
  291    # Content-Type: multipart/form-data (handled manually)
 
  292    MimeTypeMultipartFormData: {},
 
  376        hash<string, bool> 
enum;
 
  399    private check(
bool serialize, 
bool request, 
string type, *
string format, *
SchemaObject items, 
string path,
 
  400            string method, 
string name, reference<auto> value) {
 
  402        if (type == 
'array');
 
  404            checkIntern(serialize, request, type, format, path, method, name, value, \value);
 
  409     checkStringIntern(
string path, 
string method, 
string name, 
string value);
 
  413    private checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method,
 
  414            string name, list<auto> v, reference<list> value) {
 
  415        if (type != 
"list" && type != 
"any")
 
  416            throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an array (%y), but " 
  417                "the expected type is %y", name, path, method, v, type);
 
  420    private checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method,
 
  421            string name, hash<auto> v, reference<hash> value) {
 
  422        if (type != 
"file" && type != 
"any")
 
  423            throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an object (%y), but " 
  424                "the expected type is %y", name, path, method, v, type);
 
  427    private checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method,
 
  428            string name, 
int v, reference<auto> value) {
 
  430        if (type == 
'number');
 
  432        if (type != 
"integer" && type != 
"any")
 
  440        if (
enum && !
enum{value})
 
  441            throw "SCHEMA-VALIDATION-ERROR",
 
  442                sprintf(
"Parameter %y for path %y and method %y does not fit the enumerated values (enum: %y, actual: %d)",
 
  443                    name, path, method, keys 
enum, value);
 
  447     checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method, 
string name, number v, reference<number> value);
 
  452     checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method, 
string name, 
float v, reference<number> value);
 
  457     checkInternNumber(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method, 
string name, 
auto v, reference<auto> value);
 
  462    private checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method,
 
  463            string name, binary v, reference value) {
 
  464        if (type != 
"string" && type != 
"any")
 
  472    private checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method,
 
  473            string name, 
string v, reference<auto> value) {
 
  474        if (type != 
'string' && type != 
'any');
 
  484     checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method, 
string name, date v, reference value);
 
  489     checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method, 
string name, 
bool v, reference<bool> value);
 
  494     checkIntern(
bool serialize, 
bool request, 
string type, *
string format, 
string path, 
string method, 
string name, nothing v, reference<nothing> value);
 
  500            reference<softlist<auto>> value) {
 
  502            throw "SCHEMA-VALIDATION-ERROR",
 
  503                sprintf(
"Parameter %y for path %y and method %y has too many items (maxItems: %d, actual: %d)",
 
  504                    name, path, method, 
maxItems, value.size());
 
  506            throw "SCHEMA-VALIDATION-ERROR",
 
  507                sprintf(
"Parameter %y for path %y and method %y has too few items (minItems: %d, actual: %d)",
 
  508                    name, path, method, 
minItems, value.size());
 
  515            foreach auto val in (\value) {
 
  516                items.
check(serialize, request, path, method, name, \val);
 
  518                    throw "SCHEMA-VALIDATION-ERROR",
 
  519                        sprintf(
"%s %s: Array parameter %y does not have unique items",
 
  726        hash<string, hash<string, SchemaObject>> 
so_map;
 
  753    constructor(
string schema_source, hash<auto> oh, *hash<auto> opts) ;
 
  774            AbstractRestSchemaValidator(logger);
 
  847    private hash<RestSchemaValidator::RestRequestClientInfo> 
processRequestImpl(
string method, 
string path, 
auto body,
 
  848            *hash<auto> headers, *softlist<string> content_types) {
 
  864    private hash<RestSchemaValidator::RestRequestServerInfo> 
parseRequestImpl(
string method, 
string path,
 
  865            *data http_body, reference<hash> headers) {
 
  868        if (exists http_body);
 
  878        hash<UriQueryInfo> h = parse_uri_query(path);
 
  879        method = method.lwr();
 
  883        op.parseRequest(pio, \h, \body, \headers);
 
  884        return <RestRequestServerInfo>{
 
  887            "path_args": h.path_params,
 
  912    private hash<HttpResponseInfo> 
processResponseImpl(
string method, 
string path, 
int code, 
auto response_body,
 
  913            *hash<auto> headers, *softlist<string> content_types) {
 
  929    private hash<RestSchemaValidator::RestResponseClientInfo> 
parseResponseImpl(
string method, 
string path, 
int code,
 
  930            *data response_body, hash<auto> hdr) {
 
  934        method = method.lwr();
 
  938        hash<RestResponseClientInfo> rv((
 
  943        *
string content = hdr.
"content-type" ?? hdr.
"Content-Type";
 
  946        if (exists response_body && content);
 
  949        hash<string, bool> mime_types;
 
  950        op.validateResponse(method, path, pio, code, \rv.
body, \mime_types, False);
 
  952        if (content && !mime_types{content})
 
  953            throw "DESERIALIZATION-ERROR", sprintf(
"%s %s: content type %y is not accepted by this operation; " 
  954                "accepted content types: %y", method.upr(), path, content, keys mime_types);
 
 1010            *softlist<string> content_types) {
 
 1014        method = method.lwr();
 
 1019        hash<RestExampleRequestInfo> rv = op.getExampleRequest(method, path, pio, self, \body);
 
 1047            *softlist<string> content_types) {
 
 1051        method = method.lwr();
 
 1056        hash<RestExampleResponseInfo> rv = op.getExampleResponse(method, path, code, \body);
 
 1121        hash<UriQueryInfo> h = parse_uri_query(path);
 
 1124        method = method.lwr();
 
 1129        hash<string, bool> mime_types;
 
 1132        hash<RestRequestClientInfo> rv((
 
 1133            "uri_path": h.method,
 
 1150        if (!exists content_types);
 
 1153        foreach string content in (content_types);
 
 1162            throw "SERIALIZATION-ERROR", sprintf(
"%s %s: message body cannot be serialized; requested MIME type(s): " 
 1163                "%y; available MIME types: %y; available serialization modules: %y", method.upr(), path,
 
 1190            auto response_body, *hash<auto> headers, *softlist<string> content_types, 
bool compact_serialization) {
 
 1192        method = method.lwr();
 
 1197        hash<string, bool> mime_types;
 
 1198        op.validateResponse(method, path, pio, code, \response_body, \mime_types);
 
 1200        hash<HttpResponseInfo> rv((
 
 1205        if (exists response_body);
 
 1221            *hash<auto> headers) {
 
 1223        if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
 
 1227        *list<string> ct = map $1, keys headers, $1 ==1i;
 
 1230        if (ct && ct.size() == 1 && !
MimeDataTypes{headers{ct[0]}});
 
 1245            *hash<auto> headers) {
 
 1247        if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
 
 1251        *list<string> ct = map $1, keys headers, $1 ==1i;
 
 1254        if (ct && ct.size() == 1);
 
 1268            hash<string, bool> mime_types, *list<auto> content_types) {
 
 1270        if (body.typeCode() != NT_STRING)
 
 1274        if (!mime_types.
"text/plain")
 
 1281        resp.hdr.
"Content-Type" = 
"text/plain";
 
 1403     constructor(
string full_path, list<auto> l, 
int offset, hash<auto> oh);
 
 1579        bool deprec = False;
 
 1680            reference<hash> headers, *reference<hash<string, bool>> mime_types) {
 
 1682        foreach string key in (keys h.params);
 
 1686        foreach string key in (keys headers);
 
 1693                body_po.
check(serialize, True, path, method, 
"body", \body);
 
 1694            } 
else if (formData) {
 
 1695                foreach hash<auto> i in (formData.pairIterator()) {
 
 1696                    i.value.check(serialize, True, path, method, 
"formData." + i.key, \body{i.key});
 
 1699                error(
"SCHEMA-VALIDATION-ERROR", 
"No message body is accepted; body keys passed: %y", keys body);
 
 1704        foreach string param in (path =~ x/{([^}]+)}/g);
 
 1731            reference<hash<string, bool>> mime_types, 
bool deserialize = True) {
 
 1734 else if (exists res && exists response_body);
 
 1764        hash<RestExampleRequestInfo> rv();
 
 1769        getQoreExampleParams(\query, \rv.hdr, parameters);
 
 1770        getQoreExampleParams(\query, \rv.hdr, pio.
parameters, parameters);
 
 1772        rv.request_uri = sprintf(
"%s %s HTTP/1.1", method.upr(),
 
 1773            make_uri_query(cast<hash<UriQueryInfo>>({
"method": path, 
"params": query})));
 
 1778            rbody = body_po.getExampleValue();
 
 1803    hash<RestExampleResponseInfo> 
getExampleResponse(
string method, 
string path, 
int code, reference<auto> body);
 
 1806    private getQoreExampleParams(reference<hash<auto>> query, reference<hash<auto>> headers,
 
 1807            hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
 
 1808        foreach hash<auto> ph in (parameters.pairIterator());
 
 1813    private doDefaultParams(reference<hash<UriQueryInfo>> h, reference<hash> headers, reference<auto> body,
 
 1814            hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
 
 1815        foreach hash<auto> ph in (parameters.pairIterator());
 
 1821            hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
 
 1822        foreach hash<auto> ph in (parameters.pairIterator());
 
 1931        const OtherParameterMap = ...;
 
 1948    abstract 
check(
bool serialize, 
bool request, 
string path, 
string method, 
string name, reference value);
 
 1977    check(
bool serialize, 
bool request, 
string path, 
string method, 
string name, reference value);
 
 1985    auto getExampleValue();
 
 2065    check(
bool serialize, 
bool request, 
string path, 
string method, 
string name, reference<auto> value);
 
 2111    constructor(
string path, 
string method, hash<auto> oh, SwaggerSchema swagger) ;
 
 2397     constructor(
string name, hash<auto> oh, SwaggerSchema swagger, *
string hash_str)
 
 2402    string getQoreExample(reference<hash<RestQoreExampleCodeInfo>> rv, 
string name, 
bool decl);
 
 2410    check(
bool serialize, 
bool request, 
string path, 
string method, 
string name, reference<auto> value);
 
 2414     checkObjectProperty(
string name, 
string prop);
 
 2420            string name, hash<auto> v, reference<hash<auto>> value) {
 
 2421        if (
type != 
"object" && 
type != 
"any")
 
 2422            throwInvalidType(
name, 
"object", 
type, v);
 
 2425        map $1.checkIntern(serialize, request, 
type, NOTHING, path, method, 
name, v, \value), 
allOf;
 
 2437        foreach string prop in (keys 
required);
 
 2667    const SwaggerListToStringSet = -1;
 
 2669    const SwaggerListToAnySet = -2;
 
 2670    const SwaggerListToHashOfStrings = -3;
 
 2672    const TypeMap = ...;
 
 2686    required_field(
string objType, hash<auto> oh, 
string name, 
int typeCode, reference<auto> target);
 
 2700    required_field(
string objType, hash<auto> oh, 
string name, hash<string, bool> typeCodes, reference<auto> target);
 
 2715    bool optional_field(
string objType, hash<auto> oh, 
string name, 
int typeCode, reference<auto> target);
 
 2730    bool optional_field(
string objType, hash<auto> oh, 
string name, hash<string, bool> typeCodes,
 
 2731            reference<auto> target) {
 
 2732        if (!oh.hasKey(name))
 
 2734        auto val = oh{name};
 
 2735        if (!typeCodes{val.typeCode()})
 
 2736            throw "INVALID-FIELD-TYPE", 
sprintf(
"%s Object%s: %y field has invalid type %y", objType,
 
 2737                oh.name ? 
sprintf(
" %y", oh.name) : 
"", name, val.type());
 
 2738        get_value(objType, name, val.typeCode(), val, \target);
 
 2743    check_type_code(
string objType, hash<auto> oh, 
string name, 
auto val, 
int typeCode);
 
 2747    get_value(
string objType, 
string name, 
int typeCode, 
auto val, reference<auto> target);
 
 2751    string get_qore_type(
string name, 
string type, *
string format, *
SchemaObject items);
 
Describes a single operation parameter.
Definition: Swagger.qm.dox.h:1899
 
constructor(hash< auto > oh)
Constructor.
 
static AbstractParameterObject newParameter(string name, hash< auto > oh, SwaggerSchema swagger)
gets a concrete instance of an AbstractParameterObject
 
abstract check(bool serialize, bool request, string path, string method, string name, reference value)
verifies the parameter in an actual REST API call
 
string name
Required. The name of the parameter. Parameter names are case sensitive.
Definition: Swagger.qm.dox.h:1910
 
auto getDefaultValue()
returns the default value of the parameter (default: NOTHING)
 
string inLoc
Required. The location of the parameter.
Definition: Swagger.qm.dox.h:1917
 
*string desc
A brief description of the parameter. This could contain examples of use. GFM syntax can be used for ...
Definition: Swagger.qm.dox.h:1920
 
bool required
Determines whether this parameter is mandatory.
Definition: Swagger.qm.dox.h:1928
 
AbstractParameterObject specialization for "body" parameters.
Definition: Swagger.qm.dox.h:1959
 
string getQoreExample(reference< hash< RestQoreExampleCodeInfo > > rv)
generates Qore example code for a REST API call
 
SchemaObject schema
Required. The schema defining the type used for the body parameter.
Definition: Swagger.qm.dox.h:1963
 
check(bool serialize, bool request, string path, string method, string name, reference value)
verifies the parameter in an actual REST API call
 
constructor(hash< auto > oh, SwaggerSchema swagger)
Constructor.
 
Allows referencing an external resource for extended documentation.
Definition: Swagger.qm.dox.h:1842
 
string url
Required. The URL for the target documentation. Value MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1849
 
*string desc
A short description of the target documentation. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1846
 
constructor(hash< auto > oh)
Constructor.
 
AbstractParameterObject specialization for parameters other than "body".
Definition: Swagger.qm.dox.h:1990
 
const ParameterTypes
valid parameter types
Definition: Swagger.qm.dox.h:2046
 
check(bool serialize, bool request, string path, string method, string name, reference< auto > value)
validates the value against the schema definition
 
*string collectionFormat
Determines the format of the array if type array is used.
Definition: Swagger.qm.dox.h:2033
 
auto getExampleValue()
returns an example value of the parameter (default: NOTHING)
 
static checkValueType(reference< auto > value, string type, *SchemaObject items, *string loc)
validates default values
 
*string format
The extending format for the previously mentioned type. See Data Type Formats for further details.
Definition: Swagger.qm.dox.h:2006
 
bool allowEmptyValue
Sets the ability to pass empty-valued parameters.
Definition: Swagger.qm.dox.h:2014
 
auto defaultVal
Declares the value of the parameter that the server will use if none is provided.
Definition: Swagger.qm.dox.h:2043
 
string type
Required. The type of the parameter.
Definition: Swagger.qm.dox.h:2003
 
auto getDefaultValue()
returns the default value of the parameter (default: NOTHING)
 
constructor(string name, hash< auto > oh, SwaggerSchema swagger)
Constructor.
 
*ParameterItemsSchemaObject items
Required if type is "array". Describes the type of items in the array.
Definition: Swagger.qm.dox.h:2017
 
items schema object for non-body parameters
Definition: Swagger.qm.dox.h:2469
 
static ParameterItemsSchemaObject newSchemaObject(string name, auto error, SwaggerSchema swagger)
throws an "INVALID-FIELD-TYPE" exception
 
*string collectionFormat
Determines the format of the array if type array is used.
Definition: Swagger.qm.dox.h:2486
 
constructor(string name, hash< auto > oh, SwaggerSchema swagger)
private constructor; use newSchemaObject() instead
 
static ParameterItemsSchemaObject newSchemaObject(string name, hash< auto > oh, SwaggerSchema swagger)
returns a SchemaObject for the schema definition; resolves references
 
Describes a single response from an API Operation.
Definition: Swagger.qm.dox.h:2116
 
hash< auto > headers
A hash of headers that are (can be) sent with the response.
Definition: Swagger.qm.dox.h:2135
 
constructor(string key, hash< auto > oh, SwaggerSchema swagger)
private constructor; use newResponse() instead
 
*SchemaObject schema
A definition of the response structure.
Definition: Swagger.qm.dox.h:2129
 
static ResponseObject newResponse(string key, hash< auto > oh, SwaggerSchema swagger)
returns a new ResponseObject corresponding to the schema definition passed
 
string desc
Required. A short description of the response. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:2120
 
hash examples
A hash of example response messages.
Definition: Swagger.qm.dox.h:2145
 
contains the possible responses for an operation
Definition: Swagger.qm.dox.h:2084
 
hash< string, ResponseObject > responses
Definition: Swagger.qm.dox.h:2098
 
ResponseObject defaultResp
Definition: Swagger.qm.dox.h:2091
 
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
 
defines an object in a schema
Definition: Swagger.qm.dox.h:2259
 
check(bool serialize, bool request, string path, string method, string name, reference< auto > value)
validates the value against the schema definition
 
const ReferenceTypes
valid reference types
Definition: Swagger.qm.dox.h:2381
 
static SchemaObject newSchemaObject(string name, auto error, SwaggerSchema swagger)
throws an "INVALID-FIELD-TYPE" exception
 
string name
the name of this object for documentation and example purposes
Definition: Swagger.qm.dox.h:2263
 
constructor(string name, hash< auto > oh, SwaggerSchema swagger, *string hash_str) public auto getExampleValue()
private constructor; use newSchemaObject() instead
 
auto additionalProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.4.
Definition: Swagger.qm.dox.h:2310
 
*int maxProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.1.
Definition: Swagger.qm.dox.h:2288
 
list< SchemaObject > allOf()
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.3.
 
*string format
The extending format for the previously mentioned type. See Data Type Formats for further details.
Definition: Swagger.qm.dox.h:2273
 
bool nullable
extension that allows types to be nullable
Definition: Swagger.qm.dox.h:2296
 
*string discriminator
Adds support for polymorphism.
Definition: Swagger.qm.dox.h:2337
 
const ScalarTypes
valid scalar types
Definition: Swagger.qm.dox.h:2377
 
hash< string, bool > required
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.3.
Definition: Swagger.qm.dox.h:2316
 
*int minProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.2.
Definition: Swagger.qm.dox.h:2291
 
auto defaultVal
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2.
Definition: Swagger.qm.dox.h:2285
 
private checkIntern(bool serialize, bool request, string type, *string format, string path, string method, string name, hash< auto > v, reference< hash< auto > > value)
validates a schema object against a value
Definition: Swagger.qm.dox.h:2419
 
static checkValueType(reference< auto > value, string type, *SchemaObject items, *string loc)
validates default values
 
string type
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.2.
Definition: Swagger.qm.dox.h:2270
 
hash< string, SchemaObject > properties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.4.
Definition: Swagger.qm.dox.h:2303
 
*ExternalDocumentationObject externalDocs
Additional external documentation for this schema.
Definition: Swagger.qm.dox.h:2371
 
*XmlObject xml
This MAY be used only on properties schemas. It has no effect on root schemas.
Definition: Swagger.qm.dox.h:2368
 
bool readOnly
Relevant only for Schema "properties" definitions. Declares the property as "read only".
Definition: Swagger.qm.dox.h:2347
 
*SchemaObject items
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.1.
Definition: Swagger.qm.dox.h:2282
 
*string title
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2276
 
auto example
A free-form property to include an example of an instance for this schema.
Definition: Swagger.qm.dox.h:2374
 
static SchemaObject newSchemaObject(string name, hash< auto > oh, SwaggerSchema swagger)
returns a SchemaObject for the schema definition; resolves references
 
*string desc
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2279
 
Lists the available scopes for an OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2644
 
hash< string, string > fields
Maps between a name of a scope to a short description of it (as the value of the property).
Definition: Swagger.qm.dox.h:2651
 
constructor(hash< auto > oh)
Constructor.
 
Allows the definition of a security scheme that can be used by the operations.
Definition: Swagger.qm.dox.h:2578
 
constructor(hash< auto > oh)
Constructor.
 
string type
Required. The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
Definition: Swagger.qm.dox.h:2582
 
*string desc
A short description for security scheme.
Definition: Swagger.qm.dox.h:2585
 
*string authorizationUrl
The authorization URL to be used for this flow. This SHOULD be in the form of a URL.
Definition: Swagger.qm.dox.h:2611
 
*ScopesObject scopes
The available scopes for the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2627
 
*string inLoc
The location of the API key. Valid values are "query" or "header".
Definition: Swagger.qm.dox.h:2597
 
*string name
The name of the header or query parameter to be used.
Definition: Swagger.qm.dox.h:2591
 
*string flow
The flow used by the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2605
 
*string tokenUrl
The token URL to be used for this flow. This SHOULD be in the form of a URL.
Definition: Swagger.qm.dox.h:2617
 
The object provides metadata about the API. The metadata can be used by the clients if needed,...
Definition: Swagger.qm.dox.h:1293
 
string version
Required. Provides the version of the application API (not to be confused with the specification vers...
Definition: Swagger.qm.dox.h:1306
 
constructor(hash< auto > oh)
Constructor.
 
string title
Required. The title of the application.
Definition: Swagger.qm.dox.h:1297
 
*LicenseObject license
The license information for the exposed API.
Definition: Swagger.qm.dox.h:1312
 
*ContactObject contact
The contact information for the exposed API.
Definition: Swagger.qm.dox.h:1309
 
*string termsOfService
The Terms of Service for the API.
Definition: Swagger.qm.dox.h:1303
 
*string desc
A short description of the application. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1300
 
License information for the exposed API.
Definition: Swagger.qm.dox.h:1349
 
constructor(hash< auto > oh)
Constructor.
 
string name
Required. The license name used for the API.
Definition: Swagger.qm.dox.h:1353
 
*string url
A URL to the license used for the API. MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1356
 
Base class for the Swagger specification objects, wrapping the vendor extensions.
Definition: Swagger.qm.dox.h:306
 
initialize(hash< auto > oh)
Initialize.
 
hash< auto > vendorExtensions
Allows extensions to the Swagger Schema.
Definition: Swagger.qm.dox.h:314
 
constructor(ObjectBase other)
copy constructor
 
constructor(hash< auto > oh)
Constructor.
 
constructor()
Constructor.
 
Describes a single API operation on a path.
Definition: Swagger.qm.dox.h:1553
 
list< string > schemes
The transfer protocol for the operation.
Definition: Swagger.qm.dox.h:1634
 
*string desc
A verbose explanation of the operation behavior. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1572
 
hash< string, bool > produces
A hash of MIME types (strings) the operation can produce.
Definition: Swagger.qm.dox.h:1607
 
*ExternalDocumentationObject externalDocs
Additional external documentation for this operation.
Definition: Swagger.qm.dox.h:1582
 
string path
the URI path for the operation
Definition: Swagger.qm.dox.h:1557
 
*string summary
A short summary of what the operation does.
Definition: Swagger.qm.dox.h:1569
 
hash< string, AbstractParameterObject > parameters()
A hash of parameters that are applicable for this operation.
 
string method
the HTTP method for the operation
Definition: Swagger.qm.dox.h:1560
 
AbstractParameterObject body
body parameter; if defined for this operation, formData parameter will be excluded
Definition: Swagger.qm.dox.h:1621
 
*data getRequestBody(PathItemObject pio, auto body, reference< hash< auto > > headers)
Processes a generated request.
 
validateRequest(bool serialize, PathItemObject pio, reference< hash< UriQueryInfo > > h, reference< auto > body, reference< hash > headers, *reference< hash< string, bool > > mime_types)
processes a REST API client-side request to the operation
Definition: Swagger.qm.dox.h:1679
 
ResponsesObject responses
Required. The list of possible responses as they are returned from executing this operation.
Definition: Swagger.qm.dox.h:1627
 
list tags
A list of tags (strings or TagObjects) for API documentation control.
Definition: Swagger.qm.dox.h:1566
 
*string operationId
Unique string used to identify the operation.
Definition: Swagger.qm.dox.h:1591
 
hash< string, AbstractParameterObject > formData
formData parameter; if defined for this operation, body parameter will be excluded
Definition: Swagger.qm.dox.h:1624
 
list< hash< string, list< string > > > security
A declaration of which security schemes are applied for this operation.
Definition: Swagger.qm.dox.h:1649
 
hash< string, bool > consumes
A list of MIME types (strings) the operation can consume.
Definition: Swagger.qm.dox.h:1599
 
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
 
Holds the relative paths to the individual endpoints.
Definition: Swagger.qm.dox.h:1376
 
constructor(hash< auto > oh, string pfx, SwaggerSchema swagger)
creates the object
 
constructor(string full_path, list< auto > l, int offset, hash< auto > oh)
private constructor
 
add(string full_path, list< auto > l, int offset, hash< auto > oh, SwaggerSchema swagger)
adds a component or a Path Item Object to the tree
 
hash< string, PathComponent > paths
hash of non-wildcard paths to the next level
Definition: Swagger.qm.dox.h:1393
 
PathItemObject match(list< auto > path)
returns either a PathItemObject for the path
 
getPathOperationHash(reference< hash< string, list< string > > > h)
returns a hash of URI paths as keys with values as lists of supported HTTP methods
 
*PathItemObject tryMatch(list< auto > path)
returns either a PathItemObject for the path
 
string name
current component name
Definition: Swagger.qm.dox.h:1384
 
*PathComponent wildcard
if there is a wildcard to a PathComponent
Definition: Swagger.qm.dox.h:1387
 
string pfx
path prefix
Definition: Swagger.qm.dox.h:1381
 
*PathItemObject pio
the PathItemObject associated with this path (if any)
Definition: Swagger.qm.dox.h:1390
 
Describes the operations available on a single path.
Definition: Swagger.qm.dox.h:1479
 
hash< string, AbstractParameterObject > parameters()
A hash of parameters that are applicable for all the operations described under this path.
 
softlist getMethods()
returns a list of HTTP methods supported by this object
 
*string ref
Allows for an external definition of this path item.
Definition: Swagger.qm.dox.h:1488
 
hash< string, OperationObject > operations
A hash of OperationObjects correspoding to different methods.
Definition: Swagger.qm.dox.h:1517
 
OperationObject getOperation(string method, string path)
returns the operation object for the given method
 
AbstractParameterObject body
The body parameter, if defined for this path.
Definition: Swagger.qm.dox.h:1503
 
constructor(string path, hash< auto > oh, SwaggerSchema swagger)
Constructor.
 
This class stores the path tree for URI path matching.
Definition: Swagger.qm.dox.h:1433
 
*PathItemObject tryMatch(string path)
matches a URI path with a PathItemObject
 
PathItemObject match(string path)
matches a URI path with a PathItemObject
 
constructor(hash< auto > oh, SwaggerSchema swagger)
Constructor.
 
PathComponent paths
the tree of path components for path matching with wildcards
Definition: Swagger.qm.dox.h:1438
 
hash< string, list< string > > getPathOperationHash()
returns a hash of URI paths as keys with values as lists of supported HTTP methods
 
Base used by OtherParameter, HeaderObject and SchemaObject.
Definition: Swagger.qm.dox.h:339
 
private checkIntern(bool serialize, bool request, string type, *string format, string path, string method, string name, string v, reference< auto > value)
validates string values
Definition: Swagger.qm.dox.h:472
 
*bool exclusiveMin
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
Definition: Swagger.qm.dox.h:352
 
auto getExampleValue(string type, *string format)
returns an example value for the given type
 
*int minItems
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.3.
Definition: Swagger.qm.dox.h:367
 
*float multipleOf
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.1.
Definition: Swagger.qm.dox.h:379
 
private check(bool serialize, bool request, string type, *string format, *SchemaObject items, string path, string method, string name, reference< auto > value)
validates the value against the schema definition
Definition: Swagger.qm.dox.h:399
 
constructor(string objType, hash< auto > oh)
Constructor.
 
*int maxItems
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.2.
Definition: Swagger.qm.dox.h:364
 
*int minLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.2.
Definition: Swagger.qm.dox.h:358
 
static throwInvalidType(string name, string actual, string expected, auto value)
throws an SCHEMA-VALIDATION-ERROR exception
 
*float maximum
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.2.
Definition: Swagger.qm.dox.h:343
 
constructor(SchemaBase other)
Copy constructor.
 
private checkArrayParam(bool serialize, bool request, SchemaObject items, string path, string method, string name, reference< softlist< auto > > value)
validates the value against the schema definition
Definition: Swagger.qm.dox.h:499
 
private checkIntern(bool serialize, bool request, string type, *string format, string path, string method, string name, binary v, reference value)
converts binary values to strings for supported formats
Definition: Swagger.qm.dox.h:462
 
*int maxLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.1.
Definition: Swagger.qm.dox.h:355
 
checkIntern(bool serialize, bool request, string type, *string format, string path, string method, string name, date v, reference value)
converts strings to/from date/time values for supported formats
 
*bool exclusiveMax
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.2.
Definition: Swagger.qm.dox.h:349
 
*bool uniqueItems
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.4.
Definition: Swagger.qm.dox.h:370
 
static bool checkValueType(reference< auto > value, string type)
Checks the value against the type.
 
*float minimum
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
Definition: Swagger.qm.dox.h:346
 
*string pattern
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3.
Definition: Swagger.qm.dox.h:361
 
Used for loading the Swagger definitions.
Definition: Swagger.qm.dox.h:539
 
static SwaggerSchema fromUrl(string url, *bool json)
Load Swagger definition from a URL or file path.
 
static string detectSourceEncoding(string str)
tries to determine the Swagger schema source encoding automatically
 
static hash< auto > parseSchemaSource(string str, string ser)
parses the source encoding from the given string
 
static hash< auto > parseSchemaContent(string filepath, string str)
Load a schema definition from a file.
 
static SwaggerSchema fromFile(string filepath)
Load Swagger definition from a file.
 
static SwaggerSchema fromString(string swaggerSpecification, *bool json)
Load Swagger definition from a string.
 
This is the root document object for the API specification. It combines what previously was the Resou...
Definition: Swagger.qm.dox.h:598
 
hash< RestQoreExampleCodeInfo > getQoreExampleResponseImpl(string method, string path, int code)
returns example Qore code for the given response
 
private hash< RestSchemaValidator::RestExampleRequestInfo > getExampleRequestImpl(string method, string path, *softlist< string > content_types)
returns a hash of example message information for the given request
Definition: Swagger.qm.dox.h:1009
 
AbstractDataProvider getDataProviderImpl(HTTPClient rest)
returns a data provider object for this connection
 
setTimeZoneLocaleImpl(*TimeZone tz)
Allows the time zone locale to be set for serialization / deserialization.
 
internal bool checkResponseTextPlain(reference< hash< HttpResponseInfo > > resp, auto body, hash< string, bool > mime_types, *list< auto > content_types)
Check if the response body can be sent as text/plain and if so, modify the response hash.
Definition: Swagger.qm.dox.h:1267
 
internal hash< RestSchemaValidator::RestRequestClientInfo > processRequestIntern(string method, string path, auto body, *hash< auto > headers, *softlist< string > content_types, bool compact_serialization)
processes a client-side REST request and returns a hash that can be used to make the outgoing client-...
Definition: Swagger.qm.dox.h:1116
 
internal hash< HttpResponseInfo > processResponseIntern(string method, string path, int code, auto response_body, *hash< auto > headers, *softlist< string > content_types, bool compact_serialization)
processes a REST response with a serialized message body, validates any response data against schema ...
Definition: Swagger.qm.dox.h:1189
 
private hash< RestSchemaValidator::RestResponseClientInfo > parseResponseImpl(string method, string path, int code, *data response_body, hash< auto > hdr)
parses and validates the response from the server and returns a hash of the processed info
Definition: Swagger.qm.dox.h:929
 
hash< string, bool > produces
A set of MIME types (strings) the APIs can produce.
Definition: Swagger.qm.dox.h:651
 
hash< RestQoreExampleCodeInfo > getQoreExampleRequestImpl(string method, string path)
returns example Qore code for the given request
 
string getTargetUrlImpl()
returns the target URL for the schema
 
private hash< RestSchemaValidator::RestRequestClientInfo > processRequestImpl(string method, string path, auto body, *hash< auto > headers, *softlist< string > content_types)
processes a client-side REST request and returns a hash that can be used to make the outgoing client-...
Definition: Swagger.qm.dox.h:847
 
setBasePathImpl(string basePath)
overrides the basePath value
 
hash< string, SchemaObject > definitions()
An object to hold data types produced and consumed by operations.
 
internal bool checkResponseContentTypeHeader(reference< hash< HttpResponseInfo > > resp, auto body, *hash< auto > headers)
Check if the headers contain a content-type header and if so, modify the response hash.
Definition: Swagger.qm.dox.h:1244
 
hash< string, hash< string, SchemaObject > > so_map
maps name -> SHA1 hash of the config -> schema objects for recursive references
Definition: Swagger.qm.dox.h:726
 
hash< string, list< string > > getPathOperationHashImpl()
returns a hash of URI paths as keys with values as lists of supported HTTP methods
 
*hash< auto > source_definition_hash
the raw parsed definitions; used for resolving out-of-order references
Definition: Swagger.qm.dox.h:732
 
*string def_path
the default path to use when retrieving external schema references
Definition: Swagger.qm.dox.h:715
 
hash< string, softlist< string > > security
A declaration of which security schemes are applied for the API as a whole.
Definition: Swagger.qm.dox.h:689
 
hash< string, ResponseObject > responses
Response definitions that can be used across operations. This property does not define global respons...
Definition: Swagger.qm.dox.h:669
 
*ExternalDocumentationObject externalDocs
Additional external documentation.
Definition: Swagger.qm.dox.h:704
 
string getBasePathImpl()
returns the base path prefix for all requests in this schema
 
ResponseObject resolveResponse(string name, string refstr, hash< auto > oh)
resolves a reference to a response
 
AbstractParameterObject resolveParameter(string name, string refstr, hash< auto > oh)
resolves a reference to a parameter
 
*code try_import
a call reference or closure to be passed a string name for external schema references
Definition: Swagger.qm.dox.h:720
 
*string basePath
The base path on which the API is served, which is relative to the host.
Definition: Swagger.qm.dox.h:629
 
constructorIntern(string schema_source, hash< auto > oh, *hash< auto > opts)
Builds the schema representation from the deserialized schema hash describing the root document objec...
 
string hash_str
the hash for the schema
Definition: Swagger.qm.dox.h:723
 
hash< string, SecuritySchemeObject > securityDefinitions
Security scheme definitions that can be used across the specification.
Definition: Swagger.qm.dox.h:675
 
ParameterItemsSchemaObject resolveParameterItemsSchemaObject(string name, string refstr, hash< auto > oh)
resolves a reference to a parameter items schema object
 
private hash< HttpResponseInfo > processResponseImpl(string method, string path, int code, auto response_body, *hash< auto > headers, *softlist< string > content_types)
processes a REST response with a serialized message body, validates any response data against schema ...
Definition: Swagger.qm.dox.h:912
 
SchemaObject processDefinition(string key, auto value)
Processes a schema definition.
 
string swaggerSpec
Swagger Specification version being used.
Definition: Swagger.qm.dox.h:606
 
SchemaObject resolveSchemaObject(string name, string refstr, hash< auto > oh)
resolves a reference to a schema object
 
*TimeZone getTimeZoneLocaleImpl()
Returns the time zone locale used for serialization / deserialization.
 
private hash< RestExampleResponseInfo > getExampleResponseImpl(string method, string path, int code, *softlist< string > content_types)
returns a hash of example message information for the given request
Definition: Swagger.qm.dox.h:1046
 
InfoObject info
Required. Provides metadata about the API. The metadata can be used by the clients if needed.
Definition: Swagger.qm.dox.h:609
 
string getHashImpl()
returns a unique hash for the schema that can be used to compare schemas
 
hash< auto > getExternalReference(string refstr)
retrieves external references
 
bool compact_serialization
if serialized data should be subject to compact serialization (default: True)
Definition: Swagger.qm.dox.h:712
 
const SwaggerOptions
SwaggerSchema options.
Definition: Swagger.qm.dox.h:707
 
fixPath(reference< string > path)
removes the base path from the beginning of the path, if present
 
constructor(string schema_source, hash< auto > oh, *hash< auto > opts)
Builds the schema representation from the deserialized schema hash describing the root document objec...
 
private hash< RestSchemaValidator::RestRequestServerInfo > parseRequestImpl(string method, string path, *data http_body, reference< hash > headers)
processes and parses a client request and returns the deserialized message body (if any)
Definition: Swagger.qm.dox.h:864
 
*string host
The host (name or IP) serving the API.
Definition: Swagger.qm.dox.h:621
 
hash< string, bool > consumes
A set of MIME types (strings) the APIs can consume.
Definition: Swagger.qm.dox.h:644
 
internal bool checkRequestContentTypeHeader(reference< hash< RestRequestClientInfo > > req, auto body, *hash< auto > headers)
Check if the headers contain a content-type header and if so, modify the request hash.
Definition: Swagger.qm.dox.h:1220
 
hash< string, bool > schemes
The transfer protocol of the API.
Definition: Swagger.qm.dox.h:637
 
PathsObject paths
Required. The available paths and operations for the API.
Definition: Swagger.qm.dox.h:612
 
list< TagObject > tags
A list of tags used by the specification with additional metadata.
Definition: Swagger.qm.dox.h:701
 
hash< string, AbstractParameterObject > parameters()
Parameter definitions that can be used across operations. This property does not define global parame...
 
Allows adding metadata to a single tag that is used by the OperationObject. It is not mandatory to ha...
Definition: Swagger.qm.dox.h:2235
 
constructor(hash< auto > oh)
Constructor.
 
*ExternalDocumentationObject externalDocs
Additional external documentation for this tag.
Definition: Swagger.qm.dox.h:2245
 
*string desc
A short description for the tag. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:2242
 
string name
Required. The name of the tag.
Definition: Swagger.qm.dox.h:2239
 
A metadata object that allows for more fine-tuned XML model definitions.
Definition: Swagger.qm.dox.h:2533
 
*string ns
The URL of the namespace definition. Value SHOULD be in the form of a URL.
Definition: Swagger.qm.dox.h:2547
 
constructor(hash< auto > oh)
Constructor.
 
*string prefix
The prefix to be used for the name.
Definition: Swagger.qm.dox.h:2550
 
bool wrapped
MAY be used only for an array definition. Signifies whether the array is wrapped (for example,...
Definition: Swagger.qm.dox.h:2560
 
*string name
Replaces the name of the element/attribute used for the described schema property.
Definition: Swagger.qm.dox.h:2544
 
bool attribute
Declares whether the property definition translates to an attribute instead of an element....
Definition: Swagger.qm.dox.h:2553
 
string sprintf(string fmt,...)
 
main namespace for all public Swagger declarations
Definition: Swagger.qm.dox.h:229
 
const CollectionFormats
allowed collection formats
Definition: Swagger.qm.dox.h:238
 
validateResponse(string method, string path, PathItemObject pio, int http_code, reference< auto > response_body, reference< hash< string, bool > > mime_types, bool deserialize=True)
validates a response against the response definition, if any
Definition: Swagger.qm.dox.h:1730
 
private doDefaultParams(reference< hash< UriQueryInfo > > h, reference< hash > headers, reference< auto > body, hash< string, AbstractParameterObject > parameters, *hash< string, AbstractParameterObject > child_params)
add default parameters
Definition: Swagger.qm.dox.h:1813
 
hash< RestQoreExampleCodeInfo > getQoreExampleResponse(string method, string path, int code)
returns example Qore code for the given response
 
const ValidNumberFormats
Valid number type formats.
Definition: Swagger.qm.dox.h:233
 
const ValidStringFormatsHash
A hash of valid string type formats.
Definition: Swagger.qm.dox.h:250
 
hash< RestSchemaValidator::RestExampleRequestInfo > getExampleRequest(string method, string path, PathItemObject pio, SwaggerSchema swagger, reference rbody)
returns a hash of example message information for the given request
Definition: Swagger.qm.dox.h:1762
 
error(string err, string fmt)
raises an exception with context information
 
const ValidNumberFormatsHash
A hash of valid number type formats.
Definition: Swagger.qm.dox.h:248
 
const ParameterCollectionFormats
valid parameter collection formats
Definition: Swagger.qm.dox.h:242
 
const SerializationModules
modules available for data serialization and/or deserialization
Definition: Swagger.qm.dox.h:296
 
hash< RestExampleResponseInfo > getExampleResponse(string method, string path, int code, reference< auto > body)
returns a hash of example message information for the given request
 
const ValidStringFormats
Valid string type formats.
Definition: Swagger.qm.dox.h:235
 
const ValidIntFormatsHash
A hash of valid integer type formats.
Definition: Swagger.qm.dox.h:246
 
const MimeDataTypes
supported mime types for de/serializing data
Definition: Swagger.qm.dox.h:261
 
const MimeContentTypes
MIME types for data serialization.
Definition: Swagger.qm.dox.h:299
 
const ValidIntFormats
Valid integer type formats.
Definition: Swagger.qm.dox.h:231
 
parseRequest(PathItemObject pio, reference< hash< UriQueryInfo > > h, reference< auto > body, reference< hash > headers)
parses and processes a REST request on the server side
 
const YamlSerialization
Yaml serialization.
Definition: Swagger.qm.dox.h:253
 
*ResponseObject getResponse(int code)
returns the ResponseObject for hthe given HTTP code or NOTHING if none is configured
 
private checkMissingParams(hash< UriQueryInfo > h, *hash< auto > headers, auto body, hash< string, AbstractParameterObject > parameters, *hash< string, AbstractParameterObject > child_params)
checks for missing params
Definition: Swagger.qm.dox.h:1820
 
hash< RestQoreExampleCodeInfo > getQoreExampleRequest(string method, string path, PathItemObject pio, SwaggerSchema swagger)
returns example Qore code for the given request
 
const ValidSchemes
Valid transfer protocol schemes.
Definition: Swagger.qm.dox.h:302