285 "serialize": \make_yaml(),
286 "serialize_verbose":
string sub (
auto val) {
return make_yaml(val, BlockStyle);},
287 "deserialize": \parse_yaml(),
295 "serialize": \make_json(),
296 "serialize_verbose":
string sub (
auto val) {
return make_json(val, JGF_ADD_FORMATTING);},
297 "deserialize": \parse_json(),
310 "serialize": \make_xml(),
311 "serialize_verbose":
string sub (
auto val) {
return make_xml(val, XGF_ADD_FORMATTING);},
312 "deserialize": \parse_xml(),
316 # Content-Type: application/x-www-form-urlencoded
317 MimeTypeFormUrlEncoded: (
318 "serialize": \mime_get_form_urlencoded_string(),
319 "serialize_verbose": \mime_get_form_urlencoded_string(),
320 "deserialize": \mime_parse_form_urlencoded_string(),
322 # Content-Type: multipart/form-data (handled manually)
323 MimeTypeMultipartFormData: {},
407 hash<string, bool>
enum;
430 private check(
bool serialize,
bool request,
string type, *
string format, *
SchemaObject items,
string path,
431 string method,
string name, reference<auto> value) {
433 if (type ==
'array');
435 checkIntern(serialize, request, type, format, path, method, name, value, \value);
440 checkStringIntern(
string path,
string method,
string name,
string value);
444 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
445 string name, list<auto> v, reference<list> value) {
446 if (type !=
"list" && type !=
"any")
447 throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an array (%y), but "
448 "the expected type is %y", name, path, method, v, type);
451 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
452 string name, hash<auto> v, reference<hash> value) {
453 if (type !=
"file" && type !=
"any")
454 throw "SCHEMA-VALIDATION-ERROR", sprintf(
"Parameter %y for path %y and method %y is an object (%y), but "
455 "the expected type is %y", name, path, method, v, type);
458 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
459 string name,
int v, reference<auto> value) {
461 if (type ==
'number');
463 if (type !=
"integer" && type !=
"any")
471 if (
enum && !
enum{value})
472 throw "SCHEMA-VALIDATION-ERROR",
473 sprintf(
"Parameter %y for path %y and method %y does not fit the enumerated values (enum: %y, actual: %d)",
474 name, path, method, keys
enum, value);
478 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, number v, reference<number> value);
483 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
float v, reference<number> value);
488 checkInternNumber(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
auto v, reference<auto> value);
493 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
494 string name, binary v, reference value) {
495 if (type !=
"string" && type !=
"any")
503 private checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
504 string name,
string v, reference<auto> value) {
505 if (type !=
'string' && type !=
'any');
515 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, date v, reference value);
520 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name,
bool v, reference<bool> value);
525 checkIntern(
bool serialize,
bool request,
string type, *
string format,
string path,
string method,
string name, nothing v, reference<nothing> value);
531 reference<softlist<auto>> value) {
533 throw "SCHEMA-VALIDATION-ERROR",
534 sprintf(
"Parameter %y for path %y and method %y has too many items (maxItems: %d, actual: %d)",
535 name, path, method,
maxItems, value.size());
537 throw "SCHEMA-VALIDATION-ERROR",
538 sprintf(
"Parameter %y for path %y and method %y has too few items (minItems: %d, actual: %d)",
539 name, path, method,
minItems, value.size());
546 foreach auto val in (\value) {
547 items.
check(serialize, request, path, method, name, \val);
549 throw "SCHEMA-VALIDATION-ERROR",
550 sprintf(
"%s %s: Array parameter %y does not have unique items",
784 hash<string, hash<string, SchemaObject>>
so_map;
814 constructor(
string schema_source, hash<auto> oh, *hash<auto> opts) ;
838 AbstractRestSchemaValidator(logger);
847 *
int getParseFlags();
914 private hash<RestSchemaValidator::RestRequestClientInfo>
processRequestImpl(
string method,
string path,
auto body,
915 *hash<auto> headers, *softlist<string> content_types) {
931 private hash<RestSchemaValidator::RestRequestServerInfo>
parseRequestImpl(
string method,
string path,
932 *data http_body, reference<hash> headers) {
935 if (exists http_body);
945 hash<UriQueryInfo> h = parse_uri_query(path);
946 method = method.lwr();
950 op.parseRequest(pio, \h, \body, \headers);
951 return <RestRequestServerInfo>{
954 "path_args": h.path_params,
979 private hash<HttpResponseInfo>
processResponseImpl(
string method,
string path,
int code,
auto response_body,
980 *hash<auto> headers, *softlist<string> content_types) {
996 private hash<RestSchemaValidator::RestResponseClientInfo>
parseResponseImpl(
string method,
string path,
int code,
997 *data response_body, hash<auto> hdr) {
1001 method = method.lwr();
1005 hash<RestResponseClientInfo> rv((
1010 *
string content = hdr.
"content-type" ?? hdr.
"Content-Type";
1013 if (exists response_body && content);
1016 hash<string, bool> mime_types;
1017 op.validateResponse(method, path, pio, code, \rv.
body, \mime_types, False);
1019 if (content && !mime_types{content})
1020 throw "DESERIALIZATION-ERROR", sprintf(
"%s %s: content type %y is not accepted by this operation; "
1021 "accepted content types: %y", method.upr(), path, content, keys mime_types);
1077 *softlist<string> content_types) {
1081 method = method.lwr();
1086 hash<RestExampleRequestInfo> rv = op.getExampleRequest(method, path, pio, self, \body);
1114 *softlist<string> content_types) {
1118 method = method.lwr();
1123 hash<RestExampleResponseInfo> rv = op.getExampleResponse(method, path, code, \body);
1188 hash<UriQueryInfo> h = parse_uri_query(path);
1191 method = method.lwr();
1196 hash<string, bool> mime_types;
1199 hash<RestRequestClientInfo> rv((
1200 "uri_path": h.method,
1217 if (!exists content_types);
1220 foreach string content in (content_types);
1229 throw "SERIALIZATION-ERROR", sprintf(
"%s %s: message body cannot be serialized; requested MIME type(s): "
1230 "%y; available MIME types: %y; available serialization modules: %y", method.upr(), path,
1257 auto response_body, *hash<auto> headers, *softlist<string> content_types,
bool compact_serialization) {
1259 method = method.lwr();
1264 hash<string, bool> mime_types;
1265 op.validateResponse(method, path, pio, code, \response_body, \mime_types);
1267 hash<HttpResponseInfo> rv((
1272 if (exists response_body);
1288 *hash<auto> headers) {
1290 if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
1294 *list<string> ct = map $1, keys headers, $1 ==1i;
1297 if (ct && ct.size() == 1 && !
MimeDataTypes{headers{ct[0]}});
1312 *hash<auto> headers) {
1314 if (body.typeCode() != NT_BINARY && body.typeCode() != NT_STRING)
1318 *list<string> ct = map $1, keys headers, $1 ==1i;
1321 if (ct && ct.size() == 1);
1335 hash<string, bool> mime_types, *list<auto> content_types) {
1337 if (body.typeCode() != NT_STRING)
1341 if (!mime_types.
"text/plain")
1348 resp.hdr.
"Content-Type" =
"text/plain";
1470 constructor(
string full_path, list<auto> l,
int offset, hash<auto> oh);
1646 bool deprec = False;
1747 reference<hash> headers, *reference<hash<string, bool>> mime_types) {
1749 foreach string key in (keys h.params);
1753 foreach string key in (keys headers);
1760 body_po.
check(serialize, True, path, method,
"body", \body);
1761 }
else if (formData) {
1762 foreach hash<auto> i in (formData.pairIterator()) {
1763 i.value.check(serialize, True, path, method,
"formData." + i.key, \body{i.key});
1766 error(
"SCHEMA-VALIDATION-ERROR",
"No message body is accepted; body keys passed: %y", keys body);
1771 foreach string param in (path =~ x/{([^}]+)}/g);
1798 reference<hash<string, bool>> mime_types,
bool deserialize = True) {
1801 else if (exists res && exists response_body);
1831 hash<RestExampleRequestInfo> rv();
1836 getQoreExampleParams(\query, \rv.hdr, parameters);
1837 getQoreExampleParams(\query, \rv.hdr, pio.
parameters, parameters);
1839 rv.request_uri = sprintf(
"%s %s HTTP/1.1", method.upr(),
1840 make_uri_query(cast<hash<UriQueryInfo>>({
"method": path,
"params": query})));
1845 rbody = body_po.getExampleValue();
1870 hash<RestExampleResponseInfo>
getExampleResponse(
string method,
string path,
int code, reference<auto> body);
1873 private getQoreExampleParams(reference<hash<auto>> query, reference<hash<auto>> headers,
1874 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1875 foreach hash<auto> ph in (parameters.pairIterator());
1880 private doDefaultParams(reference<hash<UriQueryInfo>> h, reference<hash> headers, reference<auto> body,
1881 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1882 foreach hash<auto> ph in (parameters.pairIterator());
1888 hash<string, AbstractParameterObject> parameters, *hash<string, AbstractParameterObject> child_params) {
1889 foreach hash<auto> ph in (parameters.pairIterator());
1998 const OtherParameterMap = ...;
2015 abstract
check(
bool serialize,
bool request,
string path,
string method,
string name, reference value);
2044 check(
bool serialize,
bool request,
string path,
string method,
string name, reference value);
2052 auto getExampleValue();
2132 check(
bool serialize,
bool request,
string path,
string method,
string name, reference<auto> value);
2178 constructor(
string path,
string method, hash<auto> oh, SwaggerSchema swagger) ;
2466 constructor(
string name, hash<auto> oh, SwaggerSchema swagger, *
string hash_str, *
bool require_items)
2471 string getQoreExample(reference<hash<RestQoreExampleCodeInfo>> rv,
string name,
bool decl);
2479 check(
bool serialize,
bool request,
string path,
string method,
string name, reference<auto> value);
2483 checkObjectProperty(
string name,
string prop);
2489 string name, hash<auto> v, reference<hash<auto>> value) {
2490 if (
type !=
"object" &&
type !=
"any")
2491 throwInvalidType(
name,
"object",
type, v);
2494 map $1.checkIntern(serialize, request,
type, NOTHING, path, method,
name, v, \value),
allOf;
2506 foreach string prop in (keys
required);
2736 const SwaggerListToStringSet = -1;
2738 const SwaggerListToAnySet = -2;
2739 const SwaggerListToHashOfStrings = -3;
2741 const TypeMap = ...;
2755 required_field(
string objType, hash<auto> oh,
string name,
int typeCode, reference<auto> target, *
int opt_flags);
2769 required_field(
string objType, hash<auto> oh,
string name, hash<string, bool> typeCodes, reference<auto> target);
2784 bool optional_field(
string objType, hash<auto> oh,
string name,
int typeCode, reference<auto> target,
2786 if (!oh.hasKey(name))
2788 auto val = oh{name};
2789 if (check_type_code(objType, oh, name, val, typeCode, opt_flags));
2791 get_value(objType, name, typeCode, val, \target);
2807 bool optional_field(
string objType, hash<auto> oh,
string name, hash<string, bool> typeCodes,
2808 reference<auto> target) {
2809 if (!oh.hasKey(name))
2811 auto val = oh{name};
2812 if (!typeCodes{val.typeCode()})
2813 throw "INVALID-FIELD-TYPE",
sprintf(
"%s Object%s: %y field has invalid type %y", objType,
2814 oh.name ?
sprintf(
" %y", oh.name) :
"", name, val.type());
2815 get_value(objType, name, val.typeCode(), val, \target);
2820 *
bool check_type_code(
string objType, hash<auto> oh,
string name,
auto val,
int typeCode, *
int opt_flags);
2824 get_value(
string objType,
string name,
int typeCode,
auto val, reference<auto> target);
2828 string get_qore_type(
string name,
string type, *
string format, *
SchemaObject items);
Describes a single operation parameter.
Definition: Swagger.qm.dox.h:1966
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:1977
auto getDefaultValue()
returns the default value of the parameter (default: NOTHING)
string inLoc
Required. The location of the parameter.
Definition: Swagger.qm.dox.h:1984
*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:1987
bool required
Determines whether this parameter is mandatory.
Definition: Swagger.qm.dox.h:1995
constructor(hash< auto > oh, *int opt_flags)
Constructor.
AbstractParameterObject specialization for "body" parameters.
Definition: Swagger.qm.dox.h:2026
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:2030
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:1909
string url
Required. The URL for the target documentation. Value MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1916
*string desc
A short description of the target documentation. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1913
constructor(hash< auto > oh)
Constructor.
AbstractParameterObject specialization for parameters other than "body".
Definition: Swagger.qm.dox.h:2057
const ParameterTypes
valid parameter types
Definition: Swagger.qm.dox.h:2113
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:2100
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:2073
bool allowEmptyValue
Sets the ability to pass empty-valued parameters.
Definition: Swagger.qm.dox.h:2081
auto defaultVal
Declares the value of the parameter that the server will use if none is provided.
Definition: Swagger.qm.dox.h:2110
string type
Required. The type of the parameter.
Definition: Swagger.qm.dox.h:2070
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:2084
items schema object for non-body parameters
Definition: Swagger.qm.dox.h:2538
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:2555
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:2183
hash< auto > headers
A hash of headers that are (can be) sent with the response.
Definition: Swagger.qm.dox.h:2202
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:2196
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:2187
hash examples
A hash of example response messages.
Definition: Swagger.qm.dox.h:2212
contains the possible responses for an operation
Definition: Swagger.qm.dox.h:2151
hash< string, ResponseObject > responses
Definition: Swagger.qm.dox.h:2165
ResponseObject defaultResp
Definition: Swagger.qm.dox.h:2158
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
defines an object in a schema
Definition: Swagger.qm.dox.h:2326
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:2448
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:2330
auto additionalProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.4.
Definition: Swagger.qm.dox.h:2377
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:2355
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:2340
bool nullable
extension that allows types to be nullable
Definition: Swagger.qm.dox.h:2363
*string discriminator
Adds support for polymorphism.
Definition: Swagger.qm.dox.h:2404
const ScalarTypes
valid scalar types
Definition: Swagger.qm.dox.h:2444
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:2383
*int minProperties
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.2.
Definition: Swagger.qm.dox.h:2358
auto defaultVal
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2.
Definition: Swagger.qm.dox.h:2352
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:2488
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:2337
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:2370
*ExternalDocumentationObject externalDocs
Additional external documentation for this schema.
Definition: Swagger.qm.dox.h:2438
*XmlObject xml
This MAY be used only on properties schemas. It has no effect on root schemas.
Definition: Swagger.qm.dox.h:2435
bool readOnly
Relevant only for Schema "properties" definitions. Declares the property as "read only".
Definition: Swagger.qm.dox.h:2414
*SchemaObject items
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.1.
Definition: Swagger.qm.dox.h:2349
*string title
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2343
auto example
A free-form property to include an example of an instance for this schema.
Definition: Swagger.qm.dox.h:2441
*string desc
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.1.
Definition: Swagger.qm.dox.h:2346
Lists the available scopes for an OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2713
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:2720
constructor(hash< auto > oh)
Constructor.
Allows the definition of a security scheme that can be used by the operations.
Definition: Swagger.qm.dox.h:2647
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:2651
*string desc
A short description for security scheme.
Definition: Swagger.qm.dox.h:2654
*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:2680
*ScopesObject scopes
The available scopes for the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2696
*string inLoc
The location of the API key. Valid values are "query" or "header".
Definition: Swagger.qm.dox.h:2666
*string name
The name of the header or query parameter to be used.
Definition: Swagger.qm.dox.h:2660
*string flow
The flow used by the OAuth2 security scheme.
Definition: Swagger.qm.dox.h:2674
*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:2686
The object provides metadata about the API. The metadata can be used by the clients if needed,...
Definition: Swagger.qm.dox.h:1360
string version
Required. Provides the version of the application API (not to be confused with the specification vers...
Definition: Swagger.qm.dox.h:1373
constructor(hash< auto > oh)
Constructor.
string title
Required. The title of the application.
Definition: Swagger.qm.dox.h:1364
*LicenseObject license
The license information for the exposed API.
Definition: Swagger.qm.dox.h:1379
*ContactObject contact
The contact information for the exposed API.
Definition: Swagger.qm.dox.h:1376
*string termsOfService
The Terms of Service for the API.
Definition: Swagger.qm.dox.h:1370
*string desc
A short description of the application. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1367
License information for the exposed API.
Definition: Swagger.qm.dox.h:1416
constructor(hash< auto > oh)
Constructor.
string name
Required. The license name used for the API.
Definition: Swagger.qm.dox.h:1420
*string url
A URL to the license used for the API. MUST be in the format of a URL.
Definition: Swagger.qm.dox.h:1423
Base class for the Swagger specification objects, wrapping the vendor extensions.
Definition: Swagger.qm.dox.h:337
initialize(hash< auto > oh)
Initialize.
hash< auto > vendorExtensions
Allows extensions to the Swagger Schema.
Definition: Swagger.qm.dox.h:345
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:1620
list< string > schemes
The transfer protocol for the operation.
Definition: Swagger.qm.dox.h:1701
*string desc
A verbose explanation of the operation behavior. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:1639
hash< string, bool > produces
A hash of MIME types (strings) the operation can produce.
Definition: Swagger.qm.dox.h:1674
*ExternalDocumentationObject externalDocs
Additional external documentation for this operation.
Definition: Swagger.qm.dox.h:1649
string path
the URI path for the operation
Definition: Swagger.qm.dox.h:1624
*string summary
A short summary of what the operation does.
Definition: Swagger.qm.dox.h:1636
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:1627
AbstractParameterObject body
body parameter; if defined for this operation, formData parameter will be excluded
Definition: Swagger.qm.dox.h:1688
*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:1746
ResponsesObject responses
Required. The list of possible responses as they are returned from executing this operation.
Definition: Swagger.qm.dox.h:1694
list tags
A list of tags (strings or TagObjects) for API documentation control.
Definition: Swagger.qm.dox.h:1633
*string operationId
Unique string used to identify the operation.
Definition: Swagger.qm.dox.h:1658
hash< string, AbstractParameterObject > formData
formData parameter; if defined for this operation, body parameter will be excluded
Definition: Swagger.qm.dox.h:1691
list< hash< string, list< string > > > security
A declaration of which security schemes are applied for this operation.
Definition: Swagger.qm.dox.h:1716
hash< string, bool > consumes
A list of MIME types (strings) the operation can consume.
Definition: Swagger.qm.dox.h:1666
constructor(string path, string method, hash< auto > oh, SwaggerSchema swagger)
Constructor.
Holds the relative paths to the individual endpoints.
Definition: Swagger.qm.dox.h:1443
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:1460
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:1451
*PathComponent wildcard
if there is a wildcard to a PathComponent
Definition: Swagger.qm.dox.h:1454
string pfx
path prefix
Definition: Swagger.qm.dox.h:1448
*PathItemObject pio
the PathItemObject associated with this path (if any)
Definition: Swagger.qm.dox.h:1457
Describes the operations available on a single path.
Definition: Swagger.qm.dox.h:1546
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:1555
hash< string, OperationObject > operations
A hash of OperationObjects correspoding to different methods.
Definition: Swagger.qm.dox.h:1584
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:1570
constructor(string path, hash< auto > oh, SwaggerSchema swagger)
Constructor.
This class stores the path tree for URI path matching.
Definition: Swagger.qm.dox.h:1500
*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:1505
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:370
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:503
*bool exclusiveMin
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
Definition: Swagger.qm.dox.h:383
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:398
*float multipleOf
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.1.
Definition: Swagger.qm.dox.h:410
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:430
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:395
*int minLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.2.
Definition: Swagger.qm.dox.h:389
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:374
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:530
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:493
*int maxLength
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.1.
Definition: Swagger.qm.dox.h:386
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:380
*bool uniqueItems
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.4.
Definition: Swagger.qm.dox.h:401
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:377
*string pattern
See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3.
Definition: Swagger.qm.dox.h:392
Used for loading the Swagger definitions.
Definition: Swagger.qm.dox.h:570
static string detectSourceEncoding(string str)
tries to determine the Swagger schema source encoding automatically
static SwaggerSchema fromString(string swaggerSpecification, *bool json, *hash< auto > opts)
Load Swagger definition from a string.
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 fromUrl(string url, *bool json, *hash< auto > opts)
Load Swagger definition from a URL or file path.
static SwaggerSchema fromFile(string filepath, *hash< auto > opts)
Load Swagger definition from a file.
This is the root document object for the API specification. It combines what previously was the Resou...
Definition: Swagger.qm.dox.h:653
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:1076
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:1334
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:1183
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:1256
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:996
hash< string, bool > produces
A set of MIME types (strings) the APIs can produce.
Definition: Swagger.qm.dox.h:706
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:914
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:1311
hash< string, hash< string, SchemaObject > > so_map
maps name -> SHA1 hash of the config -> schema objects for recursive references
Definition: Swagger.qm.dox.h:784
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:790
*string def_path
the default path to use when retrieving external schema references
Definition: Swagger.qm.dox.h:770
hash< string, softlist< string > > security
A declaration of which security schemes are applied for the API as a whole.
Definition: Swagger.qm.dox.h:744
hash< string, ResponseObject > responses
Response definitions that can be used across operations. This property does not define global respons...
Definition: Swagger.qm.dox.h:724
*ExternalDocumentationObject externalDocs
Additional external documentation.
Definition: Swagger.qm.dox.h:759
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:775
*string basePath
The base path on which the API is served, which is relative to the host.
Definition: Swagger.qm.dox.h:684
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:778
hash< string, SecuritySchemeObject > securityDefinitions
Security scheme definitions that can be used across the specification.
Definition: Swagger.qm.dox.h:730
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:979
*int opt_flags
parse option flags
Definition: Swagger.qm.dox.h:781
SchemaObject processDefinition(string key, auto value)
Processes a schema definition.
string swaggerSpec
Swagger Specification version being used.
Definition: Swagger.qm.dox.h:661
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:1113
InfoObject info
Required. Provides metadata about the API. The metadata can be used by the clients if needed.
Definition: Swagger.qm.dox.h:664
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:767
const SwaggerOptions
SwaggerSchema options.
Definition: Swagger.qm.dox.h:762
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:931
*string host
The host (name or IP) serving the API.
Definition: Swagger.qm.dox.h:676
hash< string, bool > consumes
A set of MIME types (strings) the APIs can consume.
Definition: Swagger.qm.dox.h:699
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:1287
hash< string, bool > schemes
The transfer protocol of the API.
Definition: Swagger.qm.dox.h:692
PathsObject paths
Required. The available paths and operations for the API.
Definition: Swagger.qm.dox.h:667
list< TagObject > tags
A list of tags used by the specification with additional metadata.
Definition: Swagger.qm.dox.h:756
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:2302
constructor(hash< auto > oh)
Constructor.
*ExternalDocumentationObject externalDocs
Additional external documentation for this tag.
Definition: Swagger.qm.dox.h:2312
*string desc
A short description for the tag. GFM syntax can be used for rich text representation.
Definition: Swagger.qm.dox.h:2309
string name
Required. The name of the tag.
Definition: Swagger.qm.dox.h:2306
A metadata object that allows for more fine-tuned XML model definitions.
Definition: Swagger.qm.dox.h:2602
*string ns
The URL of the namespace definition. Value SHOULD be in the form of a URL.
Definition: Swagger.qm.dox.h:2616
constructor(hash< auto > oh)
Constructor.
*string prefix
The prefix to be used for the name.
Definition: Swagger.qm.dox.h:2619
bool wrapped
MAY be used only for an array definition. Signifies whether the array is wrapped (for example,...
Definition: Swagger.qm.dox.h:2629
*string name
Replaces the name of the element/attribute used for the described schema property.
Definition: Swagger.qm.dox.h:2613
bool attribute
Declares whether the property definition translates to an attribute instead of an element....
Definition: Swagger.qm.dox.h:2622
const LM_IGNORE_INVALID_REQUIRED
parse option: ignore invalid "required" properties
Definition: Swagger.qm.dox.h:251
const LM_ALL
parse options: all options
Definition: Swagger.qm.dox.h:257
const LM_ACCEPT_INVALID_BODY_PARAMS
parse option: reconstruct invalid body parameters
Definition: Swagger.qm.dox.h:254
const LM_LAX_COLLECTIONFORMAT
parse option: allow collectionFormat on non-array types
Definition: Swagger.qm.dox.h:248
const LM_IGNORE_MISSING_REQUIRED
Definition: Swagger.qm.dox.h:245
string sprintf(string fmt,...)
main namespace for all public Swagger declarations
Definition: Swagger.qm.dox.h:239
const CollectionFormats
allowed collection formats
Definition: Swagger.qm.dox.h:269
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:1797
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:1880
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:264
const ValidStringFormatsHash
A hash of valid string type formats.
Definition: Swagger.qm.dox.h:281
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:1829
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:279
const ParameterCollectionFormats
valid parameter collection formats
Definition: Swagger.qm.dox.h:273
const SerializationModules
modules available for data serialization and/or deserialization
Definition: Swagger.qm.dox.h:327
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:266
const ValidIntFormatsHash
A hash of valid integer type formats.
Definition: Swagger.qm.dox.h:277
const MimeDataTypes
supported mime types for de/serializing data
Definition: Swagger.qm.dox.h:292
const MimeContentTypes
MIME types for data serialization.
Definition: Swagger.qm.dox.h:330
const ValidIntFormats
Valid integer type formats.
Definition: Swagger.qm.dox.h:262
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:284
*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:1887
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:333