/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.15.71 * User agent: apibuilder app.apibuilder.io/apicollective/apibuilder-api-json/0.15.71/play_2_6 */ package io.apibuilder.api.json.v0.models package object json { import play.api.libs.json.{__, JsString, Writes} import play.api.libs.functional.syntax._ import play.api.libs.json.Writes._ import play.api.libs.json.Reads._ import io.apibuilder.api.json.v0.models.json._ 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 _: 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").read[Seq[io.apibuilder.api.json.v0.models.Import]] headers <- (__ \ "headers").read[Seq[io.apibuilder.api.json.v0.models.Header]] enums <- (__ \ "enums").read[Map[String, io.apibuilder.api.json.v0.models.Enum]] interfaces <- (__ \ "interfaces").read[Map[String, io.apibuilder.api.json.v0.models.Interface]] unions <- (__ \ "unions").read[Map[String, io.apibuilder.api.json.v0.models.Union]] models <- (__ \ "models").read[Map[String, io.apibuilder.api.json.v0.models.Model]] resources <- (__ \ "resources").read[Map[String, io.apibuilder.api.json.v0.models.Resource]] annotations <- (__ \ "annotations").read[Map[String, io.apibuilder.api.json.v0.models.Annotation]] attributes <- (__ \ "attributes").read[Seq[io.apibuilder.api.json.v0.models.Attribute]] } yield ApiJson( name, info, namespace, baseUrl, description, imports, headers, enums, interfaces, 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)) }) } 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").read[Boolean] default <- (__ \ "default").readNullable[String] 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" -> play.api.libs.json.JsString(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").read[Boolean] 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").read[Seq[io.apibuilder.api.json.v0.models.Field]] 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 Model(description, plural, fields, attributes, interfaces, 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.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").read[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[Seq[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), "path" -> play.api.libs.json.JsString(obj.path) ) ++ (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").read[io.apibuilder.api.json.v0.models.ParameterLocation] description <- (__ \ "description").readNullable[String] required <- (__ \ "required").read[Boolean] default <- (__ \ "default").readNullable[String] 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" -> 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.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").read[Seq[io.apibuilder.api.json.v0.models.Operation]] attributes <- (__ \ "attributes").readNullable[Seq[io.apibuilder.api.json.v0.models.Attribute]] deprecation <- (__ \ "deprecation").readNullable[io.apibuilder.api.json.v0.models.Deprecation] } yield Resource(path, description, operations, attributes, 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.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 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").read[Boolean] 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) } } }