/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.16.74 * User agent: apibuilder app.apibuilder.io/apicollective/apibuilder-swagger/0.16.74/play_2_x_standalone_json */ package io.apibuilder.swagger.v0.models { sealed trait ParameterOrRef extends _root_.scala.Product with _root_.scala.Serializable sealed trait ResponseOrRef extends _root_.scala.Product with _root_.scala.Serializable final case class Contact( name: _root_.scala.Option[String] = None, url: _root_.scala.Option[String] = None, email: _root_.scala.Option[String] = None ) final case class ExternalDocumentation( description: _root_.scala.Option[String] = None, url: String ) /** * TODO: Can this be a union type with items? * * @param items NOTE: This is required if type is 'array' */ final case class Header( description: _root_.scala.Option[String] = None, `type`: io.apibuilder.swagger.v0.models.ItemsType, format: _root_.scala.Option[io.apibuilder.swagger.v0.models.FormatType] = None, items: _root_.scala.Option[io.apibuilder.swagger.v0.models.Items] = None, collectionFormat: _root_.scala.Option[io.apibuilder.swagger.v0.models.CollectionFormatType] = None, default: _root_.scala.Option[_root_.play.api.libs.json.JsObject] = None, maximum: _root_.scala.Option[Long] = None, exclusiveMaximum: _root_.scala.Option[Boolean] = None, minimum: _root_.scala.Option[Long] = None, exclusiveMinimum: _root_.scala.Option[Boolean] = None, maxLength: _root_.scala.Option[Int] = None, minLength: _root_.scala.Option[Int] = None, pattern: _root_.scala.Option[String] = None, maxItems: _root_.scala.Option[Int] = None, minItems: _root_.scala.Option[Int] = None, uniqueItems: _root_.scala.Option[Boolean] = None, `enum`: _root_.scala.Option[Seq[_root_.play.api.libs.json.JsObject]] = None, multipleOf: _root_.scala.Option[Long] = None ) final case class Info( title: String, description: _root_.scala.Option[String] = None, termsOfService: _root_.scala.Option[String] = None, contact: _root_.scala.Option[io.apibuilder.swagger.v0.models.Contact] = None, license: _root_.scala.Option[io.apibuilder.swagger.v0.models.License] = None, version: String ) /** * @param items NOTE: This is required if type is 'array' */ final case class Items( `type`: io.apibuilder.swagger.v0.models.ItemsType, format: _root_.scala.Option[io.apibuilder.swagger.v0.models.FormatType] = None, items: _root_.scala.Option[io.apibuilder.swagger.v0.models.Items] = None, collectionFormat: _root_.scala.Option[io.apibuilder.swagger.v0.models.CollectionFormatType] = None, default: _root_.scala.Option[_root_.play.api.libs.json.JsObject] = None, maximum: _root_.scala.Option[Long] = None, exclusiveMaximum: _root_.scala.Option[Boolean] = None, minimum: _root_.scala.Option[Long] = None, exclusiveMinimum: _root_.scala.Option[Boolean] = None, maxLength: _root_.scala.Option[Int] = None, minLength: _root_.scala.Option[Int] = None, pattern: _root_.scala.Option[String] = None, maxItems: _root_.scala.Option[Int] = None, minItems: _root_.scala.Option[Int] = None, uniqueItems: _root_.scala.Option[Boolean] = None, `enum`: _root_.scala.Option[Seq[_root_.play.api.libs.json.JsObject]] = None, multipleOf: _root_.scala.Option[Long] = None ) final case class License( name: String, url: _root_.scala.Option[String] = None ) final case class Operation( tags: _root_.scala.Option[Seq[String]] = None, summary: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, externalDocs: _root_.scala.Option[io.apibuilder.swagger.v0.models.ExternalDocumentation] = None, operationId: _root_.scala.Option[String] = None, consumes: _root_.scala.Option[Seq[String]] = None, produces: _root_.scala.Option[Seq[String]] = None, parameters: _root_.scala.Option[Seq[io.apibuilder.swagger.v0.models.ParameterOrRef]] = None, responses: Map[String, io.apibuilder.swagger.v0.models.ResponseOrRef], schemes: _root_.scala.Option[Seq[String]] = None, deprecated: _root_.scala.Option[Boolean] = None, security: _root_.scala.Option[Seq[Map[String, Seq[String]]]] = None ) /** * TODO: This might need to be a complex union type, given the different * requirements based on the 'in' property. * http://swagger.io/specification/#parameterObject */ final case class Parameter( name: String, in: io.apibuilder.swagger.v0.models.ParameterInType, description: _root_.scala.Option[String] = None, required: Boolean, schema: _root_.scala.Option[io.apibuilder.swagger.v0.models.Schema] = None, `type`: _root_.scala.Option[String] = None, format: _root_.scala.Option[String] = None, allowEmptyValue: _root_.scala.Option[Boolean] = None, items: _root_.scala.Option[io.apibuilder.swagger.v0.models.Items] = None, collectionFormat: _root_.scala.Option[io.apibuilder.swagger.v0.models.CollectionFormatType] = None, default: _root_.scala.Option[_root_.play.api.libs.json.JsObject] = None, maximum: _root_.scala.Option[Long] = None, exclusiveMaximum: _root_.scala.Option[Boolean] = None, minimum: _root_.scala.Option[Long] = None, exclusiveMinimum: _root_.scala.Option[Boolean] = None, maxLength: _root_.scala.Option[Int] = None, minLength: _root_.scala.Option[Int] = None, pattern: _root_.scala.Option[String] = None, maxItems: _root_.scala.Option[Int] = None, minItems: _root_.scala.Option[Int] = None, uniqueItems: _root_.scala.Option[Boolean] = None, `enum`: _root_.scala.Option[Seq[_root_.play.api.libs.json.JsObject]] = None, multipleOf: _root_.scala.Option[Long] = None ) extends ParameterOrRef /** * @param ref TODO: Needs to be named '$ref' */ final case class PathItem( ref: _root_.scala.Option[String] = None, get: _root_.scala.Option[io.apibuilder.swagger.v0.models.Operation] = None, put: _root_.scala.Option[io.apibuilder.swagger.v0.models.Operation] = None, post: _root_.scala.Option[io.apibuilder.swagger.v0.models.Operation] = None, delete: _root_.scala.Option[io.apibuilder.swagger.v0.models.Operation] = None, options: _root_.scala.Option[io.apibuilder.swagger.v0.models.Operation] = None, head: _root_.scala.Option[io.apibuilder.swagger.v0.models.Operation] = None, patch: _root_.scala.Option[io.apibuilder.swagger.v0.models.Operation] = None, parameters: _root_.scala.Option[Seq[io.apibuilder.swagger.v0.models.ParameterOrRef]] = None ) /** * @param ref TODO: Needs to be named '$ref' */ final case class Reference( ref: String ) extends ParameterOrRef with ResponseOrRef final case class Response( description: String, schema: _root_.scala.Option[io.apibuilder.swagger.v0.models.Schema] = None, headers: _root_.scala.Option[Map[String, io.apibuilder.swagger.v0.models.Header]] = None, examples: _root_.scala.Option[_root_.play.api.libs.json.JsObject] = None ) extends ResponseOrRef /** * @param ref TODO: Needs to be named '$ref' * @param items TODO: figure out if this also needs to support boolean * (http://json-schema.org/latest/json-schema-validation.html#rfc.section.5.9). * It's possible that a uni-directional approach may allow us to avoid supporting * this odd type. * @param additionalProperties TODO: figure out if this also needs to support boolean * (http://json-schema.org/latest/json-schema-validation.html#rfc.section.5.18). * It's possible that a uni-directional approach may allow us to avoid supporting * this odd type. */ final case class Schema( ref: _root_.scala.Option[String] = None, format: _root_.scala.Option[io.apibuilder.swagger.v0.models.FormatType] = None, title: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, default: _root_.scala.Option[_root_.play.api.libs.json.JsObject] = None, multipleOf: _root_.scala.Option[Long] = None, maximum: _root_.scala.Option[Long] = None, exclusiveMaximum: _root_.scala.Option[Boolean] = None, minimum: _root_.scala.Option[Long] = None, exclusiveMinimum: _root_.scala.Option[Boolean] = None, maxLength: _root_.scala.Option[Int] = None, minLength: _root_.scala.Option[Int] = None, pattern: _root_.scala.Option[String] = None, maxItems: _root_.scala.Option[Int] = None, minItems: _root_.scala.Option[Int] = None, uniqueItems: _root_.scala.Option[Boolean] = None, maxProperties: _root_.scala.Option[Int] = None, minProperties: _root_.scala.Option[Int] = None, required: _root_.scala.Option[Seq[String]] = None, `enum`: _root_.scala.Option[Seq[_root_.play.api.libs.json.JsObject]] = None, `type`: _root_.scala.Option[Seq[String]] = None, items: _root_.scala.Option[io.apibuilder.swagger.v0.models.Schema] = None, allOf: _root_.scala.Option[Seq[io.apibuilder.swagger.v0.models.Schema]] = None, properties: _root_.scala.Option[Map[String, io.apibuilder.swagger.v0.models.Schema]] = None, additionalProperties: _root_.scala.Option[io.apibuilder.swagger.v0.models.Schema] = None, discriminator: _root_.scala.Option[String] = None, readOnly: _root_.scala.Option[Boolean] = None, xml: _root_.scala.Option[io.apibuilder.swagger.v0.models.Xml] = None, externalDocs: _root_.scala.Option[io.apibuilder.swagger.v0.models.ExternalDocumentation] = None, example: _root_.scala.Option[_root_.play.api.libs.json.JsObject] = None ) /** * TODO: Consider making this a union type of the three different schemes (and * their required fields) * * @param name Required for apiKey * @param in Required for apiKey * @param flow Required for oauth2 * @param authorizationUrl Required for oauth2 * @param tokenUrl Required for oauth2 * @param scopes Required for oauth2 */ final case class SecurityScheme( `type`: io.apibuilder.swagger.v0.models.SecuritySchemeType, description: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, in: _root_.scala.Option[io.apibuilder.swagger.v0.models.ApiKeyInType] = None, flow: _root_.scala.Option[String] = None, authorizationUrl: _root_.scala.Option[String] = None, tokenUrl: _root_.scala.Option[String] = None, scopes: _root_.scala.Option[Map[String, String]] = None ) final case class Swagger( swagger: String, info: io.apibuilder.swagger.v0.models.Info, host: _root_.scala.Option[String] = None, basePath: _root_.scala.Option[String] = None, schemes: _root_.scala.Option[Seq[String]] = None, consumes: _root_.scala.Option[Seq[String]] = None, produces: _root_.scala.Option[Seq[String]] = None, paths: Map[String, io.apibuilder.swagger.v0.models.PathItem], definitions: _root_.scala.Option[Map[String, io.apibuilder.swagger.v0.models.Schema]] = None, parameters: _root_.scala.Option[Map[String, io.apibuilder.swagger.v0.models.Parameter]] = None, responses: _root_.scala.Option[Map[String, io.apibuilder.swagger.v0.models.Response]] = None, securityDefinitions: _root_.scala.Option[Map[String, io.apibuilder.swagger.v0.models.SecurityScheme]] = None, security: _root_.scala.Option[Map[String, String]] = None, tags: _root_.scala.Option[Seq[io.apibuilder.swagger.v0.models.Tag]] = None, externalDocs: _root_.scala.Option[io.apibuilder.swagger.v0.models.ExternalDocumentation] = None ) final case class Tag( name: String, description: _root_.scala.Option[String] = None, externalDocs: _root_.scala.Option[io.apibuilder.swagger.v0.models.ExternalDocumentation] = None ) final case class Xml( name: _root_.scala.Option[String] = None, namespace: _root_.scala.Option[String] = None, prefix: _root_.scala.Option[String] = None, attribute: _root_.scala.Option[Boolean] = None, wrapped: _root_.scala.Option[Boolean] = None ) /** * Provides future compatibility in clients - in the future, when a type is added * to the union ParameterOrRef, it will need to be handled in the client code. This * implementation will deserialize these future types as an instance of this class. * * @param description Information about the type that we received that is undefined in this version of * the client. */ final case class ParameterOrRefUndefinedType( description: String ) extends ParameterOrRef /** * Provides future compatibility in clients - in the future, when a type is added * to the union ResponseOrRef, it will need to be handled in the client code. This * implementation will deserialize these future types as an instance of this class. * * @param description Information about the type that we received that is undefined in this version of * the client. */ final case class ResponseOrRefUndefinedType( description: String ) extends ResponseOrRef sealed trait ApiKeyInType extends _root_.scala.Product with _root_.scala.Serializable object ApiKeyInType { case object Query extends ApiKeyInType { override def toString = "query" } case object Header extends ApiKeyInType { override def toString = "header" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends ApiKeyInType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[ApiKeyInType] = scala.List(Query, Header) private val byName: Map[String, ApiKeyInType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): ApiKeyInType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[ApiKeyInType] = byName.get(value.toLowerCase) } sealed trait CollectionFormatType extends _root_.scala.Product with _root_.scala.Serializable object CollectionFormatType { case object Csv extends CollectionFormatType { override def toString = "csv" } case object Ssv extends CollectionFormatType { override def toString = "ssv" } case object Tsv extends CollectionFormatType { override def toString = "tsv" } case object Pipes extends CollectionFormatType { override def toString = "pipes" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends CollectionFormatType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[CollectionFormatType] = scala.List(Csv, Ssv, Tsv, Pipes) private val byName: Map[String, CollectionFormatType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): CollectionFormatType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[CollectionFormatType] = byName.get(value.toLowerCase) } sealed trait FormatType extends _root_.scala.Product with _root_.scala.Serializable object FormatType { case object Binary extends FormatType { override def toString = "binary" } case object Byte extends FormatType { override def toString = "byte" } case object Date extends FormatType { override def toString = "date" } case object DateTime extends FormatType { override def toString = "date-time" } case object Double extends FormatType { override def toString = "double" } case object Float extends FormatType { override def toString = "float" } case object Int32 extends FormatType { override def toString = "int32" } case object Int64 extends FormatType { override def toString = "int64" } case object Password extends FormatType { override def toString = "password" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends FormatType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[FormatType] = scala.List(Binary, Byte, Date, DateTime, Double, Float, Int32, Int64, Password) private val byName: Map[String, FormatType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): FormatType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[FormatType] = byName.get(value.toLowerCase) } sealed trait ItemsType extends _root_.scala.Product with _root_.scala.Serializable object ItemsType { case object String extends ItemsType { override def toString = "string" } case object Number extends ItemsType { override def toString = "number" } case object Integer extends ItemsType { override def toString = "integer" } case object Boolean extends ItemsType { override def toString = "boolean" } case object Array extends ItemsType { override def toString = "array" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends ItemsType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[ItemsType] = scala.List(String, Number, Integer, Boolean, Array) private val byName: Map[String, ItemsType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): ItemsType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[ItemsType] = byName.get(value.toLowerCase) } sealed trait ParameterInType extends _root_.scala.Product with _root_.scala.Serializable object ParameterInType { case object Query extends ParameterInType { override def toString = "query" } case object Header extends ParameterInType { override def toString = "header" } case object Path extends ParameterInType { override def toString = "path" } case object FormData extends ParameterInType { override def toString = "formData" } case object Body extends ParameterInType { override def toString = "body" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends ParameterInType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[ParameterInType] = scala.List(Query, Header, Path, FormData, Body) private val byName: Map[String, ParameterInType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): ParameterInType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[ParameterInType] = byName.get(value.toLowerCase) } sealed trait SecuritySchemeType extends _root_.scala.Product with _root_.scala.Serializable object SecuritySchemeType { case object Basic extends SecuritySchemeType { override def toString = "basic" } case object ApiKey extends SecuritySchemeType { override def toString = "apiKey" } case object Oauth2 extends SecuritySchemeType { override def toString = "oauth2" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends SecuritySchemeType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[SecuritySchemeType] = scala.List(Basic, ApiKey, Oauth2) private val byName: Map[String, SecuritySchemeType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): SecuritySchemeType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[SecuritySchemeType] = byName.get(value.toLowerCase) } } package io.apibuilder.swagger.v0.models { package object json { import play.api.libs.json.__ import play.api.libs.json.JsString import play.api.libs.json.Writes import play.api.libs.functional.syntax._ import io.apibuilder.swagger.v0.models.json._ private[v0] implicit val jsonReadsUUID: play.api.libs.json.Reads[_root_.java.util.UUID] = __.read[String].map { str => _root_.java.util.UUID.fromString(str) } private[v0] implicit val jsonWritesUUID: play.api.libs.json.Writes[_root_.java.util.UUID] = (x: _root_.java.util.UUID) => play.api.libs.json.JsString(x.toString) private[v0] implicit val jsonReadsJodaDateTime: play.api.libs.json.Reads[_root_.org.joda.time.DateTime] = __.read[String].map { str => _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseDateTime(str) } private[v0] implicit val jsonWritesJodaDateTime: play.api.libs.json.Writes[_root_.org.joda.time.DateTime] = (x: _root_.org.joda.time.DateTime) => { play.api.libs.json.JsString(_root_.org.joda.time.format.ISODateTimeFormat.dateTime.print(x)) } private[v0] implicit val jsonReadsJodaLocalDate: play.api.libs.json.Reads[_root_.org.joda.time.LocalDate] = __.read[String].map { str => _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseLocalDate(str) } private[v0] implicit val jsonWritesJodaLocalDate: play.api.libs.json.Writes[_root_.org.joda.time.LocalDate] = (x: _root_.org.joda.time.LocalDate) => { play.api.libs.json.JsString(_root_.org.joda.time.format.ISODateTimeFormat.date.print(x)) } implicit val jsonReadsApibuilderSwaggerApiKeyInType: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ApiKeyInType] = new play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ApiKeyInType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.swagger.v0.models.ApiKeyInType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ApiKeyInType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ApiKeyInType(v)) case _: play.api.libs.json.JsError => (js \ "api_key_in_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ApiKeyInType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApibuilderSwaggerApiKeyInType(obj: io.apibuilder.swagger.v0.models.ApiKeyInType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectApiKeyInType(obj: io.apibuilder.swagger.v0.models.ApiKeyInType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApibuilderSwaggerApiKeyInType: play.api.libs.json.Writes[ApiKeyInType] = { (obj: io.apibuilder.swagger.v0.models.ApiKeyInType) => { io.apibuilder.swagger.v0.models.json.jsonWritesApibuilderSwaggerApiKeyInType(obj) } } implicit val jsonReadsApibuilderSwaggerCollectionFormatType: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.CollectionFormatType] = new play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.CollectionFormatType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.swagger.v0.models.CollectionFormatType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.CollectionFormatType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.CollectionFormatType(v)) case _: play.api.libs.json.JsError => (js \ "collection_format_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.CollectionFormatType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApibuilderSwaggerCollectionFormatType(obj: io.apibuilder.swagger.v0.models.CollectionFormatType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectCollectionFormatType(obj: io.apibuilder.swagger.v0.models.CollectionFormatType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApibuilderSwaggerCollectionFormatType: play.api.libs.json.Writes[CollectionFormatType] = { (obj: io.apibuilder.swagger.v0.models.CollectionFormatType) => { io.apibuilder.swagger.v0.models.json.jsonWritesApibuilderSwaggerCollectionFormatType(obj) } } implicit val jsonReadsApibuilderSwaggerFormatType: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.FormatType] = new play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.FormatType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.swagger.v0.models.FormatType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.FormatType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.FormatType(v)) case _: play.api.libs.json.JsError => (js \ "format_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.FormatType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApibuilderSwaggerFormatType(obj: io.apibuilder.swagger.v0.models.FormatType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectFormatType(obj: io.apibuilder.swagger.v0.models.FormatType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApibuilderSwaggerFormatType: play.api.libs.json.Writes[FormatType] = { (obj: io.apibuilder.swagger.v0.models.FormatType) => { io.apibuilder.swagger.v0.models.json.jsonWritesApibuilderSwaggerFormatType(obj) } } implicit val jsonReadsApibuilderSwaggerItemsType: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ItemsType] = new play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ItemsType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.swagger.v0.models.ItemsType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ItemsType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ItemsType(v)) case _: play.api.libs.json.JsError => (js \ "items_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ItemsType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApibuilderSwaggerItemsType(obj: io.apibuilder.swagger.v0.models.ItemsType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectItemsType(obj: io.apibuilder.swagger.v0.models.ItemsType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApibuilderSwaggerItemsType: play.api.libs.json.Writes[ItemsType] = { (obj: io.apibuilder.swagger.v0.models.ItemsType) => { io.apibuilder.swagger.v0.models.json.jsonWritesApibuilderSwaggerItemsType(obj) } } implicit val jsonReadsApibuilderSwaggerParameterInType: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ParameterInType] = new play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ParameterInType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.swagger.v0.models.ParameterInType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ParameterInType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ParameterInType(v)) case _: play.api.libs.json.JsError => (js \ "parameter_in_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.ParameterInType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApibuilderSwaggerParameterInType(obj: io.apibuilder.swagger.v0.models.ParameterInType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectParameterInType(obj: io.apibuilder.swagger.v0.models.ParameterInType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApibuilderSwaggerParameterInType: play.api.libs.json.Writes[ParameterInType] = { (obj: io.apibuilder.swagger.v0.models.ParameterInType) => { io.apibuilder.swagger.v0.models.json.jsonWritesApibuilderSwaggerParameterInType(obj) } } implicit val jsonReadsApibuilderSwaggerSecuritySchemeType: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.SecuritySchemeType] = new play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.SecuritySchemeType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.swagger.v0.models.SecuritySchemeType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.SecuritySchemeType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.SecuritySchemeType(v)) case _: play.api.libs.json.JsError => (js \ "security_scheme_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.swagger.v0.models.SecuritySchemeType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApibuilderSwaggerSecuritySchemeType(obj: io.apibuilder.swagger.v0.models.SecuritySchemeType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectSecuritySchemeType(obj: io.apibuilder.swagger.v0.models.SecuritySchemeType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApibuilderSwaggerSecuritySchemeType: play.api.libs.json.Writes[SecuritySchemeType] = { (obj: io.apibuilder.swagger.v0.models.SecuritySchemeType) => { io.apibuilder.swagger.v0.models.json.jsonWritesApibuilderSwaggerSecuritySchemeType(obj) } } implicit def jsonReadsApibuilderSwaggerContact: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Contact] = { for { name <- (__ \ "name").readNullable[String] url <- (__ \ "url").readNullable[String] email <- (__ \ "email").readNullable[String] } yield Contact(name, url, email) } def jsObjectContact(obj: io.apibuilder.swagger.v0.models.Contact): play.api.libs.json.JsObject = { (obj.name match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("name" -> play.api.libs.json.JsString(x)) }) ++ (obj.url match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("url" -> play.api.libs.json.JsString(x)) }) ++ (obj.email match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("email" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApibuilderSwaggerContact: play.api.libs.json.Writes[Contact] = { (obj: io.apibuilder.swagger.v0.models.Contact) => { io.apibuilder.swagger.v0.models.json.jsObjectContact(obj) } } implicit def jsonReadsApibuilderSwaggerExternalDocumentation: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ExternalDocumentation] = { for { description <- (__ \ "description").readNullable[String] url <- (__ \ "url").read[String] } yield ExternalDocumentation(description, url) } def jsObjectExternalDocumentation(obj: io.apibuilder.swagger.v0.models.ExternalDocumentation): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "url" -> play.api.libs.json.JsString(obj.url) ) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApibuilderSwaggerExternalDocumentation: play.api.libs.json.Writes[ExternalDocumentation] = { (obj: io.apibuilder.swagger.v0.models.ExternalDocumentation) => { io.apibuilder.swagger.v0.models.json.jsObjectExternalDocumentation(obj) } } implicit def jsonReadsApibuilderSwaggerHeader: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Header] = { for { description <- (__ \ "description").readNullable[String] `type` <- (__ \ "type").read[io.apibuilder.swagger.v0.models.ItemsType] format <- (__ \ "format").readNullable[io.apibuilder.swagger.v0.models.FormatType] items <- (__ \ "items").readNullable[io.apibuilder.swagger.v0.models.Items] collectionFormat <- (__ \ "collectionFormat").readNullable[io.apibuilder.swagger.v0.models.CollectionFormatType] default <- (__ \ "default").readNullable[_root_.play.api.libs.json.JsObject] maximum <- (__ \ "maximum").readNullable[Long] exclusiveMaximum <- (__ \ "exclusiveMaximum").readNullable[Boolean] minimum <- (__ \ "minimum").readNullable[Long] exclusiveMinimum <- (__ \ "exclusiveMinimum").readNullable[Boolean] maxLength <- (__ \ "maxLength").readNullable[Int] minLength <- (__ \ "minLength").readNullable[Int] pattern <- (__ \ "pattern").readNullable[String] maxItems <- (__ \ "maxItems").readNullable[Int] minItems <- (__ \ "minItems").readNullable[Int] uniqueItems <- (__ \ "uniqueItems").readNullable[Boolean] `enum` <- (__ \ "enum").readNullable[Seq[_root_.play.api.libs.json.JsObject]] multipleOf <- (__ \ "multipleOf").readNullable[Long] } yield Header(description, `type`, format, items, collectionFormat, default, maximum, exclusiveMaximum, minimum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, `enum`, multipleOf) } def jsObjectHeader(obj: io.apibuilder.swagger.v0.models.Header): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`.toString) ) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) ++ (obj.format match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("format" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.items match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("items" -> io.apibuilder.swagger.v0.models.json.jsObjectItems(x)) }) ++ (obj.collectionFormat match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("collectionFormat" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.default match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("default" -> x) }) ++ (obj.maximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maximum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMaximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMaximum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.minimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minimum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMinimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMinimum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.maxLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.pattern match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("pattern" -> play.api.libs.json.JsString(x)) }) ++ (obj.maxItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.uniqueItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("uniqueItems" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.`enum` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("enum" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.multipleOf match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("multipleOf" -> play.api.libs.json.JsNumber(x)) }) } implicit def jsonWritesApibuilderSwaggerHeader: play.api.libs.json.Writes[Header] = { (obj: io.apibuilder.swagger.v0.models.Header) => { io.apibuilder.swagger.v0.models.json.jsObjectHeader(obj) } } implicit def jsonReadsApibuilderSwaggerInfo: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Info] = { for { title <- (__ \ "title").read[String] description <- (__ \ "description").readNullable[String] termsOfService <- (__ \ "termsOfService").readNullable[String] contact <- (__ \ "contact").readNullable[io.apibuilder.swagger.v0.models.Contact] license <- (__ \ "license").readNullable[io.apibuilder.swagger.v0.models.License] version <- (__ \ "version").read[String] } yield Info(title, description, termsOfService, contact, license, version) } def jsObjectInfo(obj: io.apibuilder.swagger.v0.models.Info): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "title" -> play.api.libs.json.JsString(obj.title), "version" -> play.api.libs.json.JsString(obj.version) ) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) ++ (obj.termsOfService match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("termsOfService" -> play.api.libs.json.JsString(x)) }) ++ (obj.contact match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("contact" -> io.apibuilder.swagger.v0.models.json.jsObjectContact(x)) }) ++ (obj.license match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("license" -> io.apibuilder.swagger.v0.models.json.jsObjectLicense(x)) }) } implicit def jsonWritesApibuilderSwaggerInfo: play.api.libs.json.Writes[Info] = { (obj: io.apibuilder.swagger.v0.models.Info) => { io.apibuilder.swagger.v0.models.json.jsObjectInfo(obj) } } implicit def jsonReadsApibuilderSwaggerItems: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Items] = { for { `type` <- (__ \ "type").read[io.apibuilder.swagger.v0.models.ItemsType] format <- (__ \ "format").readNullable[io.apibuilder.swagger.v0.models.FormatType] items <- (__ \ "items").lazyReadNullable(play.api.libs.json.Reads.of[io.apibuilder.swagger.v0.models.Items]) collectionFormat <- (__ \ "collectionFormat").readNullable[io.apibuilder.swagger.v0.models.CollectionFormatType] default <- (__ \ "default").readNullable[_root_.play.api.libs.json.JsObject] maximum <- (__ \ "maximum").readNullable[Long] exclusiveMaximum <- (__ \ "exclusiveMaximum").readNullable[Boolean] minimum <- (__ \ "minimum").readNullable[Long] exclusiveMinimum <- (__ \ "exclusiveMinimum").readNullable[Boolean] maxLength <- (__ \ "maxLength").readNullable[Int] minLength <- (__ \ "minLength").readNullable[Int] pattern <- (__ \ "pattern").readNullable[String] maxItems <- (__ \ "maxItems").readNullable[Int] minItems <- (__ \ "minItems").readNullable[Int] uniqueItems <- (__ \ "uniqueItems").readNullable[Boolean] `enum` <- (__ \ "enum").readNullable[Seq[_root_.play.api.libs.json.JsObject]] multipleOf <- (__ \ "multipleOf").readNullable[Long] } yield Items(`type`, format, items, collectionFormat, default, maximum, exclusiveMaximum, minimum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, `enum`, multipleOf) } def jsObjectItems(obj: io.apibuilder.swagger.v0.models.Items): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`.toString) ) ++ (obj.format match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("format" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.items match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("items" -> io.apibuilder.swagger.v0.models.json.jsObjectItems(x)) }) ++ (obj.collectionFormat match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("collectionFormat" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.default match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("default" -> x) }) ++ (obj.maximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maximum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMaximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMaximum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.minimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minimum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMinimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMinimum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.maxLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.pattern match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("pattern" -> play.api.libs.json.JsString(x)) }) ++ (obj.maxItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.uniqueItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("uniqueItems" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.`enum` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("enum" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.multipleOf match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("multipleOf" -> play.api.libs.json.JsNumber(x)) }) } implicit def jsonWritesApibuilderSwaggerItems: play.api.libs.json.Writes[Items] = { (obj: io.apibuilder.swagger.v0.models.Items) => { io.apibuilder.swagger.v0.models.json.jsObjectItems(obj) } } implicit def jsonReadsApibuilderSwaggerLicense: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.License] = { for { name <- (__ \ "name").read[String] url <- (__ \ "url").readNullable[String] } yield License(name, url) } def jsObjectLicense(obj: io.apibuilder.swagger.v0.models.License): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name) ) ++ (obj.url match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("url" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApibuilderSwaggerLicense: play.api.libs.json.Writes[License] = { (obj: io.apibuilder.swagger.v0.models.License) => { io.apibuilder.swagger.v0.models.json.jsObjectLicense(obj) } } implicit def jsonReadsApibuilderSwaggerOperation: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Operation] = { for { tags <- (__ \ "tags").readNullable[Seq[String]] summary <- (__ \ "summary").readNullable[String] description <- (__ \ "description").readNullable[String] externalDocs <- (__ \ "externalDocs").readNullable[io.apibuilder.swagger.v0.models.ExternalDocumentation] operationId <- (__ \ "operationId").readNullable[String] consumes <- (__ \ "consumes").readNullable[Seq[String]] produces <- (__ \ "produces").readNullable[Seq[String]] parameters <- (__ \ "parameters").readNullable[Seq[io.apibuilder.swagger.v0.models.ParameterOrRef]] responses <- (__ \ "responses").read[Map[String, io.apibuilder.swagger.v0.models.ResponseOrRef]] schemes <- (__ \ "schemes").readNullable[Seq[String]] deprecated <- (__ \ "deprecated").readNullable[Boolean] security <- (__ \ "security").readNullable[Seq[Map[String, Seq[String]]]] } yield Operation(tags, summary, description, externalDocs, operationId, consumes, produces, parameters, responses, schemes, deprecated, security) } def jsObjectOperation(obj: io.apibuilder.swagger.v0.models.Operation): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "responses" -> play.api.libs.json.Json.toJson(obj.responses) ) ++ (obj.tags match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("tags" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.summary match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("summary" -> play.api.libs.json.JsString(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) ++ (obj.externalDocs match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("externalDocs" -> io.apibuilder.swagger.v0.models.json.jsObjectExternalDocumentation(x)) }) ++ (obj.operationId match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("operationId" -> play.api.libs.json.JsString(x)) }) ++ (obj.consumes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("consumes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.produces match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("produces" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.parameters match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("parameters" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.schemes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("schemes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecated match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecated" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.security match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("security" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApibuilderSwaggerOperation: play.api.libs.json.Writes[Operation] = { (obj: io.apibuilder.swagger.v0.models.Operation) => { io.apibuilder.swagger.v0.models.json.jsObjectOperation(obj) } } implicit def jsonReadsApibuilderSwaggerParameter: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Parameter] = { for { name <- (__ \ "name").read[String] in <- (__ \ "in").read[io.apibuilder.swagger.v0.models.ParameterInType] description <- (__ \ "description").readNullable[String] required <- (__ \ "required").read[Boolean] schema <- (__ \ "schema").readNullable[io.apibuilder.swagger.v0.models.Schema] `type` <- (__ \ "type").readNullable[String] format <- (__ \ "format").readNullable[String] allowEmptyValue <- (__ \ "allowEmptyValue").readNullable[Boolean] items <- (__ \ "items").readNullable[io.apibuilder.swagger.v0.models.Items] collectionFormat <- (__ \ "collectionFormat").readNullable[io.apibuilder.swagger.v0.models.CollectionFormatType] default <- (__ \ "default").readNullable[_root_.play.api.libs.json.JsObject] maximum <- (__ \ "maximum").readNullable[Long] exclusiveMaximum <- (__ \ "exclusiveMaximum").readNullable[Boolean] minimum <- (__ \ "minimum").readNullable[Long] exclusiveMinimum <- (__ \ "exclusiveMinimum").readNullable[Boolean] maxLength <- (__ \ "maxLength").readNullable[Int] minLength <- (__ \ "minLength").readNullable[Int] pattern <- (__ \ "pattern").readNullable[String] maxItems <- (__ \ "maxItems").readNullable[Int] minItems <- (__ \ "minItems").readNullable[Int] uniqueItems <- (__ \ "uniqueItems").readNullable[Boolean] `enum` <- (__ \ "enum").readNullable[Seq[_root_.play.api.libs.json.JsObject]] multipleOf <- (__ \ "multipleOf").readNullable[Long] } yield Parameter(name, in, description, required, schema, `type`, format, allowEmptyValue, items, collectionFormat, default, maximum, exclusiveMaximum, minimum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, `enum`, multipleOf) } def jsObjectParameter(obj: io.apibuilder.swagger.v0.models.Parameter): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "in" -> play.api.libs.json.JsString(obj.in.toString), "required" -> play.api.libs.json.JsBoolean(obj.required) ) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) ++ (obj.schema match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("schema" -> io.apibuilder.swagger.v0.models.json.jsObjectSchema(x)) }) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.JsString(x)) }) ++ (obj.format match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("format" -> play.api.libs.json.JsString(x)) }) ++ (obj.allowEmptyValue match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("allowEmptyValue" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.items match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("items" -> io.apibuilder.swagger.v0.models.json.jsObjectItems(x)) }) ++ (obj.collectionFormat match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("collectionFormat" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.default match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("default" -> x) }) ++ (obj.maximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maximum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMaximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMaximum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.minimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minimum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMinimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMinimum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.maxLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.pattern match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("pattern" -> play.api.libs.json.JsString(x)) }) ++ (obj.maxItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.uniqueItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("uniqueItems" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.`enum` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("enum" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.multipleOf match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("multipleOf" -> play.api.libs.json.JsNumber(x)) }) } implicit def jsonWritesApibuilderSwaggerParameter: play.api.libs.json.Writes[Parameter] = { (obj: io.apibuilder.swagger.v0.models.Parameter) => { io.apibuilder.swagger.v0.models.json.jsObjectParameter(obj) } } implicit def jsonReadsApibuilderSwaggerPathItem: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.PathItem] = { for { ref <- (__ \ "ref").readNullable[String] get <- (__ \ "get").readNullable[io.apibuilder.swagger.v0.models.Operation] put <- (__ \ "put").readNullable[io.apibuilder.swagger.v0.models.Operation] post <- (__ \ "post").readNullable[io.apibuilder.swagger.v0.models.Operation] delete <- (__ \ "delete").readNullable[io.apibuilder.swagger.v0.models.Operation] options <- (__ \ "options").readNullable[io.apibuilder.swagger.v0.models.Operation] head <- (__ \ "head").readNullable[io.apibuilder.swagger.v0.models.Operation] patch <- (__ \ "patch").readNullable[io.apibuilder.swagger.v0.models.Operation] parameters <- (__ \ "parameters").readNullable[Seq[io.apibuilder.swagger.v0.models.ParameterOrRef]] } yield PathItem(ref, get, put, post, delete, options, head, patch, parameters) } def jsObjectPathItem(obj: io.apibuilder.swagger.v0.models.PathItem): play.api.libs.json.JsObject = { (obj.ref match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("ref" -> play.api.libs.json.JsString(x)) }) ++ (obj.get match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("get" -> io.apibuilder.swagger.v0.models.json.jsObjectOperation(x)) }) ++ (obj.put match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("put" -> io.apibuilder.swagger.v0.models.json.jsObjectOperation(x)) }) ++ (obj.post match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("post" -> io.apibuilder.swagger.v0.models.json.jsObjectOperation(x)) }) ++ (obj.delete match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("delete" -> io.apibuilder.swagger.v0.models.json.jsObjectOperation(x)) }) ++ (obj.options match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("options" -> io.apibuilder.swagger.v0.models.json.jsObjectOperation(x)) }) ++ (obj.head match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("head" -> io.apibuilder.swagger.v0.models.json.jsObjectOperation(x)) }) ++ (obj.patch match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("patch" -> io.apibuilder.swagger.v0.models.json.jsObjectOperation(x)) }) ++ (obj.parameters match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("parameters" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApibuilderSwaggerPathItem: play.api.libs.json.Writes[PathItem] = { (obj: io.apibuilder.swagger.v0.models.PathItem) => { io.apibuilder.swagger.v0.models.json.jsObjectPathItem(obj) } } implicit def jsonReadsApibuilderSwaggerReference: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Reference] = { (__ \ "ref").read[String].map { x => Reference(ref = x) } } def jsObjectReference(obj: io.apibuilder.swagger.v0.models.Reference): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "ref" -> play.api.libs.json.JsString(obj.ref) ) } implicit def jsonWritesApibuilderSwaggerReference: play.api.libs.json.Writes[Reference] = { (obj: io.apibuilder.swagger.v0.models.Reference) => { io.apibuilder.swagger.v0.models.json.jsObjectReference(obj) } } implicit def jsonReadsApibuilderSwaggerResponse: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Response] = { for { description <- (__ \ "description").read[String] schema <- (__ \ "schema").readNullable[io.apibuilder.swagger.v0.models.Schema] headers <- (__ \ "headers").readNullable[Map[String, io.apibuilder.swagger.v0.models.Header]] examples <- (__ \ "examples").readNullable[_root_.play.api.libs.json.JsObject] } yield Response(description, schema, headers, examples) } def jsObjectResponse(obj: io.apibuilder.swagger.v0.models.Response): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "description" -> play.api.libs.json.JsString(obj.description) ) ++ (obj.schema match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("schema" -> io.apibuilder.swagger.v0.models.json.jsObjectSchema(x)) }) ++ (obj.headers match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("headers" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.examples match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("examples" -> x) }) } implicit def jsonWritesApibuilderSwaggerResponse: play.api.libs.json.Writes[Response] = { (obj: io.apibuilder.swagger.v0.models.Response) => { io.apibuilder.swagger.v0.models.json.jsObjectResponse(obj) } } implicit def jsonReadsApibuilderSwaggerSchema: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Schema] = { for { ref <- (__ \ "ref").readNullable[String] format <- (__ \ "format").readNullable[io.apibuilder.swagger.v0.models.FormatType] title <- (__ \ "title").readNullable[String] description <- (__ \ "description").readNullable[String] default <- (__ \ "default").readNullable[_root_.play.api.libs.json.JsObject] multipleOf <- (__ \ "multipleOf").readNullable[Long] maximum <- (__ \ "maximum").readNullable[Long] exclusiveMaximum <- (__ \ "exclusiveMaximum").readNullable[Boolean] minimum <- (__ \ "minimum").readNullable[Long] exclusiveMinimum <- (__ \ "exclusiveMinimum").readNullable[Boolean] maxLength <- (__ \ "maxLength").readNullable[Int] minLength <- (__ \ "minLength").readNullable[Int] pattern <- (__ \ "pattern").readNullable[String] maxItems <- (__ \ "maxItems").readNullable[Int] minItems <- (__ \ "minItems").readNullable[Int] uniqueItems <- (__ \ "uniqueItems").readNullable[Boolean] maxProperties <- (__ \ "maxProperties").readNullable[Int] minProperties <- (__ \ "minProperties").readNullable[Int] required <- (__ \ "required").readNullable[Seq[String]] `enum` <- (__ \ "enum").readNullable[Seq[_root_.play.api.libs.json.JsObject]] `type` <- (__ \ "type").readNullable[Seq[String]] items <- (__ \ "items").lazyReadNullable(play.api.libs.json.Reads.of[io.apibuilder.swagger.v0.models.Schema]) allOf <- (__ \ "allOf").lazyReadNullable(play.api.libs.json.Reads.of[Seq[io.apibuilder.swagger.v0.models.Schema]]) properties <- (__ \ "properties").lazyReadNullable(play.api.libs.json.Reads.of[Map[String, io.apibuilder.swagger.v0.models.Schema]]) additionalProperties <- (__ \ "additionalProperties").lazyReadNullable(play.api.libs.json.Reads.of[io.apibuilder.swagger.v0.models.Schema]) discriminator <- (__ \ "discriminator").readNullable[String] readOnly <- (__ \ "readOnly").readNullable[Boolean] xml <- (__ \ "xml").readNullable[io.apibuilder.swagger.v0.models.Xml] externalDocs <- (__ \ "externalDocs").readNullable[io.apibuilder.swagger.v0.models.ExternalDocumentation] example <- (__ \ "example").readNullable[_root_.play.api.libs.json.JsObject] } yield Schema(ref, format, title, description, default, multipleOf, maximum, exclusiveMaximum, minimum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxProperties, minProperties, required, `enum`, `type`, items, allOf, properties, additionalProperties, discriminator, readOnly, xml, externalDocs, example) } def jsObjectSchema(obj: io.apibuilder.swagger.v0.models.Schema): play.api.libs.json.JsObject = { (obj.ref match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("ref" -> play.api.libs.json.JsString(x)) }) ++ (obj.format match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("format" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.title match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("title" -> play.api.libs.json.JsString(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) ++ (obj.default match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("default" -> x) }) ++ (obj.multipleOf match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("multipleOf" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.maximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maximum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMaximum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMaximum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.minimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minimum" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.exclusiveMinimum match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("exclusiveMinimum" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.maxLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minLength match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minLength" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.pattern match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("pattern" -> play.api.libs.json.JsString(x)) }) ++ (obj.maxItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minItems" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.uniqueItems match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("uniqueItems" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.maxProperties match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("maxProperties" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.minProperties match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("minProperties" -> play.api.libs.json.JsNumber(x)) }) ++ (obj.required match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("required" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.`enum` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("enum" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.items match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("items" -> io.apibuilder.swagger.v0.models.json.jsObjectSchema(x)) }) ++ (obj.allOf match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("allOf" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.properties match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("properties" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.additionalProperties match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("additionalProperties" -> io.apibuilder.swagger.v0.models.json.jsObjectSchema(x)) }) ++ (obj.discriminator match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("discriminator" -> play.api.libs.json.JsString(x)) }) ++ (obj.readOnly match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("readOnly" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.xml match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("xml" -> io.apibuilder.swagger.v0.models.json.jsObjectXml(x)) }) ++ (obj.externalDocs match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("externalDocs" -> io.apibuilder.swagger.v0.models.json.jsObjectExternalDocumentation(x)) }) ++ (obj.example match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("example" -> x) }) } implicit def jsonWritesApibuilderSwaggerSchema: play.api.libs.json.Writes[Schema] = { (obj: io.apibuilder.swagger.v0.models.Schema) => { io.apibuilder.swagger.v0.models.json.jsObjectSchema(obj) } } implicit def jsonReadsApibuilderSwaggerSecurityScheme: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.SecurityScheme] = { for { `type` <- (__ \ "type").read[io.apibuilder.swagger.v0.models.SecuritySchemeType] description <- (__ \ "description").readNullable[String] name <- (__ \ "name").readNullable[String] in <- (__ \ "in").readNullable[io.apibuilder.swagger.v0.models.ApiKeyInType] flow <- (__ \ "flow").readNullable[String] authorizationUrl <- (__ \ "authorizationUrl").readNullable[String] tokenUrl <- (__ \ "tokenUrl").readNullable[String] scopes <- (__ \ "scopes").readNullable[Map[String, String]] } yield SecurityScheme(`type`, description, name, in, flow, authorizationUrl, tokenUrl, scopes) } def jsObjectSecurityScheme(obj: io.apibuilder.swagger.v0.models.SecurityScheme): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`.toString) ) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) ++ (obj.name match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("name" -> play.api.libs.json.JsString(x)) }) ++ (obj.in match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("in" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.flow match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("flow" -> play.api.libs.json.JsString(x)) }) ++ (obj.authorizationUrl match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("authorizationUrl" -> play.api.libs.json.JsString(x)) }) ++ (obj.tokenUrl match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("tokenUrl" -> play.api.libs.json.JsString(x)) }) ++ (obj.scopes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("scopes" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApibuilderSwaggerSecurityScheme: play.api.libs.json.Writes[SecurityScheme] = { (obj: io.apibuilder.swagger.v0.models.SecurityScheme) => { io.apibuilder.swagger.v0.models.json.jsObjectSecurityScheme(obj) } } implicit def jsonReadsApibuilderSwaggerSwagger: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Swagger] = { for { swagger <- (__ \ "swagger").read[String] info <- (__ \ "info").read[io.apibuilder.swagger.v0.models.Info] host <- (__ \ "host").readNullable[String] basePath <- (__ \ "basePath").readNullable[String] schemes <- (__ \ "schemes").readNullable[Seq[String]] consumes <- (__ \ "consumes").readNullable[Seq[String]] produces <- (__ \ "produces").readNullable[Seq[String]] paths <- (__ \ "paths").read[Map[String, io.apibuilder.swagger.v0.models.PathItem]] definitions <- (__ \ "definitions").readNullable[Map[String, io.apibuilder.swagger.v0.models.Schema]] parameters <- (__ \ "parameters").readNullable[Map[String, io.apibuilder.swagger.v0.models.Parameter]] responses <- (__ \ "responses").readNullable[Map[String, io.apibuilder.swagger.v0.models.Response]] securityDefinitions <- (__ \ "securityDefinitions").readNullable[Map[String, io.apibuilder.swagger.v0.models.SecurityScheme]] security <- (__ \ "security").readNullable[Map[String, String]] tags <- (__ \ "tags").readNullable[Seq[io.apibuilder.swagger.v0.models.Tag]] externalDocs <- (__ \ "externalDocs").readNullable[io.apibuilder.swagger.v0.models.ExternalDocumentation] } yield Swagger(swagger, info, host, basePath, schemes, consumes, produces, paths, definitions, parameters, responses, securityDefinitions, security, tags, externalDocs) } def jsObjectSwagger(obj: io.apibuilder.swagger.v0.models.Swagger): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "swagger" -> play.api.libs.json.JsString(obj.swagger), "info" -> io.apibuilder.swagger.v0.models.json.jsObjectInfo(obj.info), "paths" -> play.api.libs.json.Json.toJson(obj.paths) ) ++ (obj.host match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("host" -> play.api.libs.json.JsString(x)) }) ++ (obj.basePath match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("basePath" -> play.api.libs.json.JsString(x)) }) ++ (obj.schemes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("schemes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.consumes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("consumes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.produces match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("produces" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.definitions match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("definitions" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.parameters match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("parameters" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.responses match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("responses" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.securityDefinitions match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("securityDefinitions" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.security match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("security" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.tags match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("tags" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.externalDocs match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("externalDocs" -> io.apibuilder.swagger.v0.models.json.jsObjectExternalDocumentation(x)) }) } implicit def jsonWritesApibuilderSwaggerSwagger: play.api.libs.json.Writes[Swagger] = { (obj: io.apibuilder.swagger.v0.models.Swagger) => { io.apibuilder.swagger.v0.models.json.jsObjectSwagger(obj) } } implicit def jsonReadsApibuilderSwaggerTag: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Tag] = { for { name <- (__ \ "name").read[String] description <- (__ \ "description").readNullable[String] externalDocs <- (__ \ "externalDocs").readNullable[io.apibuilder.swagger.v0.models.ExternalDocumentation] } yield Tag(name, description, externalDocs) } def jsObjectTag(obj: io.apibuilder.swagger.v0.models.Tag): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name) ) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) ++ (obj.externalDocs match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("externalDocs" -> io.apibuilder.swagger.v0.models.json.jsObjectExternalDocumentation(x)) }) } implicit def jsonWritesApibuilderSwaggerTag: play.api.libs.json.Writes[Tag] = { (obj: io.apibuilder.swagger.v0.models.Tag) => { io.apibuilder.swagger.v0.models.json.jsObjectTag(obj) } } implicit def jsonReadsApibuilderSwaggerXml: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.Xml] = { for { name <- (__ \ "name").readNullable[String] namespace <- (__ \ "namespace").readNullable[String] prefix <- (__ \ "prefix").readNullable[String] attribute <- (__ \ "attribute").readNullable[Boolean] wrapped <- (__ \ "wrapped").readNullable[Boolean] } yield Xml(name, namespace, prefix, attribute, wrapped) } def jsObjectXml(obj: io.apibuilder.swagger.v0.models.Xml): play.api.libs.json.JsObject = { (obj.name match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("name" -> play.api.libs.json.JsString(x)) }) ++ (obj.namespace match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("namespace" -> play.api.libs.json.JsString(x)) }) ++ (obj.prefix match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("prefix" -> play.api.libs.json.JsString(x)) }) ++ (obj.attribute match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attribute" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.wrapped match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("wrapped" -> play.api.libs.json.JsBoolean(x)) }) } implicit def jsonWritesApibuilderSwaggerXml: play.api.libs.json.Writes[Xml] = { (obj: io.apibuilder.swagger.v0.models.Xml) => { io.apibuilder.swagger.v0.models.json.jsObjectXml(obj) } } implicit def jsonReadsApibuilderSwaggerParameterOrRef: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ParameterOrRef] = { ( (__ \ "parameter").read(jsonReadsApibuilderSwaggerParameter).asInstanceOf[play.api.libs.json.Reads[ParameterOrRef]] orElse (__ \ "reference").read(jsonReadsApibuilderSwaggerReference).asInstanceOf[play.api.libs.json.Reads[ParameterOrRef]] orElse play.api.libs.json.Reads(jsValue => play.api.libs.json.JsSuccess(ParameterOrRefUndefinedType(jsValue.toString))).asInstanceOf[play.api.libs.json.Reads[ParameterOrRef]] ) } def jsObjectParameterOrRef(obj: io.apibuilder.swagger.v0.models.ParameterOrRef): play.api.libs.json.JsObject = { obj match { case x: io.apibuilder.swagger.v0.models.Parameter => play.api.libs.json.Json.obj("parameter" -> io.apibuilder.swagger.v0.models.json.jsObjectParameter(x)) case x: io.apibuilder.swagger.v0.models.Reference => play.api.libs.json.Json.obj("reference" -> io.apibuilder.swagger.v0.models.json.jsObjectReference(x)) case x: io.apibuilder.swagger.v0.models.ParameterOrRefUndefinedType => { scala.util.Try { // If we received a JSON object - echo it back. This is a workaround for a bug in // serialization for unions w/out discriminators where they sometimes have the // type wrapper and sometimes do not play.api.libs.json.Json.parse(x.description).asInstanceOf[play.api.libs.json.JsObject] } match { case scala.util.Success(o) => o case scala.util.Failure(_) => sys.error("The type[io.apibuilder.swagger.v0.models.ParameterOrRefUndefinedType] should never be serialized") } } } } implicit def jsonWritesApibuilderSwaggerParameterOrRef: play.api.libs.json.Writes[ParameterOrRef] = { (obj: io.apibuilder.swagger.v0.models.ParameterOrRef) => { io.apibuilder.swagger.v0.models.json.jsObjectParameterOrRef(obj) } } implicit def jsonReadsApibuilderSwaggerResponseOrRef: play.api.libs.json.Reads[io.apibuilder.swagger.v0.models.ResponseOrRef] = { ( (__ \ "response").read(jsonReadsApibuilderSwaggerResponse).asInstanceOf[play.api.libs.json.Reads[ResponseOrRef]] orElse (__ \ "reference").read(jsonReadsApibuilderSwaggerReference).asInstanceOf[play.api.libs.json.Reads[ResponseOrRef]] orElse play.api.libs.json.Reads(jsValue => play.api.libs.json.JsSuccess(ResponseOrRefUndefinedType(jsValue.toString))).asInstanceOf[play.api.libs.json.Reads[ResponseOrRef]] ) } def jsObjectResponseOrRef(obj: io.apibuilder.swagger.v0.models.ResponseOrRef): play.api.libs.json.JsObject = { obj match { case x: io.apibuilder.swagger.v0.models.Response => play.api.libs.json.Json.obj("response" -> io.apibuilder.swagger.v0.models.json.jsObjectResponse(x)) case x: io.apibuilder.swagger.v0.models.Reference => play.api.libs.json.Json.obj("reference" -> io.apibuilder.swagger.v0.models.json.jsObjectReference(x)) case x: io.apibuilder.swagger.v0.models.ResponseOrRefUndefinedType => { scala.util.Try { // If we received a JSON object - echo it back. This is a workaround for a bug in // serialization for unions w/out discriminators where they sometimes have the // type wrapper and sometimes do not play.api.libs.json.Json.parse(x.description).asInstanceOf[play.api.libs.json.JsObject] } match { case scala.util.Success(o) => o case scala.util.Failure(_) => sys.error("The type[io.apibuilder.swagger.v0.models.ResponseOrRefUndefinedType] should never be serialized") } } } } implicit def jsonWritesApibuilderSwaggerResponseOrRef: play.api.libs.json.Writes[ResponseOrRef] = { (obj: io.apibuilder.swagger.v0.models.ResponseOrRef) => { io.apibuilder.swagger.v0.models.json.jsObjectResponseOrRef(obj) } } } }