/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.15.70 * User agent: apibuilder app.apibuilder.io/apicollective/apibuilder-api-json/apibuilder api json/latest/bryzek_play_model */ package io.apibuilder.api.json.v0.models sealed trait ParameterLocation extends _root_.scala.Product with _root_.scala.Serializable object ParameterLocation { case object Path extends ParameterLocation { override def toString: String = "path" } case object Query extends ParameterLocation { override def toString: String = "query" } case object Form extends ParameterLocation { override def toString: String = "form" } case object Header extends ParameterLocation { override def toString: String = "header" } final case class UNDEFINED(description: String) extends ParameterLocation { override def toString: String = description } val all: scala.List[ParameterLocation] = scala.List(Path, Query, Form, Header) private val byName: Map[String, ParameterLocation] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): ParameterLocation = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[ParameterLocation] = byName.get(value.toLowerCase) } case class Annotation( description: Option[String], deprecation: Option[Deprecation] ) case class ApiJson( name: String, apidoc: Option[Apidoc], info: Option[Info], namespace: Option[String], baseUrl: Option[String], description: Option[String], imports: Seq[Import] = Nil, headers: Seq[Header] = Nil, enums: Map[String, Enum] = Map.empty, interfaces: Map[String, Interface] = Map.empty, unions: Map[String, Union] = Map.empty, models: Map[String, Model] = Map.empty, resources: Map[String, Resource] = Map.empty, annotations: Map[String, Annotation] = Map.empty, attributes: Seq[Attribute] = Nil ) object ApiJson { def apply(name: String): io.apibuilder.api.json.v0.models.ApiJson = { io.apibuilder.api.json.v0.models.ApiJson( name = name, apidoc = None, info = None, namespace = None, baseUrl = None, description = None ) } } case class Apidoc(version: String) case class Attribute( name: String, value: play.api.libs.json.JsObject ) case class Body( `type`: String, description: Option[String], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object Body { def apply(`type`: String): io.apibuilder.api.json.v0.models.Body = { io.apibuilder.api.json.v0.models.Body( `type` = `type`, description = None, attributes = None, deprecation = None ) } } case class Contact( name: Option[String], url: Option[String], email: Option[String] ) case class Deprecation(description: Option[String]) case class Enum( plural: Option[String], description: Option[String], values: Seq[EnumValue], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object Enum { def apply(values: Seq[EnumValue]): io.apibuilder.api.json.v0.models.Enum = { io.apibuilder.api.json.v0.models.Enum( values = values, plural = None, description = None, attributes = None, deprecation = None ) } } case class EnumValue( name: String, value: Option[String], description: Option[String], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object EnumValue { def apply(name: String): io.apibuilder.api.json.v0.models.EnumValue = { io.apibuilder.api.json.v0.models.EnumValue( name = name, value = None, description = None, attributes = None, deprecation = None ) } } case class Field( name: String, `type`: String, description: Option[String], required: Boolean = true, default: Option[String], example: Option[String], minimum: Option[Long], maximum: Option[Long], attributes: Option[Seq[Attribute]], annotations: Option[Seq[String]], deprecation: Option[Deprecation] ) object Field { def apply( name: String, `type`: String ): io.apibuilder.api.json.v0.models.Field = { io.apibuilder.api.json.v0.models.Field( name = name, `type` = `type`, description = None, default = None, example = None, minimum = None, maximum = None, attributes = None, annotations = None, deprecation = None ) } } case class Header( name: String, `type`: String, required: Boolean = true, description: Option[String], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object Header { def apply( name: String, `type`: String ): io.apibuilder.api.json.v0.models.Header = { io.apibuilder.api.json.v0.models.Header( name = name, `type` = `type`, description = None, attributes = None, deprecation = None ) } } case class Import(uri: String) case class Info( contact: Option[Contact], license: Option[License] ) case class Interface( plural: Option[String], description: Option[String], fields: Option[Seq[Field]], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) case class License( name: String, url: Option[String] ) object License { def apply(name: String): io.apibuilder.api.json.v0.models.License = { io.apibuilder.api.json.v0.models.License( name = name, url = None ) } } case class Model( description: Option[String], plural: Option[String], fields: Seq[Field], attributes: Option[Seq[Attribute]], interfaces: Option[Seq[String]], deprecation: Option[Deprecation] ) object Model { def apply(fields: Seq[Field]): io.apibuilder.api.json.v0.models.Model = { io.apibuilder.api.json.v0.models.Model( fields = fields, description = None, plural = None, attributes = None, interfaces = None, deprecation = None ) } } case class Operation( method: String, path: String, description: Option[String], body: Option[Body], parameters: Option[Seq[Parameter]], responses: Option[Seq[Response]], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object Operation { def apply( method: String, path: String ): io.apibuilder.api.json.v0.models.Operation = { io.apibuilder.api.json.v0.models.Operation( method = method, path = path, description = None, body = None, parameters = None, responses = None, attributes = None, deprecation = None ) } } case class Parameter( name: String, `type`: String, location: ParameterLocation = io.apibuilder.api.json.v0.models.ParameterLocation.Query, description: Option[String], required: Boolean = true, default: Option[String], minimum: Option[Long], maximum: Option[Long], example: Option[String], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object Parameter { def apply( name: String, `type`: String ): io.apibuilder.api.json.v0.models.Parameter = { io.apibuilder.api.json.v0.models.Parameter( name = name, `type` = `type`, description = None, default = None, minimum = None, maximum = None, example = None, attributes = None, deprecation = None ) } } case class Resource( path: Option[String], description: Option[String], operations: Seq[Operation], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object Resource { def apply(operations: Seq[Operation]): io.apibuilder.api.json.v0.models.Resource = { io.apibuilder.api.json.v0.models.Resource( operations = operations, path = None, description = None, attributes = None, deprecation = None ) } } case class Response( `type`: String, headers: Option[Seq[Header]], description: Option[String], deprecation: Option[Deprecation], attributes: Option[Seq[Attribute]] ) object Response { def apply(`type`: String): io.apibuilder.api.json.v0.models.Response = { io.apibuilder.api.json.v0.models.Response( `type` = `type`, headers = None, description = None, deprecation = None, attributes = None ) } } case class Union( plural: Option[String], discriminator: Option[String], description: Option[String], types: Seq[UnionType], attributes: Option[Seq[Attribute]], interfaces: Option[Seq[String]], deprecation: Option[Deprecation] ) object Union { def apply(types: Seq[UnionType]): io.apibuilder.api.json.v0.models.Union = { io.apibuilder.api.json.v0.models.Union( types = types, plural = None, discriminator = None, description = None, attributes = None, interfaces = None, deprecation = None ) } } case class UnionType( `type`: String, description: Option[String], default: Boolean = false, discriminatorValue: Option[String], attributes: Option[Seq[Attribute]], deprecation: Option[Deprecation] ) object UnionType { def apply(`type`: String): io.apibuilder.api.json.v0.models.UnionType = { io.apibuilder.api.json.v0.models.UnionType( `type` = `type`, description = None, discriminatorValue = None, attributes = None, deprecation = None ) } } package object json { import play.api.libs.json.* implicit val jsonReadsIoApibuilderApiJsonV0ModelsParameterLocation: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.ParameterLocation] = new play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.ParameterLocation] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.api.json.v0.models.ParameterLocation] = { js.validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.api.json.v0.models.ParameterLocation(v)) case err: play.api.libs.json.JsError => err } } } implicit def jsonWritesIoApibuilderApiJsonV0ModelsParameterLocation: play.api.libs.json.Writes[ParameterLocation] = { (obj: io.apibuilder.api.json.v0.models.ParameterLocation) => { play.api.libs.json.JsString(obj.toString) } } implicit def jsonReadsIoApibuilderApiJsonV0ModelsAnnotation: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Annotation] = { for { description <- (JsPath \ "description").readNullable[String] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Annotation(description, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsAnnotation: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Annotation] = { (obj: io.apibuilder.api.json.v0.models.Annotation) => jsObjectIoApibuilderApiJsonV0ModelsAnnotation(obj) } def jsObjectIoApibuilderApiJsonV0ModelsAnnotation(obj: io.apibuilder.api.json.v0.models.Annotation): play.api.libs.json.JsObject = { obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsApiJson: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.ApiJson] = { for { name <- (JsPath \ "name").read[String] apidoc <- (JsPath \ "apidoc").readNullable[io.apibuilder.api.json.v0.models.Apidoc] info <- (JsPath \ "info").readNullable[io.apibuilder.api.json.v0.models.Info] namespace <- (JsPath \ "namespace").readNullable[String] baseUrl <- (JsPath \ "base_url").readNullable[String] description <- (JsPath \ "description").readNullable[String] imports <- (JsPath \ "imports").read[Seq[io.apibuilder.api.json.v0.models.Import]] headers <- (JsPath \ "headers").read[Seq[io.apibuilder.api.json.v0.models.Header]] enums <- (JsPath \ "enums").read[Map[String, io.apibuilder.api.json.v0.models.Enum]] interfaces <- (JsPath \ "interfaces").read[Map[String, io.apibuilder.api.json.v0.models.Interface]] unions <- (JsPath \ "unions").read[Map[String, io.apibuilder.api.json.v0.models.Union]] models <- (JsPath \ "models").read[Map[String, io.apibuilder.api.json.v0.models.Model]] resources <- (JsPath \ "resources").read[Map[String, io.apibuilder.api.json.v0.models.Resource]] annotations <- (JsPath \ "annotations").read[Map[String, io.apibuilder.api.json.v0.models.Annotation]] attributes <- (JsPath \ "attributes").read[Seq[io.apibuilder.api.json.v0.models.Attribute]] } yield io.apibuilder.api.json.v0.models.ApiJson(name, apidoc, info, namespace, baseUrl, description, imports, headers, enums, interfaces, unions, models, resources, annotations, attributes) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsApiJson: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.ApiJson] = { (obj: io.apibuilder.api.json.v0.models.ApiJson) => jsObjectIoApibuilderApiJsonV0ModelsApiJson(obj) } def jsObjectIoApibuilderApiJsonV0ModelsApiJson(obj: io.apibuilder.api.json.v0.models.ApiJson): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "imports" -> play.api.libs.json.Json.toJson(obj.imports), "headers" -> play.api.libs.json.Json.toJson(obj.headers), "enums" -> play.api.libs.json.Json.toJson(obj.enums), "interfaces" -> play.api.libs.json.Json.toJson(obj.interfaces), "unions" -> play.api.libs.json.Json.toJson(obj.unions), "models" -> play.api.libs.json.Json.toJson(obj.models), "resources" -> play.api.libs.json.Json.toJson(obj.resources), "annotations" -> play.api.libs.json.Json.toJson(obj.annotations), "attributes" -> play.api.libs.json.Json.toJson(obj.attributes) ) ++ obj.apidoc.map { x => play.api.libs.json.Json.obj("apidoc" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsApidoc(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.info.map { x => play.api.libs.json.Json.obj("info" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsInfo(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.namespace.map { x => play.api.libs.json.Json.obj("namespace" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.baseUrl.map { x => play.api.libs.json.Json.obj("base_url" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsApidoc: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Apidoc] = { for { version <- (JsPath \ "version").read[String] } yield io.apibuilder.api.json.v0.models.Apidoc(version) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsApidoc: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Apidoc] = { (obj: io.apibuilder.api.json.v0.models.Apidoc) => jsObjectIoApibuilderApiJsonV0ModelsApidoc(obj) } def jsObjectIoApibuilderApiJsonV0ModelsApidoc(obj: io.apibuilder.api.json.v0.models.Apidoc): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "version" -> play.api.libs.json.JsString(obj.version) ) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsAttribute: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Attribute] = { for { name <- (JsPath \ "name").read[String] value <- (JsPath \ "value").read[_root_.play.api.libs.json.JsObject] } yield io.apibuilder.api.json.v0.models.Attribute(name, value) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsAttribute: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Attribute] = { (obj: io.apibuilder.api.json.v0.models.Attribute) => jsObjectIoApibuilderApiJsonV0ModelsAttribute(obj) } def jsObjectIoApibuilderApiJsonV0ModelsAttribute(obj: io.apibuilder.api.json.v0.models.Attribute): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "value" -> obj.value ) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsBody: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Body] = { for { `type` <- (JsPath \ "type").read[String] description <- (JsPath \ "description").readNullable[String] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Body(`type`, description, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsBody: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Body] = { (obj: io.apibuilder.api.json.v0.models.Body) => jsObjectIoApibuilderApiJsonV0ModelsBody(obj) } def jsObjectIoApibuilderApiJsonV0ModelsBody(obj: io.apibuilder.api.json.v0.models.Body): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsContact: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Contact] = { for { name <- (JsPath \ "name").readNullable[String] url <- (JsPath \ "url").readNullable[String] email <- (JsPath \ "email").readNullable[String] } yield io.apibuilder.api.json.v0.models.Contact(name, url, email) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsContact: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Contact] = { (obj: io.apibuilder.api.json.v0.models.Contact) => jsObjectIoApibuilderApiJsonV0ModelsContact(obj) } def jsObjectIoApibuilderApiJsonV0ModelsContact(obj: io.apibuilder.api.json.v0.models.Contact): play.api.libs.json.JsObject = { obj.name.map { x => play.api.libs.json.Json.obj("name" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.url.map { x => play.api.libs.json.Json.obj("url" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.email.map { x => play.api.libs.json.Json.obj("email" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsDeprecation: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Deprecation] = { for { description <- (JsPath \ "description").readNullable[String] } yield io.apibuilder.api.json.v0.models.Deprecation(description) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsDeprecation: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Deprecation] = { (obj: io.apibuilder.api.json.v0.models.Deprecation) => jsObjectIoApibuilderApiJsonV0ModelsDeprecation(obj) } def jsObjectIoApibuilderApiJsonV0ModelsDeprecation(obj: io.apibuilder.api.json.v0.models.Deprecation): play.api.libs.json.JsObject = { obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsEnum: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Enum] = { for { plural <- (JsPath \ "plural").readNullable[String] description <- (JsPath \ "description").readNullable[String] values <- (JsPath \ "values").read[Seq[io.apibuilder.api.json.v0.models.EnumValue]] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Enum(plural, description, values, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsEnum: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Enum] = { (obj: io.apibuilder.api.json.v0.models.Enum) => jsObjectIoApibuilderApiJsonV0ModelsEnum(obj) } def jsObjectIoApibuilderApiJsonV0ModelsEnum(obj: io.apibuilder.api.json.v0.models.Enum): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "values" -> play.api.libs.json.Json.toJson(obj.values) ) ++ obj.plural.map { x => play.api.libs.json.Json.obj("plural" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsEnumValue: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.EnumValue] = { for { name <- (JsPath \ "name").read[String] value <- (JsPath \ "value").readNullable[String] description <- (JsPath \ "description").readNullable[String] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.EnumValue(name, value, description, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsEnumValue: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.EnumValue] = { (obj: io.apibuilder.api.json.v0.models.EnumValue) => jsObjectIoApibuilderApiJsonV0ModelsEnumValue(obj) } def jsObjectIoApibuilderApiJsonV0ModelsEnumValue(obj: io.apibuilder.api.json.v0.models.EnumValue): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name) ) ++ obj.value.map { x => play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsField: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Field] = { for { name <- (JsPath \ "name").read[String] `type` <- (JsPath \ "type").read[String] description <- (JsPath \ "description").readNullable[String] required <- (JsPath \ "required").read[Boolean] default <- (JsPath \ "default").readNullable[String] example <- (JsPath \ "example").readNullable[String] minimum <- (JsPath \ "minimum").readNullable[Long] maximum <- (JsPath \ "maximum").readNullable[Long] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] annotations <- (JsPath \ "annotations").readNullable[Seq[String]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Field(name, `type`, description, required, default, example, minimum, maximum, attributes, annotations, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsField: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Field] = { (obj: io.apibuilder.api.json.v0.models.Field) => jsObjectIoApibuilderApiJsonV0ModelsField(obj) } def jsObjectIoApibuilderApiJsonV0ModelsField(obj: io.apibuilder.api.json.v0.models.Field): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "type" -> play.api.libs.json.JsString(obj.`type`), "required" -> play.api.libs.json.JsBoolean(obj.required) ) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.default.map { x => play.api.libs.json.Json.obj("default" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.example.map { x => play.api.libs.json.Json.obj("example" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.minimum.map { x => play.api.libs.json.Json.obj("minimum" -> play.api.libs.json.JsNumber(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.maximum.map { x => play.api.libs.json.Json.obj("maximum" -> play.api.libs.json.JsNumber(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.annotations.map { x => play.api.libs.json.Json.obj("annotations" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsHeader: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Header] = { for { name <- (JsPath \ "name").read[String] `type` <- (JsPath \ "type").read[String] required <- (JsPath \ "required").read[Boolean] description <- (JsPath \ "description").readNullable[String] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Header(name, `type`, required, description, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsHeader: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Header] = { (obj: io.apibuilder.api.json.v0.models.Header) => jsObjectIoApibuilderApiJsonV0ModelsHeader(obj) } def jsObjectIoApibuilderApiJsonV0ModelsHeader(obj: io.apibuilder.api.json.v0.models.Header): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "type" -> play.api.libs.json.JsString(obj.`type`), "required" -> play.api.libs.json.JsBoolean(obj.required) ) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsImport: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Import] = { for { uri <- (JsPath \ "uri").read[String] } yield io.apibuilder.api.json.v0.models.Import(uri) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsImport: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Import] = { (obj: io.apibuilder.api.json.v0.models.Import) => jsObjectIoApibuilderApiJsonV0ModelsImport(obj) } def jsObjectIoApibuilderApiJsonV0ModelsImport(obj: io.apibuilder.api.json.v0.models.Import): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "uri" -> play.api.libs.json.JsString(obj.uri) ) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsInfo: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Info] = { for { contact <- (JsPath \ "contact").readNullable[io.apibuilder.api.json.v0.models.Contact] license <- (JsPath \ "license").readNullable[io.apibuilder.api.json.v0.models.License] } yield io.apibuilder.api.json.v0.models.Info(contact, license) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsInfo: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Info] = { (obj: io.apibuilder.api.json.v0.models.Info) => jsObjectIoApibuilderApiJsonV0ModelsInfo(obj) } def jsObjectIoApibuilderApiJsonV0ModelsInfo(obj: io.apibuilder.api.json.v0.models.Info): play.api.libs.json.JsObject = { obj.contact.map { x => play.api.libs.json.Json.obj("contact" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsContact(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.license.map { x => play.api.libs.json.Json.obj("license" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsLicense(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsInterface: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Interface] = { for { plural <- (JsPath \ "plural").readNullable[String] description <- (JsPath \ "description").readNullable[String] fields <- (JsPath \ "fields").readNullable[Seq[io.apibuilder.api.json.v0.models.Field]] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Interface(plural, description, fields, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsInterface: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Interface] = { (obj: io.apibuilder.api.json.v0.models.Interface) => jsObjectIoApibuilderApiJsonV0ModelsInterface(obj) } def jsObjectIoApibuilderApiJsonV0ModelsInterface(obj: io.apibuilder.api.json.v0.models.Interface): play.api.libs.json.JsObject = { obj.plural.map { x => play.api.libs.json.Json.obj("plural" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.fields.map { x => play.api.libs.json.Json.obj("fields" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsLicense: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.License] = { for { name <- (JsPath \ "name").read[String] url <- (JsPath \ "url").readNullable[String] } yield io.apibuilder.api.json.v0.models.License(name, url) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsLicense: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.License] = { (obj: io.apibuilder.api.json.v0.models.License) => jsObjectIoApibuilderApiJsonV0ModelsLicense(obj) } def jsObjectIoApibuilderApiJsonV0ModelsLicense(obj: io.apibuilder.api.json.v0.models.License): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name) ) ++ obj.url.map { x => play.api.libs.json.Json.obj("url" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsModel: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Model] = { for { description <- (JsPath \ "description").readNullable[String] plural <- (JsPath \ "plural").readNullable[String] fields <- (JsPath \ "fields").read[Seq[io.apibuilder.api.json.v0.models.Field]] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] interfaces <- (JsPath \ "interfaces").readNullable[Seq[String]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Model(description, plural, fields, attributes, interfaces, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsModel: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Model] = { (obj: io.apibuilder.api.json.v0.models.Model) => jsObjectIoApibuilderApiJsonV0ModelsModel(obj) } def jsObjectIoApibuilderApiJsonV0ModelsModel(obj: io.apibuilder.api.json.v0.models.Model): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "fields" -> play.api.libs.json.Json.toJson(obj.fields) ) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.plural.map { x => play.api.libs.json.Json.obj("plural" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.interfaces.map { x => play.api.libs.json.Json.obj("interfaces" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsOperation: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Operation] = { for { method <- (JsPath \ "method").read[String] path <- (JsPath \ "path").read[String] description <- (JsPath \ "description").readNullable[String] body <- (JsPath \ "body").readNullable[io.apibuilder.api.json.v0.models.Body] parameters <- (JsPath \ "parameters").readNullable[Seq[io.apibuilder.api.json.v0.models.Parameter]] responses <- (JsPath \ "responses").readNullable[Seq[io.apibuilder.api.json.v0.models.Response]] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Operation(method, path, description, body, parameters, responses, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsOperation: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Operation] = { (obj: io.apibuilder.api.json.v0.models.Operation) => jsObjectIoApibuilderApiJsonV0ModelsOperation(obj) } def jsObjectIoApibuilderApiJsonV0ModelsOperation(obj: io.apibuilder.api.json.v0.models.Operation): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "method" -> play.api.libs.json.JsString(obj.method), "path" -> play.api.libs.json.JsString(obj.path) ) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.body.map { x => play.api.libs.json.Json.obj("body" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsBody(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.parameters.map { x => play.api.libs.json.Json.obj("parameters" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.responses.map { x => play.api.libs.json.Json.obj("responses" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsParameter: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Parameter] = { for { name <- (JsPath \ "name").read[String] `type` <- (JsPath \ "type").read[String] location <- (JsPath \ "location").read[io.apibuilder.api.json.v0.models.ParameterLocation] description <- (JsPath \ "description").readNullable[String] required <- (JsPath \ "required").read[Boolean] default <- (JsPath \ "default").readNullable[String] minimum <- (JsPath \ "minimum").readNullable[Long] maximum <- (JsPath \ "maximum").readNullable[Long] example <- (JsPath \ "example").readNullable[String] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Parameter(name, `type`, location, description, required, default, minimum, maximum, example, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsParameter: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Parameter] = { (obj: io.apibuilder.api.json.v0.models.Parameter) => jsObjectIoApibuilderApiJsonV0ModelsParameter(obj) } def jsObjectIoApibuilderApiJsonV0ModelsParameter(obj: io.apibuilder.api.json.v0.models.Parameter): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "type" -> play.api.libs.json.JsString(obj.`type`), "location" -> play.api.libs.json.JsString(obj.location.toString), "required" -> play.api.libs.json.JsBoolean(obj.required) ) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.default.map { x => play.api.libs.json.Json.obj("default" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.minimum.map { x => play.api.libs.json.Json.obj("minimum" -> play.api.libs.json.JsNumber(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.maximum.map { x => play.api.libs.json.Json.obj("maximum" -> play.api.libs.json.JsNumber(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.example.map { x => play.api.libs.json.Json.obj("example" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsResource: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Resource] = { for { path <- (JsPath \ "path").readNullable[String] description <- (JsPath \ "description").readNullable[String] operations <- (JsPath \ "operations").read[Seq[io.apibuilder.api.json.v0.models.Operation]] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Resource(path, description, operations, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsResource: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Resource] = { (obj: io.apibuilder.api.json.v0.models.Resource) => jsObjectIoApibuilderApiJsonV0ModelsResource(obj) } def jsObjectIoApibuilderApiJsonV0ModelsResource(obj: io.apibuilder.api.json.v0.models.Resource): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "operations" -> play.api.libs.json.Json.toJson(obj.operations) ) ++ obj.path.map { x => play.api.libs.json.Json.obj("path" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsResponse: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Response] = { for { `type` <- (JsPath \ "type").read[String] headers <- (JsPath \ "headers").readNullable[Seq[io.apibuilder.api.json.v0.models.Header]] description <- (JsPath \ "description").readNullable[String] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] } yield io.apibuilder.api.json.v0.models.Response(`type`, headers, description, deprecation, attributes) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsResponse: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Response] = { (obj: io.apibuilder.api.json.v0.models.Response) => jsObjectIoApibuilderApiJsonV0ModelsResponse(obj) } def jsObjectIoApibuilderApiJsonV0ModelsResponse(obj: io.apibuilder.api.json.v0.models.Response): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ obj.headers.map { x => play.api.libs.json.Json.obj("headers" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsUnion: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Union] = { for { plural <- (JsPath \ "plural").readNullable[String] discriminator <- (JsPath \ "discriminator").readNullable[String] description <- (JsPath \ "description").readNullable[String] types <- (JsPath \ "types").read[Seq[io.apibuilder.api.json.v0.models.UnionType]] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] interfaces <- (JsPath \ "interfaces").readNullable[Seq[String]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.Union(plural, discriminator, description, types, attributes, interfaces, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsUnion: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.Union] = { (obj: io.apibuilder.api.json.v0.models.Union) => jsObjectIoApibuilderApiJsonV0ModelsUnion(obj) } def jsObjectIoApibuilderApiJsonV0ModelsUnion(obj: io.apibuilder.api.json.v0.models.Union): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "types" -> play.api.libs.json.Json.toJson(obj.types) ) ++ obj.plural.map { x => play.api.libs.json.Json.obj("plural" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.discriminator.map { x => play.api.libs.json.Json.obj("discriminator" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.interfaces.map { x => play.api.libs.json.Json.obj("interfaces" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } implicit def jsonReadsIoApibuilderApiJsonV0ModelsUnionType: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.UnionType] = { for { `type` <- (JsPath \ "type").read[String] description <- (JsPath \ "description").readNullable[String] default <- (JsPath \ "default").read[Boolean] discriminatorValue <- (JsPath \ "discriminator_value").readNullable[String] attributes <- (JsPath \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (JsPath \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield io.apibuilder.api.json.v0.models.UnionType(`type`, description, default, discriminatorValue, attributes, deprecation) } implicit def jsonWritesIoApibuilderApiJsonV0ModelsUnionType: play.api.libs.json.Writes[io.apibuilder.api.json.v0.models.UnionType] = { (obj: io.apibuilder.api.json.v0.models.UnionType) => jsObjectIoApibuilderApiJsonV0ModelsUnionType(obj) } def jsObjectIoApibuilderApiJsonV0ModelsUnionType(obj: io.apibuilder.api.json.v0.models.UnionType): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`), "default" -> play.api.libs.json.JsBoolean(obj.default) ) ++ obj.description.map { x => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.discriminatorValue.map { x => play.api.libs.json.Json.obj("discriminator_value" -> play.api.libs.json.JsString(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.attributes.map { x => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }.getOrElse(play.api.libs.json.JsObject.empty) ++ obj.deprecation.map { x => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectIoApibuilderApiJsonV0ModelsDeprecation(x)) }.getOrElse(play.api.libs.json.JsObject.empty) } } sealed trait ValidatedParameterLocation extends _root_.scala.Product with _root_.scala.Serializable { def toParameterLocation: _root_.io.apibuilder.api.json.v0.models.ParameterLocation } object ValidatedParameterLocation { case object Path extends ValidatedParameterLocation { override def toString: String = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Path.toString override def toParameterLocation: _root_.io.apibuilder.api.json.v0.models.ParameterLocation = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Path } case object Query extends ValidatedParameterLocation { override def toString: String = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Query.toString override def toParameterLocation: _root_.io.apibuilder.api.json.v0.models.ParameterLocation = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Query } case object Form extends ValidatedParameterLocation { override def toString: String = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Form.toString override def toParameterLocation: _root_.io.apibuilder.api.json.v0.models.ParameterLocation = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Form } case object Header extends ValidatedParameterLocation { override def toString: String = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Header.toString override def toParameterLocation: _root_.io.apibuilder.api.json.v0.models.ParameterLocation = _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Header } val all: scala.List[ValidatedParameterLocation] = scala.List(Path, Query, Form, Header) def validate(value: _root_.io.apibuilder.api.json.v0.models.ParameterLocation): _root_.cats.data.ValidatedNec[String, ValidatedParameterLocation] = { value match { case _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Path => _root_.cats.data.Validated.validNec(ValidatedParameterLocation.Path) case _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Query => _root_.cats.data.Validated.validNec(ValidatedParameterLocation.Query) case _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Form => _root_.cats.data.Validated.validNec(ValidatedParameterLocation.Form) case _root_.io.apibuilder.api.json.v0.models.ParameterLocation.Header => _root_.cats.data.Validated.validNec(ValidatedParameterLocation.Header) case _root_.io.apibuilder.api.json.v0.models.ParameterLocation.UNDEFINED(desc) => _root_.cats.data.Validated.invalidNec(s"Invalid value '${desc}' for ParameterLocation") } } } package object Bindables { private val parameterLocation: generated.binders.Bindable[io.apibuilder.api.json.v0.models.ParameterLocation] = new generated.binders.Bindable[io.apibuilder.api.json.v0.models.ParameterLocation] { override def fromString(value: String): io.apibuilder.api.json.v0.models.ParameterLocation = io.apibuilder.api.json.v0.models.ParameterLocation(value) override def toString(value: io.apibuilder.api.json.v0.models.ParameterLocation): String = value.toString override def example: io.apibuilder.api.json.v0.models.ParameterLocation = io.apibuilder.api.json.v0.models.ParameterLocation.Path override def validValues: Seq[io.apibuilder.api.json.v0.models.ParameterLocation] = io.apibuilder.api.json.v0.models.ParameterLocation.all } implicit def pathBindableParameterLocation: _root_.play.api.mvc.PathBindable[io.apibuilder.api.json.v0.models.ParameterLocation] = generated.binders.BasePathBindable(parameterLocation) implicit def queryStringBindableParameterLocation: _root_.play.api.mvc.QueryStringBindable[io.apibuilder.api.json.v0.models.ParameterLocation] = generated.binders.BaseQueryStringBindable(parameterLocation) }