260 "serialize": \make_yaml(),
261 "serialize_verbose":
string sub (
auto val) {
return make_yaml(val, BlockStyle);},
262 "deserialize": \parse_yaml(),
270 "serialize": \make_json(),
271 "serialize_verbose":
string sub (
auto val) {
return make_json(val, JGF_ADD_FORMATTING);},
272 "deserialize": \parse_json(),
285 "serialize": \make_xml(),
286 "serialize_verbose":
string sub (
auto val) {
return make_xml(val, XGF_ADD_FORMATTING);},
287 "deserialize": \parse_xml(),
291 # Content-Type: application/x-www-form-urlencoded
292 MimeTypeFormUrlEncoded: (
293 "serialize": \mime_get_form_urlencoded_string(),
294 "serialize_verbose": \mime_get_form_urlencoded_string(),
295 "deserialize": \mime_parse_form_urlencoded_string(),
297 # Content-Type: multipart/form-data (handled manually)
298 MimeTypeMultipartFormData: {},
382 hash<string, bool>
enum;
405 private check(
bool serialize,
bool request,
string type, *
string format, *
SchemaObject items,
string path,
406 string method,
string name, reference<auto> value) {
408 if (type ==
'array');
410 checkIntern(serialize, request, type, format, path, method, name, value, \value);
415 checkStringIntern(
string path,
string method,
string name,
string value);
419 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
420 string name, list<auto> v, reference<list> value) {
421 if (type !=
"list" && type !=
"any")
422 throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an array (%y), but "
423 "the expected type is %y", name, path, method, v, type);
426 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
427 string name, hash<auto> v, reference<hash> value) {
428 if (type !=
"file" && type !=
"any")
429 throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an object (%y), but "
430 "the expected type is %y", name, path, method, v, type);
433 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
434 string name,
int v, reference<auto> value) {
436 if (type ==
'number');
438 if (type !=
"integer" && type !=
"any")
446 if (
enum && !
enum{value})
447 throw "SCHEMA-VALIDATION-ERROR",
448 sprintf(
"Parameter %y for path %y and method %y does not fit the enumerated values (enum: %y, actual: %d)",
449 name, path, method, keys
enum, value);
453 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, number v, reference<number> value);
458 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
float v, reference<number> value);
463 checkInternNumber(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
auto v, reference<auto> value);
468 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
469 string name, binary v, reference value) {
470 if (type !=
"string" && type !=
"any")
478 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
479 string name,
string v, reference<auto> value) {
480 if (type !=
'string' && type !=
'any');
490 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, date v, reference value);
495 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
bool v, reference<bool> value);
500 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, nothing v, reference<nothing> value);
506 reference<softlist<auto>> value) {
508 throw "SCHEMA-VALIDATION-ERROR",
509 sprintf(
"Parameter %y for path %y and method %y has too many items (maxItems: %d, actual: %d)",
510 name, path, method,
maxItems, value.size());
512 throw "SCHEMA-VALIDATION-ERROR",
513 sprintf(
"Parameter %y for path %y and method %y has too few items (minItems: %d, actual: %d)",
514 name, path, method,
minItems, value.size());
521 foreach auto val in (\value) {
522 items.
check(serialize, request, path, method, name, \val);
524 throw "SCHEMA-VALIDATION-ERROR",
525 sprintf(
"%s %s: Array parameter %y does not have unique items",
732 hash<string, hash<string, SchemaObject>>
so_map;
759 constructor(
string schema_source, hash<auto> oh, *hash<auto> opts) ;
780 AbstractRestSchemaValidator(logger);
853 private hash<RestSchemaValidator::RestRequestClientInfo>
processRequestImpl(
string method,
string path,
auto body,
854 *hash<auto> headers, *softlist<string> content_types) {
870 private hash<RestSchemaValidator::RestRequestServerInfo>
parseRequestImpl(
string method,
string path,
871 *data http_body, reference<hash> headers) {
874 if (exists http_body);
884 hash<UriQueryInfo> h = parse_uri_query(path);
885 method = method.lwr();
889 op.parseRequest(pio, \h, \body, \headers);
890 return <RestRequestServerInfo>{
893 "path_args": h.path_params,
918 private hash<HttpResponseInfo>
processResponseImpl(
string method,
string path,
int code,
auto response_body,
919 *hash<auto> headers, *softlist<string> content_types) {
935 private hash<RestSchemaValidator::RestResponseClientInfo>
parseResponseImpl(
string method,
string path,
int code,
936 *data response_body, hash<auto> hdr) {
940 method = method.lwr();
944 hash<RestResponseClientInfo> rv((
949 *
string content = hdr.
"content-type" ?? hdr.
"Content-Type";
952 if (exists response_body && content);
955 hash<string, bool> mime_types;
956 op.validateResponse(method, path, pio, code, \rv.
body, \mime_types, False);
958 if (content && !mime_types{content})
959 throw "DESERIALIZATION-ERROR", sprintf(
"%s %s: content type %y is not accepted by this operation; "
960 "accepted content types: %y", method.upr(), path, content, keys mime_types);
1016 *softlist<string> content_types) {
1020 method = method.lwr();
1025 hash<RestExampleRequestInfo> rv = op.getExampleRequest(method, path, pio, self, \body);
1053 *softlist<string> content_types) {
1057 method = method.lwr();
1062 hash<RestExampleResponseInfo> rv = op.getExampleResponse(method, path, code, \body);
1127 hash<UriQueryInfo> h = parse_uri_query(path);
1130 method = method.lwr();
1135 hash<string, bool> mime_types;
1138 hash<RestRequestClientInfo> rv((
1139 "uri_path": h.method,
1156 if (!exists content_types);
1159 foreach string content in (content_types);
1168 throw "SERIALIZATION-ERROR", sprintf(
"%s %s: message body cannot be serialized; requested MIME type(s): "
1169 "%y; available MIME types: %y; available serialization modules: %y", method.upr(), path,
1196 auto response_body, *hash<auto> headers, *softlist<string> content_types,
bool compact_serialization) {
1198 method = method.lwr();
1203 hash<string, bool> mime_types;
1204 op.validateResponse(method, path, pio, code, \response_body, \mime_types);
1206 hash<HttpResponseInfo> rv((
1211 if (exists response_body);
1227 *hash<auto> headers) {
1229 if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
1233 *list<string> ct = map $1, keys headers, $1 ==1i;
1236 if (ct && ct.size() == 1 && !
MimeDataTypes{headers{ct[0]}});
1251 *hash<auto> headers) {
1253 if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
1257 *list<string> ct = map $1, keys headers, $1 ==1i;
1260 if (ct && ct.size() == 1);
1274 hash<string, bool> mime_types, *list<auto> content_types) {
1276 if (body.typeCode() != NT_STRING)
1280 if (!mime_types.
"text/plain")
1287 resp.hdr.
"Content-Type" =
"text/plain";
1409 constructor(
string full_path, list<auto> l,
int offset, hash<auto> oh);
1585 bool deprec = False;
1686 reference<hash> headers, *reference<hash<string, bool>> mime_types) {
1688 foreach string key in (keys h.params);
1692 foreach string key in (keys headers);
1699 body_po.
check(serialize, True, path, method,
"body", \body);
1700 }
else if (formData) {
1701 foreach hash<auto> i in (formData.pairIterator()) {
1702 i.value.check(serialize, True, path, method,
"formData." + i.key, \body{i.key});
1705 error(
"SCHEMA-VALIDATION-ERROR",
"No message body is accepted; body keys passed: %y", keys body);
1710 foreach string param in (path =~ x/{([^}]+)}/g);
1737 reference<hash<string, bool>> mime_types,
bool deserialize = True) {
1740 else if (exists res && exists response_body);
1770 hash<RestExampleRequestInfo> rv();
1775 getQoreExampleParams(\query, \rv.hdr, parameters);
1776 getQoreExampleParams(\query, \rv.hdr, pio.
parameters, parameters);
1778 rv.request_uri = sprintf(
"%s %s HTTP/1.1", method.upr(),
1779 make_uri_query(cast<hash<UriQueryInfo>>({
"method": path,
"params": query})));
1784 rbody = body_po.getExampleValue();
1809 hash<RestExampleResponseInfo>
getExampleResponse(
string method,
string path,
int code, reference<auto> body);
1812 private getQoreExampleParams(reference<hash<auto>> query, reference<hash<auto>> headers,
1813 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1814 foreach hash<auto> ph in (parameters.pairIterator());
1819 private doDefaultParams(reference<hash<UriQueryInfo>> h, reference<hash> headers, reference<auto> body,
1820 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1821 foreach hash<auto> ph in (parameters.pairIterator());
1827 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1828 foreach hash<auto> ph in (parameters.pairIterator());
1937 const OtherParameterMap = ...;
1954 abstract
check(
bool serialize,
bool request,
string path,
string method,
string name, reference value);
1983 check(
bool serialize,
bool request,
string path,
string method,
string name, reference value);
1991 auto getExampleValue();
2071 check(
bool serialize,
bool request,
string path,
string method,
string name, reference<auto> value);
2117 constructor(
string path,
string method, hash<auto> oh, SwaggerSchema swagger) ;
2405 constructor(
string name, hash<auto> oh, SwaggerSchema swagger, *
string hash_str, *
bool require_items)
2410 string getQoreExample(reference<hash<RestQoreExampleCodeInfo>> rv,
string name,
bool decl);
2418 check(
bool serialize,
bool request,
string path,
string method,
string name, reference<auto> value);
2422 checkObjectProperty(
string name,
string prop);
2428 string name, hash<auto> v, reference<hash<auto>> value) {
2429 if (
type !=
"object" &&
type !=
"any")
2430 throwInvalidType(
name,
"object",
type, v);
2433 map $1.checkIntern(serialize, request,
type, NOTHING, path, method,
name, v, \value),
allOf;
2445 foreach string prop in (keys
required);
2675 const SwaggerListToStringSet = -1;
2677 const SwaggerListToAnySet = -2;
2678 const SwaggerListToHashOfStrings = -3;
2680 const TypeMap = ...;
2694 required_field(
string objType, hash<auto> oh,
string name,
int typeCode, reference<auto> target);
2708 required_field(
string objType, hash<auto> oh,
string name, hash<string, bool> typeCodes, reference<auto> target);
2723 bool optional_field(
string objType, hash<auto> oh,
string name,
int typeCode, reference<auto> target);
2738 bool optional_field(
string objType, hash<auto> oh,
string name, hash<string, bool> typeCodes,
2739 reference<auto> target) {
2740 if (!oh.hasKey(name))
2742 auto val = oh{name};
2743 if (!typeCodes{val.typeCode()})
2744 throw "INVALID-FIELD-TYPE",
sprintf(
"%s Object%s: %y field has invalid type %y", objType,
2745 oh.name ?
sprintf(
" %y", oh.name) :
"", name, val.type());
2746 get_value(objType, name, val.typeCode(), val, \target);
2751 check_type_code(
string objType, hash<auto> oh,
string name,
auto val,
int typeCode);
2755 get_value(
string objType,
string name,
int typeCode,
auto val, reference<auto> target);
2759 string get_qore_type(
string name,
string type, *
string format, *
SchemaObject items);
Describes a single operation parameter.
Definition: Swagger.qm.dox.h:1905
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:1916
auto getDefaultValue()
returns the default value of the parameter (default: NOTHING)
string inLoc
Required. The location of the parameter.
Definition: Swagger.qm.dox.h:1923
*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:1926
bool required
Determines whether this parameter is mandatory.
Definition: Swagger.qm.dox.h:1934
AbstractParameterObject specialization for "body" parameters.
Definition: Swagger.qm.dox.h:1965
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:1969
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:1848
string url
Required. The URL for the target documentation. Value MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1855
*string desc
A short description of the target documentation. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1852
constructor(hash< auto > oh)
Constructor.
AbstractParameterObject specialization for parameters other than "body".
Definition: Swagger.qm.dox.h:1996
const ParameterTypes
valid parameter types
Definition: Swagger.qm.dox.h:2052
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:2039
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:2012
bool allowEmptyValue
Sets the ability to pass empty-valued parameters.
Definition: Swagger.qm.dox.h:2020
auto defaultVal
Declares the value of the parameter that the server will use if none is provided.
Definition: Swagger.qm.dox.h:2049
string type
Required. The type of the parameter.
Definition: Swagger.qm.dox.h:2009
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:2023
items schema object for non-body parameters
Definition: Swagger.qm.dox.h:2477
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:2494
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:2122
hash< auto > headers
A hash of headers that are (can be) sent with the response.
Definition: Swagger.qm.dox.h:2141
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:2135
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:2126
hash examples
A hash of example response messages.
Definition: Swagger.qm.dox.h:2151
contains the possible responses for an operation
Definition: Swagger.qm.dox.h:2090
hash< string, ResponseObject > responses
Definition: Swagger.qm.dox.h:2104
ResponseObject defaultResp
Definition: Swagger.qm.dox.h:2097
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
defines an object in a schema
Definition: Swagger.qm.dox.h:2265
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:2387
constructor(string name, hash< auto > oh, SwaggerSchema swagger, *string hash_str, *bool require_items) public auto getExampleValue()
private constructor; use newSchemaObject() instead
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:2269
auto additionalProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.4.
Definition: Swagger.qm.dox.h:2316
static SchemaObject newSchemaObject(string name, hash< auto > oh, SwaggerSchema swagger, *bool require_items)
returns a SchemaObject for the schema definition; resolves references
*int maxProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.1.
Definition: Swagger.qm.dox.h:2294
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:2279
bool nullable
extension that allows types to be nullable
Definition: Swagger.qm.dox.h:2302
*string discriminator
Adds support for polymorphism.
Definition: Swagger.qm.dox.h:2343
const ScalarTypes
valid scalar types
Definition: Swagger.qm.dox.h:2383
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:2322
*int minProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.2.
Definition: Swagger.qm.dox.h:2297
auto defaultVal
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2.
Definition: Swagger.qm.dox.h:2291
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:2427
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:2276
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:2309
*ExternalDocumentationObject externalDocs
Additional external documentation for this schema.
Definition: Swagger.qm.dox.h:2377
*XmlObject xml
This MAY be used only on properties schemas. It has no effect on root schemas.
Definition: Swagger.qm.dox.h:2374
bool readOnly
Relevant only for Schema "properties" definitions. Declares the property as "read only".
Definition: Swagger.qm.dox.h:2353
*SchemaObject items
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.1.
Definition: Swagger.qm.dox.h:2288
*string title
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2282
auto example
A free-form property to include an example of an instance for this schema.
Definition: Swagger.qm.dox.h:2380
*string desc
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2285
Lists the available scopes for an OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2652
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:2659
constructor(hash< auto > oh)
Constructor.
Allows the definition of a security scheme that can be used by the operations.
Definition: Swagger.qm.dox.h:2586
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:2590
*string desc
A short description for security scheme.
Definition: Swagger.qm.dox.h:2593
*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:2619
*ScopesObject scopes
The available scopes for the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2635
*string inLoc
The location of the API key. Valid values are "query" or "header".
Definition: Swagger.qm.dox.h:2605
*string name
The name of the header or query parameter to be used.
Definition: Swagger.qm.dox.h:2599
*string flow
The flow used by the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2613
*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:2625
The object provides metadata about the API. The metadata can be used by the clients if needed,...
Definition: Swagger.qm.dox.h:1299
string version
Required. Provides the version of the application API (not to be confused with the specification vers...
Definition: Swagger.qm.dox.h:1312
constructor(hash< auto > oh)
Constructor.
string title
Required. The title of the application.
Definition: Swagger.qm.dox.h:1303
*LicenseObject license
The license information for the exposed API.
Definition: Swagger.qm.dox.h:1318
*ContactObject contact
The contact information for the exposed API.
Definition: Swagger.qm.dox.h:1315
*string termsOfService
The Terms of Service for the API.
Definition: Swagger.qm.dox.h:1309
*string desc
A short description of the application. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1306
License information for the exposed API.
Definition: Swagger.qm.dox.h:1355
constructor(hash< auto > oh)
Constructor.
string name
Required. The license name used for the API.
Definition: Swagger.qm.dox.h:1359
*string url
A URL to the license used for the API. MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1362
Base class for the Swagger specification objects, wrapping the vendor extensions.
Definition: Swagger.qm.dox.h:312
initialize(hash< auto > oh)
Initialize.
hash< auto > vendorExtensions
Allows extensions to the Swagger Schema.
Definition: Swagger.qm.dox.h:320
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:1559
list< string > schemes
The transfer protocol for the operation.
Definition: Swagger.qm.dox.h:1640
*string desc
A verbose explanation of the operation behavior. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1578
hash< string, bool > produces
A hash of MIME types (strings) the operation can produce.
Definition: Swagger.qm.dox.h:1613
*ExternalDocumentationObject externalDocs
Additional external documentation for this operation.
Definition: Swagger.qm.dox.h:1588
string path
the URI path for the operation
Definition: Swagger.qm.dox.h:1563
*string summary
A short summary of what the operation does.
Definition: Swagger.qm.dox.h:1575
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:1566
AbstractParameterObject body
body parameter; if defined for this operation, formData parameter will be excluded
Definition: Swagger.qm.dox.h:1627
*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:1685
ResponsesObject responses
Required. The list of possible responses as they are returned from executing this operation.
Definition: Swagger.qm.dox.h:1633
list tags
A list of tags (strings or TagObjects) for API documentation control.
Definition: Swagger.qm.dox.h:1572
*string operationId
Unique string used to identify the operation.
Definition: Swagger.qm.dox.h:1597
hash< string, AbstractParameterObject > formData
formData parameter; if defined for this operation, body parameter will be excluded
Definition: Swagger.qm.dox.h:1630
list< hash< string, list< string > > > security
A declaration of which security schemes are applied for this operation.
Definition: Swagger.qm.dox.h:1655
hash< string, bool > consumes
A list of MIME types (strings) the operation can consume.
Definition: Swagger.qm.dox.h:1605
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
Holds the relative paths to the individual endpoints.
Definition: Swagger.qm.dox.h:1382
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:1399
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:1390
*PathComponent wildcard
if there is a wildcard to a PathComponent
Definition: Swagger.qm.dox.h:1393
string pfx
path prefix
Definition: Swagger.qm.dox.h:1387
*PathItemObject pio
the PathItemObject associated with this path (if any)
Definition: Swagger.qm.dox.h:1396
Describes the operations available on a single path.
Definition: Swagger.qm.dox.h:1485
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:1494
hash< string, OperationObject > operations
A hash of OperationObjects correspoding to different methods.
Definition: Swagger.qm.dox.h:1523
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:1509
constructor(string path, hash< auto > oh, SwaggerSchema swagger)
Constructor.
This class stores the path tree for URI path matching.
Definition: Swagger.qm.dox.h:1439
*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:1444
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:345
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:478
*bool exclusiveMin
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
Definition: Swagger.qm.dox.h:358
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:373
*float multipleOf
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.1.
Definition: Swagger.qm.dox.h:385
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:405
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:370
*int minLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.2.
Definition: Swagger.qm.dox.h:364
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:349
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:505
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:468
*int maxLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.1.
Definition: Swagger.qm.dox.h:361
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:355
*bool uniqueItems
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.4.
Definition: Swagger.qm.dox.h:376
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:352
*string pattern
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3.
Definition: Swagger.qm.dox.h:367
Used for loading the Swagger definitions.
Definition: Swagger.qm.dox.h:545
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:604
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:1015
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:1273
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:1122
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:1195
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:935
hash< string, bool > produces
A set of MIME types (strings) the APIs can produce.
Definition: Swagger.qm.dox.h:657
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:853
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:1250
hash< string, hash< string, SchemaObject > > so_map
maps name -> SHA1 hash of the config -> schema objects for recursive references
Definition: Swagger.qm.dox.h:732
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:738
*string def_path
the default path to use when retrieving external schema references
Definition: Swagger.qm.dox.h:721
hash< string, softlist< string > > security
A declaration of which security schemes are applied for the API as a whole.
Definition: Swagger.qm.dox.h:695
hash< string, ResponseObject > responses
Response definitions that can be used across operations. This property does not define global respons...
Definition: Swagger.qm.dox.h:675
*ExternalDocumentationObject externalDocs
Additional external documentation.
Definition: Swagger.qm.dox.h:710
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:726
*string basePath
The base path on which the API is served, which is relative to the host.
Definition: Swagger.qm.dox.h:635
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:729
hash< string, SecuritySchemeObject > securityDefinitions
Security scheme definitions that can be used across the specification.
Definition: Swagger.qm.dox.h:681
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:918
SchemaObject processDefinition(string key, auto value)
Processes a schema definition.
string swaggerSpec
Swagger Specification version being used.
Definition: Swagger.qm.dox.h:612
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:1052
InfoObject info
Required. Provides metadata about the API. The metadata can be used by the clients if needed.
Definition: Swagger.qm.dox.h:615
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:718
const SwaggerOptions
SwaggerSchema options.
Definition: Swagger.qm.dox.h:713
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:870
*string host
The host (name or IP) serving the API.
Definition: Swagger.qm.dox.h:627
hash< string, bool > consumes
A set of MIME types (strings) the APIs can consume.
Definition: Swagger.qm.dox.h:650
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:1226
hash< string, bool > schemes
The transfer protocol of the API.
Definition: Swagger.qm.dox.h:643
PathsObject paths
Required. The available paths and operations for the API.
Definition: Swagger.qm.dox.h:618
list< TagObject > tags
A list of tags used by the specification with additional metadata.
Definition: Swagger.qm.dox.h:707
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:2241
constructor(hash< auto > oh)
Constructor.
*ExternalDocumentationObject externalDocs
Additional external documentation for this tag.
Definition: Swagger.qm.dox.h:2251
*string desc
A short description for the tag. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:2248
string name
Required. The name of the tag.
Definition: Swagger.qm.dox.h:2245
A metadata object that allows for more fine-tuned XML model definitions.
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:2555
constructor(hash< auto > oh)
Constructor.
*string prefix
The prefix to be used for the name.
Definition: Swagger.qm.dox.h:2558
bool wrapped
MAY be used only for an array definition. Signifies whether the array is wrapped (for example,...
Definition: Swagger.qm.dox.h:2568
*string name
Replaces the name of the element/attribute used for the described schema property.
Definition: Swagger.qm.dox.h:2552
bool attribute
Declares whether the property definition translates to an attribute instead of an element....
Definition: Swagger.qm.dox.h:2561
string sprintf(string fmt,...)
main namespace for all public Swagger declarations
Definition: Swagger.qm.dox.h:235
const CollectionFormats
allowed collection formats
Definition: Swagger.qm.dox.h:244
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:1736
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:1819
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:239
const ValidStringFormatsHash
A hash of valid string type formats.
Definition: Swagger.qm.dox.h:256
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:1768
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:254
const ParameterCollectionFormats
valid parameter collection formats
Definition: Swagger.qm.dox.h:248
const SerializationModules
modules available for data serialization and/or deserialization
Definition: Swagger.qm.dox.h:302
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:241
const ValidIntFormatsHash
A hash of valid integer type formats.
Definition: Swagger.qm.dox.h:252
const MimeDataTypes
supported mime types for de/serializing data
Definition: Swagger.qm.dox.h:267
const MimeContentTypes
MIME types for data serialization.
Definition: Swagger.qm.dox.h:305
const ValidIntFormats
Valid integer type formats.
Definition: Swagger.qm.dox.h:237
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:259
*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:1826
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:308