-
Bug
-
Resolution: Done
-
Normal
-
None
The OpenAPI spec for the Quickstarts API fails validation. This prevents us from fixing the current API tests because they depend on a generated client.
Steps to reproduce:
pip install openapi-spec-validator openapi.json
Failure Output:
iqe_quickstarts/data/api.quickstarts.quickstarts.spec.json: Validation Error: {'Account': {'description': 'Account number', 'in': 'query', 'name': 'account', 'required': True, 'schema': {'type': 'string'}}, 'Application': {'description': 'If set, content is associated with a specific CRC application', 'explode': True, 'in': 'query', 'name': 'application', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Bundle': {'description': 'If set, content is associated with a specific CRC bundle', 'explode': True, 'in': 'query', 'name': 'bundle', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Content': {'description': 'If set, content is associated with a specific CRC content', 'explode': True, 'in': 'query', 'name': 'content', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Id': {'description': 'identifier', 'in': 'path', 'name': 'id', 'required': True, 'schema': {'type': 'integer'}}, 'Limit': {'description': 'Pagination limit', 'explode': True, 'in': 'query', 'name': 'limit', 'required': False, 'schema': {'type': 'integer'}, 'style': 'form'}, 'Name': {'description': 'Search content by name', 'explode': True, 'in': 'query', 'name': 'name', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Offset': {'description': 'Pagination offset', 'explode': True, 'in': 'query', 'name': 'offset', 'required': False, 'schema': {'type': 'integer'}, 'style': 'form'}, 'ProductFamilies': {'description': 'If set, content is associated with a specific CRC product families', 'explode': True, 'in': 'query', 'name': 'product-families', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'TopicName': {'description': 'identifier', 'in': 'path', 'name': 'topicname', 'required': True, 'schema': {'type': 'string'}}, 'UseCase': {'description': 'If set, content is associated with a specific CRC use case', 'explode': True, 'in': 'query', 'name': 'use-case', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}} is not valid under any of the given schemasFailed validating 'oneOf' in schema['properties']['components']['properties']['schemas']['patternProperties']['^[a-zA-Z0-9\\.\\-_]+$']: {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}]}On instance['components']['schemas']['queryParams']: {'Account': {'description': 'Account number', 'in': 'query', 'name': 'account', 'required': True, 'schema': {'type': 'string'}}, 'Application': {'description': 'If set, content is associated with a ' 'specific CRC application', 'explode': True, 'in': 'query', 'name': 'application', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Bundle': {'description': 'If set, content is associated with a ' 'specific CRC bundle', 'explode': True, 'in': 'query', 'name': 'bundle', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Content': {'description': 'If set, content is associated with a ' 'specific CRC content', 'explode': True, 'in': 'query', 'name': 'content', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Id': {'description': 'identifier', 'in': 'path', 'name': 'id', 'required': True, 'schema': {'type': 'integer'}}, 'Limit': {'description': 'Pagination limit', 'explode': True, 'in': 'query', 'name': 'limit', 'required': False, 'schema': {'type': 'integer'}, 'style': 'form'}, 'Name': {'description': 'Search content by name', 'explode': True, 'in': 'query', 'name': 'name', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Offset': {'description': 'Pagination offset', 'explode': True, 'in': 'query', 'name': 'offset', 'required': False, 'schema': {'type': 'integer'}, 'style': 'form'}, 'ProductFamilies': {'description': 'If set, content is associated ' 'with a specific CRC product ' 'families', 'explode': True, 'in': 'query', 'name': 'product-families', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'TopicName': {'description': 'identifier', 'in': 'path', 'name': 'topicname', 'required': True, 'schema': {'type': 'string'}}, 'UseCase': {'description': 'If set, content is associated with a ' 'specific CRC use case', 'explode': True, 'in': 'query', 'name': 'use-case', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}} # Probably due to this subschema error## 'Account', 'Application', 'Bundle', 'Content', 'Id', 'Limit', 'Name', 'Offset', 'ProductFamilies', 'TopicName', 'UseCase' do not match any of the regexes: '^x-'Failed validating 'additionalProperties' in schema[0]: {'type': 'object', 'properties': {'title': {'type': 'string'}, 'multipleOf': {'type': 'number', 'minimum': 0, 'exclusiveMinimum': True}, 'maximum': {'type': 'number'}, 'exclusiveMaximum': {'type': 'boolean', 'default': False}, 'minimum': {'type': 'number'}, 'exclusiveMinimum': {'type': 'boolean', 'default': False}, 'maxLength': {'type': 'integer', 'minimum': 0}, 'minLength': {'type': 'integer', 'minimum': 0, 'default': 0}, 'pattern': {'type': 'string', 'format': 'regex'}, 'maxItems': {'type': 'integer', 'minimum': 0}, 'minItems': {'type': 'integer', 'minimum': 0, 'default': 0}, 'uniqueItems': {'type': 'boolean', 'default': False}, 'maxProperties': {'type': 'integer', 'minimum': 0}, 'minProperties': {'type': 'integer', 'minimum': 0, 'default': 0}, 'required': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'uniqueItems': True}, 'enum': {'type': 'array', 'items': {}, 'minItems': 1, 'uniqueItems': False}, 'type': {'type': 'string', 'enum': ['array', 'boolean', 'integer', 'number', 'object', 'string']}, 'not': {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}]}, 'allOf': {'type': 'array', 'items': {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}]}}, 'oneOf': {'type': 'array', 'items': {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}]}}, 'anyOf': {'type': 'array', 'items': {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}]}}, 'items': {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}]}, 'properties': {'type': 'object', 'additionalProperties': {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}]}}, 'additionalProperties': {'oneOf': [{'$ref': '#/definitions/Schema'}, {'$ref': '#/definitions/Reference'}, {'type': 'boolean'}], 'default': True}, 'description': {'type': 'string'}, 'format': {'type': 'string'}, 'default': {}, 'nullable': {'type': 'boolean', 'default': False}, 'discriminator': {'$ref': '#/definitions/Discriminator'}, 'readOnly': {'type': 'boolean', 'default': False}, 'writeOnly': {'type': 'boolean', 'default': False}, 'example': {}, 'externalDocs': {'$ref': '#/definitions/ExternalDocumentation'}, 'deprecated': {'type': 'boolean', 'default': False}, 'xml': {'$ref': '#/definitions/XML'}}, 'patternProperties': {'^x-': {}}, 'additionalProperties': False}On instance: {'Account': {'description': 'Account number', 'in': 'query', 'name': 'account', 'required': True, 'schema': {'type': 'string'}}, 'Application': {'description': 'If set, content is associated with a ' 'specific CRC application', 'explode': True, 'in': 'query', 'name': 'application', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Bundle': {'description': 'If set, content is associated with a ' 'specific CRC bundle', 'explode': True, 'in': 'query', 'name': 'bundle', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Content': {'description': 'If set, content is associated with a ' 'specific CRC content', 'explode': True, 'in': 'query', 'name': 'content', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Id': {'description': 'identifier', 'in': 'path', 'name': 'id', 'required': True, 'schema': {'type': 'integer'}}, 'Limit': {'description': 'Pagination limit', 'explode': True, 'in': 'query', 'name': 'limit', 'required': False, 'schema': {'type': 'integer'}, 'style': 'form'}, 'Name': {'description': 'Search content by name', 'explode': True, 'in': 'query', 'name': 'name', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'Offset': {'description': 'Pagination offset', 'explode': True, 'in': 'query', 'name': 'offset', 'required': False, 'schema': {'type': 'integer'}, 'style': 'form'}, 'ProductFamilies': {'description': 'If set, content is associated ' 'with a specific CRC product ' 'families', 'explode': True, 'in': 'query', 'name': 'product-families', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}, 'TopicName': {'description': 'identifier', 'in': 'path', 'name': 'topicname', 'required': True, 'schema': {'type': 'string'}}, 'UseCase': {'description': 'If set, content is associated with a ' 'specific CRC use case', 'explode': True, 'in': 'query', 'name': 'use-case', 'required': False, 'schema': {'type': 'string'}, 'style': 'form'}}(1 more subschemas errors, use --errors=all to see them.)