/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.19.7 * User agent: apibuilder app.apibuilder.io/flow/shopify-merchant-config/0.19.7/play_2_6 */ package io.flow.shopify.merchant.config.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.flow.billing.bank.account.v0.models.json._ import io.flow.billing.v0.models.json._ import io.flow.common.v0.models.json._ import io.flow.error.v0.models.json._ import io.flow.merchant.onboarding.v0.models.json._ import io.flow.reference.v0.models.json._ import io.flow.shopify.merchant.config.v0.models.json._ implicit def jsonReadsShopifyMerchantConfigCompany : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.Company] = { for { legalName <- (__ \ "legal_name").read[String] incorporationCountry <- (__ \ "incorporation_country").read[String] incorporationJurisdiction <- (__ \ "incorporation_jurisdiction").read[String] taxRegistrationNumber <- (__ \ "tax_registration_number").read[String] } yield Company(legalName, incorporationCountry, incorporationJurisdiction, taxRegistrationNumber) } def jsObjectCompany(obj: io.flow.shopify.merchant.config.v0.models.Company): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "legal_name" -> play.api.libs.json.JsString(obj.legalName), "incorporation_country" -> play.api.libs.json.JsString(obj.incorporationCountry), "incorporation_jurisdiction" -> play.api.libs.json.JsString(obj.incorporationJurisdiction), "tax_registration_number" -> play.api.libs.json.JsString(obj.taxRegistrationNumber) ) ++ play.api.libs.json.Json.obj("discriminator" -> "company") } implicit def jsonWritesShopifyMerchantConfigCompany: play.api.libs.json.Writes[Company] = { (obj: io.flow.shopify.merchant.config.v0.models.Company) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectCompany(obj) } } implicit def jsonReadsShopifyMerchantConfigCountryOfOrigin : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.CountryOfOrigin] = { (__ \ "country").read[io.flow.reference.v0.models.Country].map { x => CountryOfOrigin(country = x) } } def jsObjectCountryOfOrigin( obj: io.flow.shopify.merchant.config.v0.models.CountryOfOrigin ): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "country" -> io.flow.reference.v0.models.json.jsObjectCountry(obj.country) ) } implicit def jsonWritesShopifyMerchantConfigCountryOfOrigin: play.api.libs.json.Writes[CountryOfOrigin] = { (obj: io.flow.shopify.merchant.config.v0.models.CountryOfOrigin) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectCountryOfOrigin(obj) } } implicit def jsonReadsShopifyMerchantConfigCountryOfOriginForm : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.CountryOfOriginForm] = { (__ \ "country").read[String].map { x => CountryOfOriginForm(country = x) } } def jsObjectCountryOfOriginForm( obj: io.flow.shopify.merchant.config.v0.models.CountryOfOriginForm ): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "country" -> play.api.libs.json.JsString(obj.country) ) } implicit def jsonWritesShopifyMerchantConfigCountryOfOriginForm: play.api.libs.json.Writes[CountryOfOriginForm] = { (obj: io.flow.shopify.merchant.config.v0.models.CountryOfOriginForm) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectCountryOfOriginForm(obj) } } implicit def jsonReadsShopifyMerchantConfigIndividual : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.Individual] = { for { legalName <- (__ \ "legal_name").read[String] taxRegistrationNumber <- (__ \ "tax_registration_number").readNullable[String] dateOfBirth <- (__ \ "date_of_birth").read[_root_.java.time.LocalDate] } yield Individual(legalName, taxRegistrationNumber, dateOfBirth) } def jsObjectIndividual(obj: io.flow.shopify.merchant.config.v0.models.Individual): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "legal_name" -> play.api.libs.json.JsString(obj.legalName), "date_of_birth" -> play.api.libs.json.JsString(obj.dateOfBirth.toString) ) ++ (obj.taxRegistrationNumber match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("tax_registration_number" -> play.api.libs.json.JsString(x)) }) ++ play.api.libs.json.Json.obj("discriminator" -> "individual") } implicit def jsonWritesShopifyMerchantConfigIndividual: play.api.libs.json.Writes[Individual] = { (obj: io.flow.shopify.merchant.config.v0.models.Individual) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectIndividual(obj) } } implicit def jsonReadsShopifyMerchantConfigKnowYourBusinessUsa : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsa] = { for { id <- (__ \ "id").read[String] organizationId <- (__ \ "organization_id").read[String] shop <- (__ \ "shop").readNullable[io.flow.merchant.onboarding.v0.models.Shop] primaryEntity <- (__ \ "primary_entity").read[io.flow.shopify.merchant.config.v0.models.Entity] parentCompany <- (__ \ "parent_company").readNullable[io.flow.shopify.merchant.config.v0.models.Company] ultimateParentCompany <- (__ \ "ultimate_parent_company") .readNullable[io.flow.shopify.merchant.config.v0.models.Company] ultimateBeneficiaryOwner <- (__ \ "ultimate_beneficiary_owner") .read[io.flow.shopify.merchant.config.v0.models.Individual] businessUrl <- (__ \ "business_url").read[String] businessAddress <- (__ \ "business_address").read[io.flow.common.v0.models.Address] } yield KnowYourBusinessUsa( id, organizationId, shop, primaryEntity, parentCompany, ultimateParentCompany, ultimateBeneficiaryOwner, businessUrl, businessAddress ) } def jsObjectKnowYourBusinessUsa( obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsa ): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "id" -> play.api.libs.json.JsString(obj.id), "organization_id" -> play.api.libs.json.JsString(obj.organizationId), "primary_entity" -> io.flow.shopify.merchant.config.v0.models.json.jsObjectEntity(obj.primaryEntity), "ultimate_beneficiary_owner" -> io.flow.shopify.merchant.config.v0.models.json .jsObjectIndividual(obj.ultimateBeneficiaryOwner), "business_url" -> play.api.libs.json.JsString(obj.businessUrl), "business_address" -> io.flow.common.v0.models.json.jsObjectAddress(obj.businessAddress) ) ++ (obj.shop match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("shop" -> io.flow.merchant.onboarding.v0.models.json.jsObjectShop(x)) }) ++ (obj.parentCompany match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json .obj("parent_company" -> io.flow.shopify.merchant.config.v0.models.json.jsObjectCompany(x)) }) ++ (obj.ultimateParentCompany match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json .obj("ultimate_parent_company" -> io.flow.shopify.merchant.config.v0.models.json.jsObjectCompany(x)) }) ++ play.api.libs.json.Json.obj("discriminator" -> "know_your_business_usa") } implicit def jsonWritesShopifyMerchantConfigKnowYourBusinessUsa: play.api.libs.json.Writes[KnowYourBusinessUsa] = { (obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsa) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectKnowYourBusinessUsa(obj) } } implicit def jsonReadsShopifyMerchantConfigKnowYourBusinessUsaForm : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsaForm] = { for { primaryEntity <- (__ \ "primary_entity").read[io.flow.shopify.merchant.config.v0.models.Entity] parentCompany <- (__ \ "parent_company").readNullable[io.flow.shopify.merchant.config.v0.models.Company] ultimateParentCompany <- (__ \ "ultimate_parent_company") .readNullable[io.flow.shopify.merchant.config.v0.models.Company] ultimateBeneficiaryOwner <- (__ \ "ultimate_beneficiary_owner") .read[io.flow.shopify.merchant.config.v0.models.Individual] businessUrl <- (__ \ "business_url").read[String] businessAddress <- (__ \ "business_address").read[io.flow.common.v0.models.Address] } yield KnowYourBusinessUsaForm( primaryEntity, parentCompany, ultimateParentCompany, ultimateBeneficiaryOwner, businessUrl, businessAddress ) } def jsObjectKnowYourBusinessUsaForm( obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsaForm ): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "primary_entity" -> io.flow.shopify.merchant.config.v0.models.json.jsObjectEntity(obj.primaryEntity), "ultimate_beneficiary_owner" -> io.flow.shopify.merchant.config.v0.models.json .jsObjectIndividual(obj.ultimateBeneficiaryOwner), "business_url" -> play.api.libs.json.JsString(obj.businessUrl), "business_address" -> io.flow.common.v0.models.json.jsObjectAddress(obj.businessAddress) ) ++ (obj.parentCompany match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json .obj("parent_company" -> io.flow.shopify.merchant.config.v0.models.json.jsObjectCompany(x)) }) ++ (obj.ultimateParentCompany match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json .obj("ultimate_parent_company" -> io.flow.shopify.merchant.config.v0.models.json.jsObjectCompany(x)) }) ++ play.api.libs.json.Json.obj("discriminator" -> "know_your_business_usa_form") } implicit def jsonWritesShopifyMerchantConfigKnowYourBusinessUsaForm : play.api.libs.json.Writes[KnowYourBusinessUsaForm] = { (obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsaForm) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectKnowYourBusinessUsaForm(obj) } } implicit def jsonReadsShopifyMerchantConfigPackageDimensions : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.PackageDimensions] = { (__ \ "dimensions").read[Seq[io.flow.common.v0.models.Dimension]].map { x => PackageDimensions(dimensions = x) } } def jsObjectPackageDimensions( obj: io.flow.shopify.merchant.config.v0.models.PackageDimensions ): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "dimensions" -> play.api.libs.json.Json.toJson(obj.dimensions) ) } implicit def jsonWritesShopifyMerchantConfigPackageDimensions: play.api.libs.json.Writes[PackageDimensions] = { (obj: io.flow.shopify.merchant.config.v0.models.PackageDimensions) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectPackageDimensions(obj) } } implicit def jsonReadsShopifyMerchantConfigPackageDimensionsForm : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.PackageDimensionsForm] = { (__ \ "dimensions").read[Seq[io.flow.common.v0.models.Dimension]].map { x => PackageDimensionsForm(dimensions = x) } } def jsObjectPackageDimensionsForm( obj: io.flow.shopify.merchant.config.v0.models.PackageDimensionsForm ): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "dimensions" -> play.api.libs.json.Json.toJson(obj.dimensions) ) } implicit def jsonWritesShopifyMerchantConfigPackageDimensionsForm : play.api.libs.json.Writes[PackageDimensionsForm] = { (obj: io.flow.shopify.merchant.config.v0.models.PackageDimensionsForm) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectPackageDimensionsForm(obj) } } implicit def jsonReadsShopifyMerchantConfigEntity : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.Entity] = (js: play.api.libs.json.JsValue) => { def readDiscriminator(discriminator: String) = { discriminator match { case "company" => io.flow.shopify.merchant.config.v0.models.json.jsonReadsShopifyMerchantConfigCompany.reads(js) case "individual" => io.flow.shopify.merchant.config.v0.models.json.jsonReadsShopifyMerchantConfigIndividual.reads(js) case other => play.api.libs.json.JsSuccess(io.flow.shopify.merchant.config.v0.models.EntityUndefinedType(other)) } } (js \ "discriminator").validate[String] match { case e: play.api.libs.json.JsError => e case s: play.api.libs.json.JsSuccess[String] => readDiscriminator(s.value) } } def jsObjectEntity(obj: io.flow.shopify.merchant.config.v0.models.Entity): play.api.libs.json.JsObject = { obj match { case x: io.flow.shopify.merchant.config.v0.models.Company => io.flow.shopify.merchant.config.v0.models.json.jsObjectCompany(x) case x: io.flow.shopify.merchant.config.v0.models.Individual => io.flow.shopify.merchant.config.v0.models.json.jsObjectIndividual(x) case other => { sys.error(s"The type[${other.getClass.getName}] has no JSON writer") } } } implicit def jsonWritesShopifyMerchantConfigEntity: play.api.libs.json.Writes[Entity] = { (obj: io.flow.shopify.merchant.config.v0.models.Entity) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectEntity(obj) } } implicit def jsonReadsShopifyMerchantConfigKnowYourBusiness : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.KnowYourBusiness] = (js: play.api.libs.json.JsValue) => { def readDiscriminator(discriminator: String) = { discriminator match { case "know_your_business_usa" => io.flow.shopify.merchant.config.v0.models.json.jsonReadsShopifyMerchantConfigKnowYourBusinessUsa.reads(js) case other => play.api.libs.json.JsSuccess(io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUndefinedType(other)) } } (js \ "discriminator").validate[String] match { case e: play.api.libs.json.JsError => e case s: play.api.libs.json.JsSuccess[String] => readDiscriminator(s.value) } } def jsObjectKnowYourBusiness( obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusiness ): play.api.libs.json.JsObject = { obj match { case x: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsa => io.flow.shopify.merchant.config.v0.models.json.jsObjectKnowYourBusinessUsa(x) case other => { sys.error(s"The type[${other.getClass.getName}] has no JSON writer") } } } implicit def jsonWritesShopifyMerchantConfigKnowYourBusiness: play.api.libs.json.Writes[KnowYourBusiness] = { (obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusiness) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectKnowYourBusiness(obj) } } implicit def jsonReadsShopifyMerchantConfigKnowYourBusinessForm : play.api.libs.json.Reads[io.flow.shopify.merchant.config.v0.models.KnowYourBusinessForm] = (js: play.api.libs.json.JsValue) => { def readDiscriminator(discriminator: String) = { discriminator match { case "know_your_business_usa_form" => io.flow.shopify.merchant.config.v0.models.json.jsonReadsShopifyMerchantConfigKnowYourBusinessUsaForm .reads(js) case other => play.api.libs.json .JsSuccess(io.flow.shopify.merchant.config.v0.models.KnowYourBusinessFormUndefinedType(other)) } } (js \ "discriminator").validate[String] match { case e: play.api.libs.json.JsError => e case s: play.api.libs.json.JsSuccess[String] => readDiscriminator(s.value) } } def jsObjectKnowYourBusinessForm( obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessForm ): play.api.libs.json.JsObject = { obj match { case x: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessUsaForm => io.flow.shopify.merchant.config.v0.models.json.jsObjectKnowYourBusinessUsaForm(x) case other => { sys.error(s"The type[${other.getClass.getName}] has no JSON writer") } } } implicit def jsonWritesShopifyMerchantConfigKnowYourBusinessForm: play.api.libs.json.Writes[KnowYourBusinessForm] = { (obj: io.flow.shopify.merchant.config.v0.models.KnowYourBusinessForm) => { io.flow.shopify.merchant.config.v0.models.json.jsObjectKnowYourBusinessForm(obj) } } }