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