250 "serialize": \make_yaml(),
251 "serialize_verbose":
string sub (
auto val) {
return make_yaml(val, BlockStyle);},
252 "deserialize": \parse_yaml(),
260 "serialize": \make_json(),
261 "serialize_verbose":
string sub (
auto val) {
return make_json(val, JGF_ADD_FORMATTING);},
262 "deserialize": \parse_json(),
275 "serialize": \make_xml(),
276 "serialize_verbose":
string sub (
auto val) {
return make_xml(val, XGF_ADD_FORMATTING);},
277 "deserialize": \parse_xml(),
281 # Content-Type: application/x-www-form-urlencoded
282 MimeTypeFormUrlEncoded: (
283 "serialize": \mime_get_form_urlencoded_string(),
284 "serialize_verbose": \mime_get_form_urlencoded_string(),
285 "deserialize": \mime_parse_form_urlencoded_string(),
287 # Content-Type: multipart/form-data (handled manually)
288 MimeTypeMultipartFormData: {},
372 hash<string, bool>
enum;
395 private check(
bool serialize,
bool request,
string type, *
string format, *
SchemaObject items,
string path,
396 string method,
string name, reference<auto> value) {
398 if (type ==
'array');
400 checkIntern(serialize, request, type, format, path, method, name, value, \value);
405 checkStringIntern(
string path,
string method,
string name,
string value);
409 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
410 string name, list<auto> v, reference<list> value) {
411 if (type !=
"list" && type !=
"any")
412 throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an array (%y), but "
413 "the expected type is %y", name, path, method, v, type);
416 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
417 string name, hash<auto> v, reference<hash> value) {
418 if (type !=
"file" && type !=
"any")
419 throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an object (%y), but "
420 "the expected type is %y", name, path, method, v, type);
423 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
424 string name,
int v, reference<auto> value) {
426 if (type ==
'number');
428 if (type !=
"integer" && type !=
"any")
436 if (
enum && !
enum{value})
437 throw "SCHEMA-VALIDATION-ERROR",
438 sprintf(
"Parameter %y for path %y and method %y does not fit the enumerated values (enum: %y, actual: %d)",
439 name, path, method, keys
enum, value);
443 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, number v, reference<number> value);
448 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
float v, reference<number> value);
453 checkInternNumber(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
auto v, reference<auto> value);
458 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
459 string name, binary v, reference value) {
460 if (type !=
"string" && type !=
"any")
468 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
469 string name,
string v, reference<auto> value) {
470 if (type !=
'string' && type !=
'any');
480 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, date v, reference value);
485 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
bool v, reference<bool> value);
490 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, nothing v, reference<nothing> value);
496 reference<softlist<auto>> value) {
498 throw "SCHEMA-VALIDATION-ERROR",
499 sprintf(
"Parameter %y for path %y and method %y has too many items (maxItems: %d, actual: %d)",
500 name, path, method,
maxItems, value.size());
502 throw "SCHEMA-VALIDATION-ERROR",
503 sprintf(
"Parameter %y for path %y and method %y has too few items (minItems: %d, actual: %d)",
504 name, path, method,
minItems, value.size());
511 foreach auto val in (\value) {
512 items.
check(serialize, request, path, method, name, \val);
514 throw "SCHEMA-VALIDATION-ERROR",
515 sprintf(
"%s %s: Array parameter %y does not have unique items",
722 hash<string, hash<string, SchemaObject>>
so_map;
749 constructor(
string schema_source, hash<auto> oh, *hash<auto> opts) ;
770 AbstractRestSchemaValidator(logger);
843 private hash<RestSchemaValidator::RestRequestClientInfo>
processRequestImpl(
string method,
string path,
auto body,
844 *hash<auto> headers, *softlist<string> content_types) {
860 private hash<RestSchemaValidator::RestRequestServerInfo>
parseRequestImpl(
string method,
string path,
861 *data http_body, reference<hash> headers) {
864 if (exists http_body);
874 hash<UriQueryInfo> h = parse_uri_query(path);
875 method = method.lwr();
880 return <RestRequestServerInfo>{
907 private hash<HttpResponseInfo>
processResponseImpl(
string method,
string path,
int code,
auto response_body,
908 *hash<auto> headers, *softlist<string> content_types) {
924 private hash<RestSchemaValidator::RestResponseClientInfo>
parseResponseImpl(
string method,
string path,
int code,
925 *data response_body, hash<auto> hdr) {
929 method = method.lwr();
933 hash<RestResponseClientInfo> rv((
938 *
string content = hdr.
"content-type" ?? hdr.
"Content-Type";
941 if (exists response_body && content);
944 hash<string, bool> mime_types;
947 if (content && !mime_types{content})
948 throw "DESERIALIZATION-ERROR", sprintf(
"%s %s: content type %y is not accepted by this operation; "
949 "accepted content types: %y", method.upr(), path, content, keys mime_types);
1005 *softlist<string> content_types) {
1009 method = method.lwr();
1014 hash<RestExampleRequestInfo> rv = op.
getExampleRequest(method, path, pio, self, \body);
1042 *softlist<string> content_types) {
1046 method = method.lwr();
1116 hash<UriQueryInfo> h = parse_uri_query(path);
1119 method = method.lwr();
1124 hash<string, bool> mime_types;
1127 hash<RestRequestClientInfo> rv((
1128 "uri_path": h.method,
1145 if (!exists content_types);
1148 foreach string content in (content_types);
1157 throw "SERIALIZATION-ERROR", sprintf(
"%s %s: message body cannot be serialized; requested MIME type(s): "
1158 "%y; available MIME types: %y; available serialization modules: %y", method.upr(), path,
1185 auto response_body, *hash<auto> headers, *softlist<string> content_types,
bool compact_serialization) {
1187 method = method.lwr();
1192 hash<string, bool> mime_types;
1195 hash<HttpResponseInfo> rv((
1200 if (exists response_body);
1216 *hash<auto> headers) {
1218 if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
1222 *list<string> ct = map $1, keys headers, $1 ==1i;
1225 if (ct && ct.size() == 1 && !
MimeDataTypes{headers{ct[0]}});
1240 *hash<auto> headers) {
1242 if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
1246 *list<string> ct = map $1, keys headers, $1 ==1i;
1249 if (ct && ct.size() == 1);
1263 hash<string, bool> mime_types, *list<auto> content_types) {
1265 if (body.typeCode() != NT_STRING)
1269 if (!mime_types.
"text/plain")
1276 resp.hdr.
"Content-Type" =
"text/plain";
1398 constructor(
string full_path, list<auto> l,
int offset, hash<auto> oh);
1574 bool deprec = False;
1675 reference<hash> headers, *reference<hash<string, bool>> mime_types) {
1677 foreach string key in (keys h.params);
1681 foreach string key in (keys headers);
1688 body_po.
check(serialize, True, path, method,
"body", \body);
1689 }
else if (formData) {
1690 foreach hash<auto> i in (formData.pairIterator()) {
1691 i.value.check(serialize, True, path, method,
"formData." + i.key, \body{i.key});
1694 error(
"SCHEMA-VALIDATION-ERROR",
"No message body is accepted; body keys passed: %y", keys body);
1699 checkMissingParams(h, headers, body, parameters);
1700 checkMissingParams(h, headers, body, pio.
parameters, parameters);
1722 reference<hash<string, bool>> mime_types,
bool deserialize = True) {
1725 else if (exists res && exists response_body);
1755 hash<RestExampleRequestInfo> rv();
1760 getQoreExampleParams(\query, \rv.hdr, parameters);
1761 getQoreExampleParams(\query, \rv.hdr, pio.
parameters, parameters);
1763 rv.request_uri = sprintf(
"%s %s HTTP/1.1", method.upr(),
1764 make_uri_query(cast<hash<UriQueryInfo>>({
"method": path,
"params": query})));
1769 rbody = body_po.getExampleValue();
1794 hash<RestExampleResponseInfo>
getExampleResponse(
string method,
string path,
int code, reference<auto> body);
1797 private getQoreExampleParams(reference<hash<auto>> query, reference<hash<auto>> headers,
1798 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1799 foreach hash<auto> ph in (parameters.pairIterator());
1804 private doDefaultParams(reference<hash<UriQueryInfo>> h, reference<hash> headers, reference<auto> body,
1805 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1806 foreach hash<auto> ph in (parameters.pairIterator());
1812 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1813 foreach hash<auto> ph in (parameters.pairIterator());
1919 bool required = False;
1922 const OtherParameterMap = ...;
1939 abstract
check(
bool serialize,
bool request,
string path,
string method,
string name, reference value);
1968 check(
bool serialize,
bool request,
string path,
string method,
string name, reference value);
1976 auto getExampleValue();
2005 bool allowEmptyValue = False;
2037 const ParameterTypes = ...;
2056 check(
bool serialize,
bool request,
string path,
string method,
string name, reference<auto> value);
2287 bool nullable = False;
2338 bool readOnly = False;
2368 const ScalarTypes = ...;
2372 const ReferenceTypes = ...;
2388 constructor(
string name, hash<auto> oh,
SwaggerSchema swagger, *
string hash_str)
2393 string getQoreExample(reference<hash<RestQoreExampleCodeInfo>> rv,
string name,
bool decl);
2401 check(
bool serialize,
bool request,
string path,
string method,
string name, reference<auto> value);
2405 checkObjectProperty(
string name,
string prop);
2410 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
2411 string name, hash<auto> v, reference<hash<auto>> value) {
2412 if (type !=
"object" && type !=
"any")
2413 throwInvalidType(name,
"object", type, v);
2416 map $1.checkIntern(serialize, request, type, NOTHING, path, method, name, v, \value), allOf;
2425 if (!additionalProperties && type !=
'any');
2428 foreach string prop in (keys required);
2544 bool attribute = False;
2551 bool wrapped = False;
2658 const SwaggerListToStringSet = -1;
2660 const SwaggerListToAnySet = -2;
2661 const SwaggerListToHashOfStrings = -3;
2663 const TypeMap = ...;
2677 required_field(
string objType, hash<auto> oh,
string name,
int typeCode, reference<auto> target);
2691 required_field(
string objType, hash<auto> oh,
string name, hash<string, bool> typeCodes, reference<auto> target);
2706 bool optional_field(
string objType, hash<auto> oh,
string name,
int typeCode, reference<auto> target);
2721 bool optional_field(
string objType, hash<auto> oh,
string name, hash<string, bool> typeCodes,
2722 reference<auto> target) {
2723 if (!oh.hasKey(name))
2725 auto val = oh{name};
2726 if (!typeCodes{val.typeCode()})
2727 throw "INVALID-FIELD-TYPE",
sprintf(
"%s Object%s: %y field has invalid type %y", objType,
2728 oh.name ?
sprintf(
" %y", oh.name) :
"", name, val.type());
2729 get_value(objType, name, val.typeCode(), val, \target);
2734 check_type_code(
string objType, hash<auto> oh,
string name,
auto val,
int typeCode);
2738 get_value(
string objType,
string name,
int typeCode,
auto val, reference<auto> target);
2742 string get_qore_type(
string name,
string type, *
string format, *SchemaObject items);
Describes a single operation parameter.
Definition: Swagger.qm.dox.h:1890
auto getDefaultValue()
returns the default value of the parameter (default: NOTHING)
constructor(hash< auto > oh)
Constructor.
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:1901
string inLoc
Required. The location of the parameter.
Definition: Swagger.qm.dox.h:1908
static AbstractParameterObject newParameter(string name, hash< auto > oh, SwaggerSchema swagger)
gets a concrete instance of an AbstractParameterObject
*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:1911
AbstractParameterObject specialization for "body" parameters.
Definition: Swagger.qm.dox.h:1950
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:1954
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:1833
*string desc
A short description of the target documentation. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1837
constructor(hash< auto > oh)
Constructor.
string url
Required. The URL for the target documentation. Value MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1840
The object provides metadata about the API. The metadata can be used by the clients if needed,...
Definition: Swagger.qm.dox.h:1288
string version
Required. Provides the version of the application API (not to be confused with the specification vers...
Definition: Swagger.qm.dox.h:1301
constructor(hash< auto > oh)
Constructor.
string title
Required. The title of the application.
Definition: Swagger.qm.dox.h:1292
*LicenseObject license
The license information for the exposed API.
Definition: Swagger.qm.dox.h:1307
*ContactObject contact
The contact information for the exposed API.
Definition: Swagger.qm.dox.h:1304
*string termsOfService
The Terms of Service for the API.
Definition: Swagger.qm.dox.h:1298
*string desc
A short description of the application. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1295
License information for the exposed API.
Definition: Swagger.qm.dox.h:1344
constructor(hash< auto > oh)
Constructor.
string name
Required. The license name used for the API.
Definition: Swagger.qm.dox.h:1348
*string url
A URL to the license used for the API. MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1351
Base class for the Swagger specification objects, wrapping the vendor extensions.
Definition: Swagger.qm.dox.h:302
initialize(hash< auto > oh)
Initialize.
hash< auto > vendorExtensions
Allows extensions to the Swagger Schema.
Definition: Swagger.qm.dox.h:310
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:1548
list< string > schemes
The transfer protocol for the operation.
Definition: Swagger.qm.dox.h:1629
*string desc
A verbose explanation of the operation behavior. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1567
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:1811
hash< string, bool > produces
A hash of MIME types (strings) the operation can produce.
Definition: Swagger.qm.dox.h:1602
*ExternalDocumentationObject externalDocs
Additional external documentation for this operation.
Definition: Swagger.qm.dox.h:1577
string path
the URI path for the operation
Definition: Swagger.qm.dox.h:1552
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:1721
*string summary
A short summary of what the operation does.
Definition: Swagger.qm.dox.h:1564
hash< string, AbstractParameterObject > parameters()
A hash of parameters that are applicable for this operation.
hash< RestQoreExampleCodeInfo > getQoreExampleRequest(string method, string path, PathItemObject pio, SwaggerSchema swagger)
returns example Qore code for the given request
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:1804
string method
the HTTP method for the operation
Definition: Swagger.qm.dox.h:1555
AbstractParameterObject body
body parameter; if defined for this operation, formData parameter will be excluded
Definition: Swagger.qm.dox.h:1616
hash< RestQoreExampleCodeInfo > getQoreExampleResponse(string method, string path, int code)
returns example Qore code for the given response
*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:1674
hash< RestExampleResponseInfo > getExampleResponse(string method, string path, int code, reference< auto > body)
returns a hash of example message information for the given request
parseRequest(PathItemObject pio, reference< hash< UriQueryInfo > > h, reference< auto > body, reference< hash > headers)
parses and processes a REST request on the server side
ResponsesObject responses
Required. The list of possible responses as they are returned from executing this operation.
Definition: Swagger.qm.dox.h:1622
error(string err, string fmt)
raises an exception with context information
list tags
A list of tags (strings or TagObjects) for API documentation control.
Definition: Swagger.qm.dox.h:1561
*ResponseObject getResponse(int code)
returns the ResponseObject for hthe given HTTP code or NOTHING if none is configured
*string operationId
Unique string used to identify the operation.
Definition: Swagger.qm.dox.h:1586
hash< string, AbstractParameterObject > formData
formData parameter; if defined for this operation, body parameter will be excluded
Definition: Swagger.qm.dox.h:1619
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:1753
list< hash< string, list< string > > > security
A declaration of which security schemes are applied for this operation.
Definition: Swagger.qm.dox.h:1644
hash< string, bool > consumes
A list of MIME types (strings) the operation can consume.
Definition: Swagger.qm.dox.h:1594
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
AbstractParameterObject specialization for parameters other than "body".
Definition: Swagger.qm.dox.h:1981
constructor(string name, hash< auto > oh, SwaggerSchema swagger)
Constructor.
*string format
The extending format for the previously mentioned type. See Data Type Formats for further details.
Definition: Swagger.qm.dox.h:1997
check(bool serialize, bool request, string path, string method, string name, reference< auto > value)
validates the value against the schema definition
auto defaultVal
Declares the value of the parameter that the server will use if none is provided.
Definition: Swagger.qm.dox.h:2034
auto getDefaultValue()
returns the default value of the parameter (default: NOTHING)
*ParameterItemsSchemaObject items
Required if type is "array". Describes the type of items in the array.
Definition: Swagger.qm.dox.h:2008
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 type
Required. The type of the parameter.
Definition: Swagger.qm.dox.h:1994
*string collectionFormat
Determines the format of the array if type array is used.
Definition: Swagger.qm.dox.h:2024
items schema object for non-body parameters
Definition: Swagger.qm.dox.h:2460
*string collectionFormat
Determines the format of the array if type array is used.
Definition: Swagger.qm.dox.h:2477
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
static ParameterItemsSchemaObject newSchemaObject(string name, auto error, SwaggerSchema swagger)
throws an "INVALID-FIELD-TYPE" exception
Holds the relative paths to the individual endpoints.
Definition: Swagger.qm.dox.h:1371
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:1388
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:1379
*PathComponent wildcard
if there is a wildcard to a PathComponent
Definition: Swagger.qm.dox.h:1382
string pfx
path prefix
Definition: Swagger.qm.dox.h:1376
*PathItemObject pio
the PathItemObject associated with this path (if any)
Definition: Swagger.qm.dox.h:1385
Describes the operations available on a single path.
Definition: Swagger.qm.dox.h:1474
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:1483
hash< string, OperationObject > operations
A hash of OperationObjects correspoding to different methods.
Definition: Swagger.qm.dox.h:1512
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:1498
constructor(string path, hash< auto > oh, SwaggerSchema swagger)
Constructor.
This class stores the path tree for URI path matching.
Definition: Swagger.qm.dox.h:1428
*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:1433
hash< string, list< string > > getPathOperationHash()
returns a hash of URI paths as keys with values as lists of supported HTTP methods
Describes a single response from an API Operation.
Definition: Swagger.qm.dox.h:2107
*SchemaObject schema
A definition of the response structure.
Definition: Swagger.qm.dox.h:2120
string desc
Required. A short description of the response. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:2111
hash< auto > headers
A hash of headers that are (can be) sent with the response.
Definition: Swagger.qm.dox.h:2126
hash examples
A hash of example response messages.
Definition: Swagger.qm.dox.h:2136
static ResponseObject newResponse(string key, hash< auto > oh, SwaggerSchema swagger)
returns a new ResponseObject corresponding to the schema definition passed
constructor(string key, hash< auto > oh, SwaggerSchema swagger)
private constructor; use newResponse() instead
contains the possible responses for an operation
Definition: Swagger.qm.dox.h:2075
ResponseObject defaultResp
Definition: Swagger.qm.dox.h:2082
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
hash< string, ResponseObject > responses
Definition: Swagger.qm.dox.h:2089
Base used by OtherParameter, HeaderObject and SchemaObject.
Definition: Swagger.qm.dox.h:335
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:468
*bool exclusiveMin
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
Definition: Swagger.qm.dox.h:348
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:363
*float multipleOf
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.1.
Definition: Swagger.qm.dox.h:375
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:395
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:360
*int minLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.2.
Definition: Swagger.qm.dox.h:354
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:339
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:495
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:458
*int maxLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.1.
Definition: Swagger.qm.dox.h:351
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:345
*bool uniqueItems
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.4.
Definition: Swagger.qm.dox.h:366
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:342
*string pattern
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3.
Definition: Swagger.qm.dox.h:357
defines an object in a schema
Definition: Swagger.qm.dox.h:2250
auto additionalProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.4.
Definition: Swagger.qm.dox.h:2301
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:2294
*string format
The extending format for the previously mentioned type. See Data Type Formats for further details.
Definition: Swagger.qm.dox.h:2264
constructor(string name, hash< auto > oh, SwaggerSchema swagger, *string hash_str) public auto getExampleValue()
private constructor; use newSchemaObject() instead
static SchemaObject newSchemaObject(string name, auto error, SwaggerSchema swagger)
throws an "INVALID-FIELD-TYPE" exception
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:2410
check(bool serialize, bool request, string path, string method, string name, reference< auto > value)
validates the value against the schema definition
list< SchemaObject > allOf()
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.3.
*int maxProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.1.
Definition: Swagger.qm.dox.h:2279
string name
the name of this object for documentation and example purposes
Definition: Swagger.qm.dox.h:2254
string type
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.2.
Definition: Swagger.qm.dox.h:2261
*string discriminator
Adds support for polymorphism.
Definition: Swagger.qm.dox.h:2328
*SchemaObject items
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.1.
Definition: Swagger.qm.dox.h:2273
*XmlObject xml
This MAY be used only on properties schemas. It has no effect on root schemas.
Definition: Swagger.qm.dox.h:2359
*ExternalDocumentationObject externalDocs
Additional external documentation for this schema.
Definition: Swagger.qm.dox.h:2362
static checkValueType(reference< auto > value, string type, *SchemaObject items, *string loc)
validates default values
*string desc
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2270
auto defaultVal
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2.
Definition: Swagger.qm.dox.h:2276
*string title
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2267
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:2307
auto example
A free-form property to include an example of an instance for this schema.
Definition: Swagger.qm.dox.h:2365
static SchemaObject newSchemaObject(string name, hash< auto > oh, SwaggerSchema swagger)
returns a SchemaObject for the schema definition; resolves references
*int minProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.2.
Definition: Swagger.qm.dox.h:2282
Lists the available scopes for an OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2635
constructor(hash< auto > oh)
Constructor.
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:2642
Allows the definition of a security scheme that can be used by the operations.
Definition: Swagger.qm.dox.h:2569
*string flow
The flow used by the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2596
*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:2602
string type
Required. The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
Definition: Swagger.qm.dox.h:2573
*string inLoc
The location of the API key. Valid values are "query" or "header".
Definition: Swagger.qm.dox.h:2588
constructor(hash< auto > oh)
Constructor.
*string name
The name of the header or query parameter to be used.
Definition: Swagger.qm.dox.h:2582
*ScopesObject scopes
The available scopes for the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2618
*string desc
A short description for security scheme.
Definition: Swagger.qm.dox.h:2576
*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:2608
Used for loading the Swagger definitions.
Definition: Swagger.qm.dox.h:535
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:594
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:1004
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:1262
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:1111
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:1184
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:924
hash< string, bool > produces
A set of MIME types (strings) the APIs can produce.
Definition: Swagger.qm.dox.h:647
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:843
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:1239
hash< string, hash< string, SchemaObject > > so_map
maps name -> SHA1 hash of the config -> schema objects for recursive references
Definition: Swagger.qm.dox.h:722
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:728
*string def_path
the default path to use when retrieving external schema references
Definition: Swagger.qm.dox.h:711
hash< string, softlist< string > > security
A declaration of which security schemes are applied for the API as a whole.
Definition: Swagger.qm.dox.h:685
hash< string, ResponseObject > responses
Response definitions that can be used across operations. This property does not define global respons...
Definition: Swagger.qm.dox.h:665
*ExternalDocumentationObject externalDocs
Additional external documentation.
Definition: Swagger.qm.dox.h:700
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:716
*string basePath
The base path on which the API is served, which is relative to the host.
Definition: Swagger.qm.dox.h:625
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:719
hash< string, SecuritySchemeObject > securityDefinitions
Security scheme definitions that can be used across the specification.
Definition: Swagger.qm.dox.h:671
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:907
SchemaObject processDefinition(string key, auto value)
Processes a schema definition.
string swaggerSpec
Swagger Specification version being used.
Definition: Swagger.qm.dox.h:602
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:1041
InfoObject info
Required. Provides metadata about the API. The metadata can be used by the clients if needed.
Definition: Swagger.qm.dox.h:605
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:708
const SwaggerOptions
SwaggerSchema options.
Definition: Swagger.qm.dox.h:703
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:860
*string host
The host (name or IP) serving the API.
Definition: Swagger.qm.dox.h:617
hash< string, bool > consumes
A set of MIME types (strings) the APIs can consume.
Definition: Swagger.qm.dox.h:640
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:1215
hash< string, bool > schemes
The transfer protocol of the API.
Definition: Swagger.qm.dox.h:633
PathsObject paths
Required. The available paths and operations for the API.
Definition: Swagger.qm.dox.h:608
list< TagObject > tags
A list of tags used by the specification with additional metadata.
Definition: Swagger.qm.dox.h:697
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:2226
*ExternalDocumentationObject externalDocs
Additional external documentation for this tag.
Definition: Swagger.qm.dox.h:2236
*string desc
A short description for the tag. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:2233
string name
Required. The name of the tag.
Definition: Swagger.qm.dox.h:2230
constructor(hash< auto > oh)
Constructor.
A metadata object that allows for more fine-tuned XML model definitions.
Definition: Swagger.qm.dox.h:2524
*string name
Replaces the name of the element/attribute used for the described schema property.
Definition: Swagger.qm.dox.h:2535
constructor(hash< auto > oh)
Constructor.
*string prefix
The prefix to be used for the name.
Definition: Swagger.qm.dox.h:2541
*string ns
The URL of the namespace definition. Value SHOULD be in the form of a URL.
Definition: Swagger.qm.dox.h:2538
string sprintf(string fmt,...)
main namespace for all public Swagger declarations
Definition: Swagger.qm.dox.h:225
const CollectionFormats
allowed collection formats
Definition: Swagger.qm.dox.h:234
const ValidNumberFormats
Valid number type formats.
Definition: Swagger.qm.dox.h:229
const ValidStringFormatsHash
A hash of valid string type formats.
Definition: Swagger.qm.dox.h:246
const ValidNumberFormatsHash
A hash of valid number type formats.
Definition: Swagger.qm.dox.h:244
const ParameterCollectionFormats
valid parameter collection formats
Definition: Swagger.qm.dox.h:238
const SerializationModules
modules available for data serialization and/or deserialization
Definition: Swagger.qm.dox.h:292
const ValidStringFormats
Valid string type formats.
Definition: Swagger.qm.dox.h:231
const ValidIntFormatsHash
A hash of valid integer type formats.
Definition: Swagger.qm.dox.h:242
const MimeDataTypes
supported mime types for de/serializing data
Definition: Swagger.qm.dox.h:257
const MimeContentTypes
MIME types for data serialization.
Definition: Swagger.qm.dox.h:295
const ValidIntFormats
Valid integer type formats.
Definition: Swagger.qm.dox.h:227
const YamlSerialization
Yaml serialization.
Definition: Swagger.qm.dox.h:249
const ValidSchemes
Valid transfer protocol schemes.
Definition: Swagger.qm.dox.h:298