class Link(JsonModel): operationRef = JsonModel.field(str) operationid = JsonModel.field(str) parameters = JsonModel.dict(Any) requestBody = JsonModel.field(Any) description = JsonModel.field(str) server = JsonModel.field(Server)
class Type1(JsonModel, RefItem): ref = JsonModel.field(str) name = JsonModel.field(str) description = JsonModel.field(str) class Meta(): required_fields = ['ref', 'name'] reference_field = 'ref'
class OpenApi(JsonModel): openapi = JsonModel.field(str, required=True) info = JsonModel.field(Info, required=True) servers = JsonModel.list(Server) paths = JsonModel.dict(PathItem, required=True) components = JsonModel.field(Components) security = JsonModel.list(SecurityRequirement) tags = JsonModel.list(Tag) externalDocs = JsonModel.field(ExternalDocs)
class Parameters(JsonModel): name = JsonModel.field(str, required=True) _in = JsonModel.field(str, alias='in', required=True, choices=['query', 'header', 'path', 'cookie']) description = JsonModel.field(str) required = JsonModel.field(bool) deprecated = JsonModel.field(bool) allowEmptyValue = JsonModel.field(bool) style = JsonModel.field(str) explode = JsonModel.field(bool) allowReserved = JsonModel.field(bool) schema = JsonModel.field(oneOf=[Schema, Reference])
class SecurityScheme(JsonModel): type = JsonModel.field(str, required=True) description = JsonModel.field(str) name = JsonModel.field(str) _in = JsonModel.field(str, alias='in') scheme = JsonModel.field(str) bearerFormat = JsonModel.field(str) flows = JsonModel.field(OAuthFlows) openIdConnectUrl = JsonModel.field(str)
class Header(JsonModel): description = JsonModel.field(str) required = JsonModel.field(bool) deprecated = JsonModel.field(bool) allowEmptyValue = JsonModel.field(bool) style = JsonModel.field(str) explode = JsonModel.field(bool) allowReserved = JsonModel.field(bool) schema = JsonModel.field('Schema') content = JsonModel.dict('MediaType')
class MetaType(JsonModel): name = JsonModel.field(str) ref_type = JsonModel.field(str) class Meta(): required_fields = ['name'] def __init__(self, *args, **kw): super(MetaType, self).__init__(*args, **kw) if not self.ref_type: self.ref_type = self.name.split('.')[-1] self.type = import_class(self.name) @staticmethod def from_class(cls): return MetaType(name=cls.__name__)
class Info(JsonModel): title = JsonModel.field(str, required=True) description = JsonModel.field(str) termsOfService = JsonModel.field(str) contact = JsonModel.field(Contact) license = JsonModel.field(License) version = JsonModel.field(str, required=True)
class Operation(JsonModel): tags = JsonModel.list(str) summary = JsonModel.field(str) description = JsonModel.field(str) externalDocs = JsonModel.field(ExternalDocs) operationid = JsonModel.field(str) parameters = JsonModel.list(Parameter) requestBody = JsonModel.field(RequestBody) responses = JsonModel.dict(Response, required=True) callbacks = JsonModel.dict(Callback, required=True) deprecated = JsonModel.field(bool) security = JsonModel.list(Any) servers = JsonModel.list(Server)
class Reference(JsonModel): _ref = JsonModel.field(str, '$ref')
class MediaType(JsonModel): schema = JsonModel.field('Schema') example = JsonModel.field(Any) examples = JsonModel.list(Example) encoding = JsonModel.dict(Encoding)
class Xml(JsonModel): name = JsonModel.field(str) namespace = JsonModel.field(str) prefix = JsonModel.field(str) attribute = JsonModel.field(bool) wrapped = JsonModel.field(bool)
class Parameter(JsonModel): name = JsonModel.field(str, required=True) _in = JsonModel.field(str, alias='in', required=True, choices=['query', 'header', 'path', 'cookie']) description = JsonModel.field(str) required = JsonModel.field(bool) deprecated = JsonModel.field(bool) allowEmptyValue = JsonModel.field(bool) style = JsonModel.field(str) explode = JsonModel.field(bool) allowReserved = JsonModel.field(bool) schema = JsonModel.field(Schema) example = JsonModel.field(Any) examples = JsonModel.dict(Example) content = JsonModel.dict(MediaType)
class OAuthFlows(JsonModel): implicit = JsonModel.field(OAuthFlow) password = JsonModel.field(OAuthFlow) clientCredentials = JsonModel.field(OAuthFlow) authorizationCode = JsonModel.field(OAuthFlow)
class Server(JsonModel): url = JsonModel.field(str) description = JsonModel.field(str) variables = JsonModel.dict(ServerVariable)
class OAuthFlow(JsonModel): authorizationUrl = JsonModel.field(str) tokenUrl = JsonModel.field(str) refreshUrl = JsonModel.field(str) scopes = JsonModel.dict(str)
class Contact(JsonModel): name = JsonModel.field(str) url = JsonModel.field(str) email = JsonModel.field(str)
class License(JsonModel): name = JsonModel.field(str) url = JsonModel.field(str)
class RequestBody(JsonModel): description = JsonModel.field(str) content = JsonModel.dict(MediaType, required=True) required = JsonModel.field(bool)
class Schema(JsonModel): id = JsonModel.field(str) title = JsonModel.field(str) multipleOf = JsonModel.field(int) maximum = JsonModel.field(int) exclusiveMaximum = JsonModel.field(int) minimum = JsonModel.field(int) exclusiveMinimum = JsonModel.field(int) maxLength = JsonModel.field(int) minLength = JsonModel.field(int) pattern = JsonModel.field(str) maxItems = JsonModel.field(int) minItems = JsonModel.field(int) uniqueItems = JsonModel.field(bool) maxProperties = JsonModel.field(int) minPropoerties = JsonModel.field(int) required = JsonModel.list(str) enum = JsonModel.list(str) allOf = JsonModel.list('json_api.model.Schema') anyOf = JsonModel.list('json_api.model.Schema') oneOf = JsonModel.list('json_api.model.Schema') _not = JsonModel.list('json_api.model.Schema', 'not') items = JsonModel.field('json_api.model.Schema') properties = JsonModel.dict('json_api.model.Schema') additionalProperties = JsonModel.dict('json_api.model.Schema') description = JsonModel.field(str) format = JsonModel.field(str) nullable = JsonModel.field(bool) readOnly = JsonModel.field(bool) writeOnly = JsonModel.field(bool) xml = JsonModel.field(Xml) externalDocs = JsonModel.field(ExternalDocs) deprecated = JsonModel.field(bool)
class ExternalDocs(JsonModel): description = JsonModel.field(str) url = JsonModel.field(str, required=True)
class Encoding(JsonModel): contentType = JsonModel.field(str) headers = JsonModel.dict(Header) style = JsonModel.field(str) explode = JsonModel.field(bool) allowReserved = JsonModel.field(bool)
class Discriminator(JsonModel): propertyName = JsonModel.field(str) mapping = JsonModel.dict(str)
class PathItem(JsonModel): _ref = JsonModel.field(str, '$ref') summary = JsonModel.field(str) description = JsonModel.field(str) get = JsonModel.field(Operation) put = JsonModel.field(Operation) post = JsonModel.field(Operation) delete = JsonModel.field(Operation) options = JsonModel.field(Operation) head = JsonModel.field(Operation) patch = JsonModel.field(Operation) trace = JsonModel.field(Operation) servers = JsonModel.list(Server) parameters = JsonModel.list(Parameter)
class Example(JsonModel): summary = JsonModel.field(str) description = JsonModel.field(str) value = JsonModel.field(Any) externalValue = JsonModel.field(str)
class Response(JsonModel): description = JsonModel.field(str, required=True) headers = JsonModel.dict(Header) content = JsonModel.dict(MediaType) links = JsonModel.dict(Link)
class Tag(JsonModel): name = JsonModel.field(str, required=True) description = JsonModel.field(str) externalDocs = JsonModel.field(ExternalDocs)