/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.16.53 * User agent: apibuilder app.apibuilder.io/apicollective/apibuilder-api-json/0.16.53/play_2_x_scala_3_standalone_json */ package io.apibuilder.api.json.v0.models { final case class Annotation( description: _root_.scala.Option[String] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class ApiJson( name: String, info: _root_.scala.Option[io.apibuilder.api.json.v0.models.Info] = None, namespace: _root_.scala.Option[String] = None, baseUrl: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, imports: Seq[io.apibuilder.api.json.v0.models.Import] = Nil, headers: Seq[io.apibuilder.api.json.v0.models.Header] = Nil, enums: Map[String, io.apibuilder.api.json.v0.models.Enum] = Map.empty, interfaces: Map[String, io.apibuilder.api.json.v0.models.Interface] = Map.empty, templates: _root_.scala.Option[io.apibuilder.api.json.v0.models.Templates] = None, unions: Map[String, io.apibuilder.api.json.v0.models.Union] = Map.empty, models: Map[String, io.apibuilder.api.json.v0.models.Model] = Map.empty, resources: Map[String, io.apibuilder.api.json.v0.models.Resource] = Map.empty, annotations: Map[String, io.apibuilder.api.json.v0.models.Annotation] = Map.empty, attributes: Seq[io.apibuilder.api.json.v0.models.Attribute] = Nil ) final case class Attribute( name: String, value: _root_.play.api.libs.json.JsObject ) final case class Body( `type`: String, description: _root_.scala.Option[String] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) 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 Deprecation( description: _root_.scala.Option[String] = None ) final case class Enum( plural: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, values: Seq[io.apibuilder.api.json.v0.models.EnumValue], attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class EnumValue( name: String, value: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class Field( name: String, `type`: String, description: _root_.scala.Option[String] = None, required: Boolean = true, default: _root_.scala.Option[_root_.play.api.libs.json.JsValue] = None, example: _root_.scala.Option[String] = None, minimum: _root_.scala.Option[Long] = None, maximum: _root_.scala.Option[Long] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, annotations: _root_.scala.Option[Seq[String]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class Header( name: String, `type`: String, required: Boolean = true, description: _root_.scala.Option[String] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class Import( uri: String ) final case class Info( contact: _root_.scala.Option[io.apibuilder.api.json.v0.models.Contact] = None, license: _root_.scala.Option[io.apibuilder.api.json.v0.models.License] = None ) final case class Interface( plural: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, fields: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Field]] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) /** * Describes the software license contact for this service */ final case class License( name: String, url: _root_.scala.Option[String] = None ) final case class Model( description: _root_.scala.Option[String] = None, plural: _root_.scala.Option[String] = None, fields: Seq[io.apibuilder.api.json.v0.models.Field] = Nil, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, interfaces: _root_.scala.Option[Seq[String]] = None, templates: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.TemplateDeclaration]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class Operation( method: String, path: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, body: _root_.scala.Option[io.apibuilder.api.json.v0.models.Body] = None, parameters: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Parameter]] = None, responses: _root_.scala.Option[Map[String, io.apibuilder.api.json.v0.models.Response]] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class Parameter( name: String, `type`: String, location: io.apibuilder.api.json.v0.models.ParameterLocation = io.apibuilder.api.json.v0.models.ParameterLocation.Query, description: _root_.scala.Option[String] = None, required: Boolean = true, default: _root_.scala.Option[_root_.play.api.libs.json.JsValue] = None, minimum: _root_.scala.Option[Long] = None, maximum: _root_.scala.Option[Long] = None, example: _root_.scala.Option[String] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class Resource( path: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, operations: Seq[io.apibuilder.api.json.v0.models.Operation] = Nil, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, templates: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.TemplateDeclaration]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class Response( `type`: String, headers: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Header]] = None, description: _root_.scala.Option[String] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None ) /** * @param cast Casts the types declared in the template to the types you want to use in this * declaration */ final case class TemplateDeclaration( name: String, cast: _root_.scala.Option[Map[String, String]] = None ) /** * Experimental */ final case class Templates( models: _root_.scala.Option[Map[String, io.apibuilder.api.json.v0.models.Model]] = None, resources: _root_.scala.Option[Map[String, io.apibuilder.api.json.v0.models.Resource]] = None ) final case class Union( plural: _root_.scala.Option[String] = None, discriminator: _root_.scala.Option[String] = None, description: _root_.scala.Option[String] = None, types: Seq[io.apibuilder.api.json.v0.models.UnionType], attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, interfaces: _root_.scala.Option[Seq[String]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) final case class UnionType( `type`: String, description: _root_.scala.Option[String] = None, default: Boolean = false, discriminatorValue: _root_.scala.Option[String] = None, attributes: _root_.scala.Option[Seq[io.apibuilder.api.json.v0.models.Attribute]] = None, deprecation: _root_.scala.Option[io.apibuilder.api.json.v0.models.Deprecation] = None ) sealed trait ParameterLocation extends _root_.scala.Product with _root_.scala.Serializable object ParameterLocation { case object Path extends ParameterLocation { override def toString = "path" } case object Query extends ParameterLocation { override def toString = "query" } case object Form extends ParameterLocation { override def toString = "form" } case object Header extends ParameterLocation { 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 for 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 ParameterLocation /** * 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[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) } } package io.apibuilder.api.json.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.api.json.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 jsonReadsApibuilderApiJsonParameterLocation: 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 match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.api.json.v0.models.ParameterLocation(v.value)) case _ => { (js \ "value").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 => (js \ "parameter_location").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 } } } } } } def jsonWritesApibuilderApiJsonParameterLocation(obj: io.apibuilder.api.json.v0.models.ParameterLocation) = { play.api.libs.json.JsString(obj.toString) } def jsObjectParameterLocation(obj: io.apibuilder.api.json.v0.models.ParameterLocation) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApibuilderApiJsonParameterLocation: play.api.libs.json.Writes[ParameterLocation] = { (obj: io.apibuilder.api.json.v0.models.ParameterLocation) => { io.apibuilder.api.json.v0.models.json.jsonWritesApibuilderApiJsonParameterLocation(obj) } } implicit def jsonReadsApibuilderApiJsonAnnotation: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Annotation] = { for { description <- (__ \ "description").readNullable[String] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Annotation(description, deprecation) } def jsObjectAnnotation(obj: io.apibuilder.api.json.v0.models.Annotation): play.api.libs.json.JsObject = { (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.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonAnnotation: play.api.libs.json.Writes[Annotation] = { (obj: io.apibuilder.api.json.v0.models.Annotation) => { io.apibuilder.api.json.v0.models.json.jsObjectAnnotation(obj) } } implicit def jsonReadsApibuilderApiJsonApiJson: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.ApiJson] = { for { name <- (__ \ "name").read[String] info <- (__ \ "info").readNullable[io.apibuilder.api.json.v0.models.Info] namespace <- (__ \ "namespace").readNullable[String] baseUrl <- (__ \ "base_url").readNullable[String] description <- (__ \ "description").readNullable[String] imports <- (__ \ "imports").readWithDefault[Seq[io.apibuilder.api.json.v0.models.Import]](Nil) headers <- (__ \ "headers").readWithDefault[Seq[io.apibuilder.api.json.v0.models.Header]](Nil) enums <- (__ \ "enums").readWithDefault[Map[String, io.apibuilder.api.json.v0.models.Enum]](Map.empty) interfaces <- (__ \ "interfaces").readWithDefault[Map[String, io.apibuilder.api.json.v0.models.Interface]](Map.empty) templates <- (__ \ "templates").readNullable[io.apibuilder.api.json.v0.models.Templates] unions <- (__ \ "unions").readWithDefault[Map[String, io.apibuilder.api.json.v0.models.Union]](Map.empty) models <- (__ \ "models").readWithDefault[Map[String, io.apibuilder.api.json.v0.models.Model]](Map.empty) resources <- (__ \ "resources").readWithDefault[Map[String, io.apibuilder.api.json.v0.models.Resource]](Map.empty) annotations <- (__ \ "annotations").readWithDefault[Map[String, io.apibuilder.api.json.v0.models.Annotation]](Map.empty) attributes <- (__ \ "attributes").readWithDefault[Seq[io.apibuilder.api.json.v0.models.Attribute]](Nil) } yield ApiJson(name, info, namespace, baseUrl, description, imports, headers, enums, interfaces, templates, unions, models, resources, annotations, attributes) } def jsObjectApiJson(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.info match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("info" -> io.apibuilder.api.json.v0.models.json.jsObjectInfo(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.baseUrl match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("base_url" -> 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.templates match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("templates" -> io.apibuilder.api.json.v0.models.json.jsObjectTemplates(x)) }) } implicit def jsonWritesApibuilderApiJsonApiJson: play.api.libs.json.Writes[ApiJson] = { (obj: io.apibuilder.api.json.v0.models.ApiJson) => { io.apibuilder.api.json.v0.models.json.jsObjectApiJson(obj) } } implicit def jsonReadsApibuilderApiJsonAttribute: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Attribute] = { for { name <- (__ \ "name").read[String] value <- (__ \ "value").read[_root_.play.api.libs.json.JsObject] } yield Attribute(name, value) } def jsObjectAttribute(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 jsonWritesApibuilderApiJsonAttribute: play.api.libs.json.Writes[Attribute] = { (obj: io.apibuilder.api.json.v0.models.Attribute) => { io.apibuilder.api.json.v0.models.json.jsObjectAttribute(obj) } } implicit def jsonReadsApibuilderApiJsonBody: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Body] = { for { `type` <- (__ \ "type").read[String] description <- (__ \ "description").readNullable[String] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Body(`type`, description, attributes, deprecation) } def jsObjectBody(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 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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonBody: play.api.libs.json.Writes[Body] = { (obj: io.apibuilder.api.json.v0.models.Body) => { io.apibuilder.api.json.v0.models.json.jsObjectBody(obj) } } implicit def jsonReadsApibuilderApiJsonContact: play.api.libs.json.Reads[io.apibuilder.api.json.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.api.json.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 jsonWritesApibuilderApiJsonContact: play.api.libs.json.Writes[Contact] = { (obj: io.apibuilder.api.json.v0.models.Contact) => { io.apibuilder.api.json.v0.models.json.jsObjectContact(obj) } } implicit def jsonReadsApibuilderApiJsonDeprecation: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Deprecation] = { (__ \ "description").readNullable[String].map { x => Deprecation(description = x) } } def jsObjectDeprecation(obj: io.apibuilder.api.json.v0.models.Deprecation): play.api.libs.json.JsObject = { (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 jsonWritesApibuilderApiJsonDeprecation: play.api.libs.json.Writes[Deprecation] = { (obj: io.apibuilder.api.json.v0.models.Deprecation) => { io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(obj) } } implicit def jsonReadsApibuilderApiJsonEnum: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Enum] = { for { plural <- (__ \ "plural").readNullable[String] description <- (__ \ "description").readNullable[String] values <- (__ \ "values").read[Seq[io.apibuilder.api.json.v0.models.EnumValue]] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Enum(plural, description, values, attributes, deprecation) } def jsObjectEnum(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 match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("plural" -> 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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonEnum: play.api.libs.json.Writes[Enum] = { (obj: io.apibuilder.api.json.v0.models.Enum) => { io.apibuilder.api.json.v0.models.json.jsObjectEnum(obj) } } implicit def jsonReadsApibuilderApiJsonEnumValue: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.EnumValue] = { for { name <- (__ \ "name").read[String] value <- (__ \ "value").readNullable[String] description <- (__ \ "description").readNullable[String] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield EnumValue(name, value, description, attributes, deprecation) } def jsObjectEnumValue(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 match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("value" -> 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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonEnumValue: play.api.libs.json.Writes[EnumValue] = { (obj: io.apibuilder.api.json.v0.models.EnumValue) => { io.apibuilder.api.json.v0.models.json.jsObjectEnumValue(obj) } } implicit def jsonReadsApibuilderApiJsonField: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Field] = { for { name <- (__ \ "name").read[String] `type` <- (__ \ "type").read[String] description <- (__ \ "description").readNullable[String] required <- (__ \ "required").readWithDefault[Boolean](true) default <- (__ \ "default").readNullable[_root_.play.api.libs.json.JsValue] example <- (__ \ "example").readNullable[String] minimum <- (__ \ "minimum").readNullable[Long] maximum <- (__ \ "maximum").readNullable[Long] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] annotations <- (__ \ "annotations").readNullable[Seq[String]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Field(name, `type`, description, required, default, example, minimum, maximum, attributes, annotations, deprecation) } def jsObjectField(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 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.example match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("example" -> play.api.libs.json.JsString(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.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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.annotations match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("annotations" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonField: play.api.libs.json.Writes[Field] = { (obj: io.apibuilder.api.json.v0.models.Field) => { io.apibuilder.api.json.v0.models.json.jsObjectField(obj) } } implicit def jsonReadsApibuilderApiJsonHeader: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Header] = { for { name <- (__ \ "name").read[String] `type` <- (__ \ "type").read[String] required <- (__ \ "required").readWithDefault[Boolean](true) description <- (__ \ "description").readNullable[String] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Header(name, `type`, required, description, attributes, deprecation) } def jsObjectHeader(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 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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonHeader: play.api.libs.json.Writes[Header] = { (obj: io.apibuilder.api.json.v0.models.Header) => { io.apibuilder.api.json.v0.models.json.jsObjectHeader(obj) } } implicit def jsonReadsApibuilderApiJsonImport: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Import] = { (__ \ "uri").read[String].map { x => Import(uri = x) } } def jsObjectImport(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 jsonWritesApibuilderApiJsonImport: play.api.libs.json.Writes[Import] = { (obj: io.apibuilder.api.json.v0.models.Import) => { io.apibuilder.api.json.v0.models.json.jsObjectImport(obj) } } implicit def jsonReadsApibuilderApiJsonInfo: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Info] = { for { contact <- (__ \ "contact").readNullable[io.apibuilder.api.json.v0.models.Contact] license <- (__ \ "license").readNullable[io.apibuilder.api.json.v0.models.License] } yield Info(contact, license) } def jsObjectInfo(obj: io.apibuilder.api.json.v0.models.Info): play.api.libs.json.JsObject = { (obj.contact match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("contact" -> io.apibuilder.api.json.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.api.json.v0.models.json.jsObjectLicense(x)) }) } implicit def jsonWritesApibuilderApiJsonInfo: play.api.libs.json.Writes[Info] = { (obj: io.apibuilder.api.json.v0.models.Info) => { io.apibuilder.api.json.v0.models.json.jsObjectInfo(obj) } } implicit def jsonReadsApibuilderApiJsonInterface: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Interface] = { for { plural <- (__ \ "plural").readNullable[String] description <- (__ \ "description").readNullable[String] fields <- (__ \ "fields").readNullable[Seq[io.apibuilder.api.json.v0.models.Field]] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Interface(plural, description, fields, attributes, deprecation) } def jsObjectInterface(obj: io.apibuilder.api.json.v0.models.Interface): play.api.libs.json.JsObject = { (obj.plural match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("plural" -> 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.fields match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("fields" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonInterface: play.api.libs.json.Writes[Interface] = { (obj: io.apibuilder.api.json.v0.models.Interface) => { io.apibuilder.api.json.v0.models.json.jsObjectInterface(obj) } } implicit def jsonReadsApibuilderApiJsonLicense: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.License] = { for { name <- (__ \ "name").read[String] url <- (__ \ "url").readNullable[String] } yield License(name, url) } def jsObjectLicense(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 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 jsonWritesApibuilderApiJsonLicense: play.api.libs.json.Writes[License] = { (obj: io.apibuilder.api.json.v0.models.License) => { io.apibuilder.api.json.v0.models.json.jsObjectLicense(obj) } } implicit def jsonReadsApibuilderApiJsonModel: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Model] = { for { description <- (__ \ "description").readNullable[String] plural <- (__ \ "plural").readNullable[String] fields <- (__ \ "fields").readWithDefault[Seq[io.apibuilder.api.json.v0.models.Field]](Nil) attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] interfaces <- (__ \ "interfaces").readNullable[Seq[String]] templates <- (__ \ "templates").readNullable[Seq[io.apibuilder.api.json.v0.models.TemplateDeclaration]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Model(description, plural, fields, attributes, interfaces, templates, deprecation) } def jsObjectModel(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 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.plural match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("plural" -> play.api.libs.json.JsString(x)) }) ++ (obj.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.interfaces match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("interfaces" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.templates match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("templates" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonModel: play.api.libs.json.Writes[Model] = { (obj: io.apibuilder.api.json.v0.models.Model) => { io.apibuilder.api.json.v0.models.json.jsObjectModel(obj) } } implicit def jsonReadsApibuilderApiJsonOperation: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Operation] = { for { method <- (__ \ "method").read[String] path <- (__ \ "path").readNullable[String] description <- (__ \ "description").readNullable[String] body <- (__ \ "body").readNullable[io.apibuilder.api.json.v0.models.Body] parameters <- (__ \ "parameters").readNullable[Seq[io.apibuilder.api.json.v0.models.Parameter]] responses <- (__ \ "responses").readNullable[Map[String, io.apibuilder.api.json.v0.models.Response]] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Operation(method, path, description, body, parameters, responses, attributes, deprecation) } def jsObjectOperation(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) ) ++ (obj.path match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("path" -> 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.body match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("body" -> io.apibuilder.api.json.v0.models.json.jsObjectBody(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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonOperation: play.api.libs.json.Writes[Operation] = { (obj: io.apibuilder.api.json.v0.models.Operation) => { io.apibuilder.api.json.v0.models.json.jsObjectOperation(obj) } } implicit def jsonReadsApibuilderApiJsonParameter: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Parameter] = { for { name <- (__ \ "name").read[String] `type` <- (__ \ "type").read[String] location <- (__ \ "location").readWithDefault[io.apibuilder.api.json.v0.models.ParameterLocation](io.apibuilder.api.json.v0.models.ParameterLocation.Query) description <- (__ \ "description").readNullable[String] required <- (__ \ "required").readWithDefault[Boolean](true) default <- (__ \ "default").readNullable[_root_.play.api.libs.json.JsValue] minimum <- (__ \ "minimum").readNullable[Long] maximum <- (__ \ "maximum").readNullable[Long] example <- (__ \ "example").readNullable[String] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Parameter(name, `type`, location, description, required, default, minimum, maximum, example, attributes, deprecation) } def jsObjectParameter(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 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.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.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.example match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("example" -> play.api.libs.json.JsString(x)) }) ++ (obj.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonParameter: play.api.libs.json.Writes[Parameter] = { (obj: io.apibuilder.api.json.v0.models.Parameter) => { io.apibuilder.api.json.v0.models.json.jsObjectParameter(obj) } } implicit def jsonReadsApibuilderApiJsonResource: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Resource] = { for { path <- (__ \ "path").readNullable[String] description <- (__ \ "description").readNullable[String] operations <- (__ \ "operations").readWithDefault[Seq[io.apibuilder.api.json.v0.models.Operation]](Nil) attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] templates <- (__ \ "templates").readNullable[Seq[io.apibuilder.api.json.v0.models.TemplateDeclaration]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Resource(path, description, operations, attributes, templates, deprecation) } def jsObjectResource(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 match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("path" -> 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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.templates match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("templates" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonResource: play.api.libs.json.Writes[Resource] = { (obj: io.apibuilder.api.json.v0.models.Resource) => { io.apibuilder.api.json.v0.models.json.jsObjectResource(obj) } } implicit def jsonReadsApibuilderApiJsonResponse: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Response] = { for { `type` <- (__ \ "type").read[String] headers <- (__ \ "headers").readNullable[Seq[io.apibuilder.api.json.v0.models.Header]] description <- (__ \ "description").readNullable[String] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] } yield Response(`type`, headers, description, deprecation, attributes) } def jsObjectResponse(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 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.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.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) ++ (obj.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApibuilderApiJsonResponse: play.api.libs.json.Writes[Response] = { (obj: io.apibuilder.api.json.v0.models.Response) => { io.apibuilder.api.json.v0.models.json.jsObjectResponse(obj) } } implicit def jsonReadsApibuilderApiJsonTemplateDeclaration: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.TemplateDeclaration] = { for { name <- (__ \ "name").read[String] cast <- (__ \ "cast").readNullable[Map[String, String]] } yield TemplateDeclaration(name, cast) } def jsObjectTemplateDeclaration(obj: io.apibuilder.api.json.v0.models.TemplateDeclaration): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name) ) ++ (obj.cast match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("cast" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApibuilderApiJsonTemplateDeclaration: play.api.libs.json.Writes[TemplateDeclaration] = { (obj: io.apibuilder.api.json.v0.models.TemplateDeclaration) => { io.apibuilder.api.json.v0.models.json.jsObjectTemplateDeclaration(obj) } } implicit def jsonReadsApibuilderApiJsonTemplates: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Templates] = { for { models <- (__ \ "models").readNullable[Map[String, io.apibuilder.api.json.v0.models.Model]] resources <- (__ \ "resources").readNullable[Map[String, io.apibuilder.api.json.v0.models.Resource]] } yield Templates(models, resources) } def jsObjectTemplates(obj: io.apibuilder.api.json.v0.models.Templates): play.api.libs.json.JsObject = { (obj.models match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("models" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.resources match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("resources" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApibuilderApiJsonTemplates: play.api.libs.json.Writes[Templates] = { (obj: io.apibuilder.api.json.v0.models.Templates) => { io.apibuilder.api.json.v0.models.json.jsObjectTemplates(obj) } } implicit def jsonReadsApibuilderApiJsonUnion: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.Union] = { for { plural <- (__ \ "plural").readNullable[String] discriminator <- (__ \ "discriminator").readNullable[String] description <- (__ \ "description").readNullable[String] types <- (__ \ "types").read[Seq[io.apibuilder.api.json.v0.models.UnionType]] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] interfaces <- (__ \ "interfaces").readNullable[Seq[String]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Union(plural, discriminator, description, types, attributes, interfaces, deprecation) } def jsObjectUnion(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 match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("plural" -> play.api.libs.json.JsString(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.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.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.interfaces match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("interfaces" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonUnion: play.api.libs.json.Writes[Union] = { (obj: io.apibuilder.api.json.v0.models.Union) => { io.apibuilder.api.json.v0.models.json.jsObjectUnion(obj) } } implicit def jsonReadsApibuilderApiJsonUnionType: play.api.libs.json.Reads[io.apibuilder.api.json.v0.models.UnionType] = { for { `type` <- (__ \ "type").read[String] description <- (__ \ "description").readNullable[String] default <- (__ \ "default").readWithDefault[Boolean](false) discriminatorValue <- (__ \ "discriminator_value").readNullable[String] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield UnionType(`type`, description, default, discriminatorValue, attributes, deprecation) } def jsObjectUnionType(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 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.discriminatorValue match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("discriminator_value" -> play.api.libs.json.JsString(x)) }) ++ (obj.attributes match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("attributes" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.deprecation match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("deprecation" -> io.apibuilder.api.json.v0.models.json.jsObjectDeprecation(x)) }) } implicit def jsonWritesApibuilderApiJsonUnionType: play.api.libs.json.Writes[UnionType] = { (obj: io.apibuilder.api.json.v0.models.UnionType) => { io.apibuilder.api.json.v0.models.json.jsObjectUnionType(obj) } } } }