/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.16.74 * User agent: apibuilder app.apibuilder.io/apicollective/apibuilder-postman-collection-v2-1/0.16.74/play_2_7_client */ package io.apibuilder.postman.collection.v21.v0.models { sealed trait Items extends _root_.scala.Product with _root_.scala.Serializable { def itemsType: ItemsType } /** * Defines the valid type values for the type Items */ sealed trait ItemsType extends _root_.scala.Product with _root_.scala.Serializable object ItemsType { case object Item extends ItemsType { override def toString = "item" } case object Folder extends ItemsType { override def toString = "folder" } final case class UNDEFINED(override val toString: String) extends ItemsType val all: scala.List[ItemsType] = scala.List(Item, Folder) private val byName: Map[String, ItemsType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): ItemsType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[ItemsType] = byName.get(value.toLowerCase) } final case class Auth( `type`: io.apibuilder.postman.collection.v21.v0.models.AuthEnum, basic: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.BasicAuth]] = None ) final case class BasicAuth( key: String, value: String, `type`: _root_.scala.Option[String] = None ) final case class Body( raw: _root_.scala.Option[String] = None, mode: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.BodyMode] = None, urlencoded: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.UrlEncoded]] = None, file: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.File] = None, formdata: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.FormParameter]] = None ) /** * @param info Detailed description of the info block * @param item Items are the basic unit for a Postman collection. You can think of them as * corresponding to a single API endpoint. Each Item has one request and may have * multiple API responses associated with it. * @param event Postman allows you to configure scripts to run when specific events occur. These * scripts are stored here, and can be referenced in the collection by their ID. * @param variable Collection variables allow you to define a set of variables, that are a part of * the collection, as opposed to environments, which are separate entities.Note: * Collection variables must not contain any sensitive information. * @param auth Represents authentication helpers provided by Postman */ final case class Collection( info: io.apibuilder.postman.collection.v21.v0.models.Info, item: Seq[io.apibuilder.postman.collection.v21.v0.models.Items], event: Seq[io.apibuilder.postman.collection.v21.v0.models.Event], variable: Seq[io.apibuilder.postman.collection.v21.v0.models.Variable], auth: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Auth] = None ) /** * @param content The content of the description goes here, as a raw string. * @param `type` Holds the mime type of the raw description content. E.g: 'text/markdown' or * 'text/html'. The type is used to correctly render the description when * generating documentation, or in the Postman app. */ final case class Description( content: _root_.scala.Option[String] = None, `type`: _root_.scala.Option[String] = None ) /** * @param listen Can be set to test or prerequest for test scripts or pre-request scripts * respectively. * @param id A unique identifier for the enclosing event. * @param disabled Indicates whether the event is disabled. If absent, the event is assumed to be * enabled */ final case class Event( listen: io.apibuilder.postman.collection.v21.v0.models.EventType, script: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Script] = None, id: _root_.scala.Option[String] = None, disabled: _root_.scala.Option[Boolean] = None ) final case class File( src: _root_.scala.Option[String] = None, content: _root_.scala.Option[String] = None ) /** * @param name A folder's friendly name is defined by this field. You would want to set this * field to a value that would allow you to easily identify this folder. */ final case class Folder( name: String, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None, variable: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Variable]] = None, item: Seq[io.apibuilder.postman.collection.v21.v0.models.Item], event: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Event]] = None, auth: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Auth] = None ) extends Items { override val itemsType: ItemsType = ItemsType.Folder } final case class FormParameter( key: String, value: _root_.scala.Option[String] = None, disabled: _root_.scala.Option[Boolean] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None, contentType: _root_.scala.Option[String] = None, `type`: _root_.scala.Option[String] = None ) final case class Header( key: String, value: String, disabled: _root_.scala.Option[Boolean] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None ) /** * @param name A collection's friendly name is defined by this field. You would want to set * this field to a value that would allow you to easily identify this collection * among a bunch of other collections, as such outlining its usage or content. * @param postmanId Every collection is identified by the unique value of this field. The value of * this field is usually easiest to generate using a UID generator function. If you * already have a collection, it is recommended that you maintain the same id since * changing the id usually implies that is a different collection than it was * originally.Note: This field exists for compatibility reasons with Collection * Format V1. * @param description A Description can be a raw text, or be an object, which holds the description * along with its format. * @param version Postman allows you to version your collections as they grow, and this field * holds the version number. While optional, it is recommended that you use this * field to its fullest extent! * @param schema This should ideally hold a link to the Postman schema that is used to validate * this collection. E.g: https://schema.getpostman.com/collection/v1 */ final case class Info( name: String, postmanId: _root_.scala.Option[String] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None, version: _root_.scala.Option[String] = None, schema: String ) /** * @param id A unique ID that is used to identify collections internally * @param name A human readable identifier for the current item. * @param description A Description can be a raw text, or be an object, which holds the description * along with its format. * @param variable Collection variables allow you to define a set of variables, that are a part of * the collection, as opposed to environments, which are separate entities. * @param event Postman allows you to configure scripts to run when specific events occur. These * scripts are stored here, and can be referenced in the collection by their ID. */ final case class Item( id: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None, variable: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Variable]] = None, event: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Event]] = None, request: io.apibuilder.postman.collection.v21.v0.models.Request, response: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Response]] = None ) extends Items { override val itemsType: ItemsType = ItemsType.Item } final case class QueryParam( key: _root_.scala.Option[String] = None, value: _root_.scala.Option[String] = None, disabled: _root_.scala.Option[Boolean] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None ) final case class Request( url: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Url] = None, auth: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Auth] = None, method: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Method] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None, header: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Header]] = None, body: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Body] = None ) final case class Response( id: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, originalRequest: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Request] = None, responseTime: _root_.scala.Option[String] = None, header: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Header]] = None, body: _root_.scala.Option[String] = None, status: _root_.scala.Option[String] = None, code: _root_.scala.Option[Int] = None ) /** * @param exec Body of the script in lines * @param `type` Type of the script. E.g: 'text/javascript' * @param id A unique, user defined identifier that can be used to refer to this script from * requests. * @param src If object, contains the complete broken-down URL for this request. If string, * contains the literal request URL. * @param name Script name */ final case class Script( exec: Seq[String], `type`: String = "text/javascript", id: _root_.scala.Option[String] = None, src: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None ) /** * @param raw The string representation of the request URL, including the protocol, host, * path, hash, query parameter(s) and path variable(s). * @param protocol The protocol_ associated with the request, E.g: 'http' * @param host The host for the URL, E.g: api.yourdomain.com. Can be stored as a string or as * an array of strings. * @param port The port number present in this URL. An empty value implies 80/443 depending on * whether the protocol_ field contains http/https. * @param hash Contains the URL fragment (if any). Usually this is not transmitted over the * network, but it could be useful to store this in some cases. * @param variable Postman supports path variables with the syntax * /path/:variableName/to/somewhere. These variables are stored in this field. */ final case class Url( raw: _root_.scala.Option[String] = None, protocol: _root_.scala.Option[String] = None, host: _root_.scala.Option[Seq[String]] = None, path: _root_.scala.Option[Seq[String]] = None, port: _root_.scala.Option[String] = None, query: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.QueryParam]] = None, hash: _root_.scala.Option[String] = None, variable: _root_.scala.Option[Seq[io.apibuilder.postman.collection.v21.v0.models.Variable]] = None ) final case class UrlEncoded( key: String, value: _root_.scala.Option[String] = None, disabled: _root_.scala.Option[Boolean] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None ) /** * Using variables in your Postman requests eliminates the need to duplicate * requests, which can save a lot of time. Variables can be defined, and referenced * to from any part of a request. * * @param id A variable ID is a unique user-defined value that identifies the variable within * a collection. In traditional terms, this would be a variable name. * @param key A variable key is a human friendly value that identifies the variable within a * collection. In traditional terms, this would be a variable name. * @param value The value that a variable holds in this collection. Ultimately, the variables * will be replaced by this value, when say running a set of requests from a * collection * @param `type` A variable may have multiple types. This field specifies the type of the * variable. * @param name Variable name * @param system When set to true, indicates that this variable has been set by Postman */ final case class Variable( id: _root_.scala.Option[String] = None, key: _root_.scala.Option[String] = None, value: _root_.scala.Option[String] = None, `type`: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, description: _root_.scala.Option[io.apibuilder.postman.collection.v21.v0.models.Description] = None, system: _root_.scala.Option[Boolean] = None, disabled: _root_.scala.Option[Boolean] = None ) /** * Provides future compatibility in clients - in the future, when a type is added * to the union Items, it will need to be handled in the client code. This * implementation will deserialize these future types as an instance of this class. * * @param description Information about the type that we received that is undefined in this version of * the client. */ final case class ItemsUndefinedType( description: String ) extends Items { override val itemsType: ItemsType = ItemsType.UNDEFINED(description) } sealed trait AuthEnum extends _root_.scala.Product with _root_.scala.Serializable object AuthEnum { case object Awsv4 extends AuthEnum { override def toString = "awsv4" } case object Basic extends AuthEnum { override def toString = "basic" } case object Bearer extends AuthEnum { override def toString = "bearer" } case object Digest extends AuthEnum { override def toString = "digest" } case object Hawk extends AuthEnum { override def toString = "hawk" } case object Noauth extends AuthEnum { override def toString = "noauth" } case object Oauth1 extends AuthEnum { override def toString = "oauth1" } case object Oauth2 extends AuthEnum { override def toString = "oauth2" } case object Ntlm extends AuthEnum { override def toString = "ntlm" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends AuthEnum /** * 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[AuthEnum] = scala.List(Awsv4, Basic, Bearer, Digest, Hawk, Noauth, Oauth1, Oauth2, Ntlm) private val byName: Map[String, AuthEnum] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): AuthEnum = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[AuthEnum] = byName.get(value.toLowerCase) } sealed trait BodyMode extends _root_.scala.Product with _root_.scala.Serializable object BodyMode { case object Raw extends BodyMode { override def toString = "raw" } case object Urlencoded extends BodyMode { override def toString = "urlencoded" } case object Formdata extends BodyMode { override def toString = "formdata" } case object File extends BodyMode { override def toString = "file" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends BodyMode /** * 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[BodyMode] = scala.List(Raw, Urlencoded, Formdata, File) private val byName: Map[String, BodyMode] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): BodyMode = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[BodyMode] = byName.get(value.toLowerCase) } sealed trait EventType extends _root_.scala.Product with _root_.scala.Serializable object EventType { case object Test extends EventType { override def toString = "test" } case object Prerequest extends EventType { override def toString = "prerequest" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends EventType /** * 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[EventType] = scala.List(Test, Prerequest) private val byName: Map[String, EventType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): EventType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[EventType] = byName.get(value.toLowerCase) } sealed trait Method extends _root_.scala.Product with _root_.scala.Serializable object Method { case object Get extends Method { override def toString = "GET" } case object Put extends Method { override def toString = "PUT" } case object Post extends Method { override def toString = "POST" } case object Patch extends Method { override def toString = "PATCH" } case object Delete extends Method { override def toString = "DELETE" } case object Copy extends Method { override def toString = "COPY" } case object Head extends Method { override def toString = "HEAD" } case object Options extends Method { override def toString = "OPTIONS" } case object Link extends Method { override def toString = "LINK" } case object Unlink extends Method { override def toString = "UNLINK" } case object Purge extends Method { override def toString = "PURGE" } case object Lock extends Method { override def toString = "LOCK" } case object Unlock extends Method { override def toString = "UNLOCK" } case object Propfind extends Method { override def toString = "PROPFIND" } case object View extends Method { override def toString = "VIEW" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends Method /** * 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[Method] = scala.List(Get, Put, Post, Patch, Delete, Copy, Head, Options, Link, Unlink, Purge, Lock, Unlock, Propfind, View) private val byName: Map[String, Method] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): Method = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[Method] = byName.get(value.toLowerCase) } } package io.apibuilder.postman.collection.v21.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.postman.collection.v21.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 jsonReadsApiBuilderPostmanCollectionV21AuthEnum: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] = new play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.AuthEnum(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.AuthEnum(v)) case _: play.api.libs.json.JsError => (js \ "auth_enum").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.AuthEnum(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApiBuilderPostmanCollectionV21AuthEnum(obj: io.apibuilder.postman.collection.v21.v0.models.AuthEnum) = { play.api.libs.json.JsString(obj.toString) } def jsObjectAuthEnum(obj: io.apibuilder.postman.collection.v21.v0.models.AuthEnum) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApiBuilderPostmanCollectionV21AuthEnum: play.api.libs.json.Writes[AuthEnum] = { (obj: io.apibuilder.postman.collection.v21.v0.models.AuthEnum) => { io.apibuilder.postman.collection.v21.v0.models.json.jsonWritesApiBuilderPostmanCollectionV21AuthEnum(obj) } } implicit val jsonReadsApiBuilderPostmanCollectionV21BodyMode: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.BodyMode] = new play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.BodyMode] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.postman.collection.v21.v0.models.BodyMode] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.BodyMode(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.BodyMode(v)) case _: play.api.libs.json.JsError => (js \ "body_mode").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.BodyMode(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApiBuilderPostmanCollectionV21BodyMode(obj: io.apibuilder.postman.collection.v21.v0.models.BodyMode) = { play.api.libs.json.JsString(obj.toString) } def jsObjectBodyMode(obj: io.apibuilder.postman.collection.v21.v0.models.BodyMode) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApiBuilderPostmanCollectionV21BodyMode: play.api.libs.json.Writes[BodyMode] = { (obj: io.apibuilder.postman.collection.v21.v0.models.BodyMode) => { io.apibuilder.postman.collection.v21.v0.models.json.jsonWritesApiBuilderPostmanCollectionV21BodyMode(obj) } } implicit val jsonReadsApiBuilderPostmanCollectionV21EventType: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.EventType] = new play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.EventType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.postman.collection.v21.v0.models.EventType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.EventType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.EventType(v)) case _: play.api.libs.json.JsError => (js \ "event_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.EventType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApiBuilderPostmanCollectionV21EventType(obj: io.apibuilder.postman.collection.v21.v0.models.EventType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectEventType(obj: io.apibuilder.postman.collection.v21.v0.models.EventType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApiBuilderPostmanCollectionV21EventType: play.api.libs.json.Writes[EventType] = { (obj: io.apibuilder.postman.collection.v21.v0.models.EventType) => { io.apibuilder.postman.collection.v21.v0.models.json.jsonWritesApiBuilderPostmanCollectionV21EventType(obj) } } implicit val jsonReadsApiBuilderPostmanCollectionV21Method: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Method] = new play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Method] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[io.apibuilder.postman.collection.v21.v0.models.Method] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.Method(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.Method(v)) case _: play.api.libs.json.JsError => (js \ "method").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.Method(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesApiBuilderPostmanCollectionV21Method(obj: io.apibuilder.postman.collection.v21.v0.models.Method) = { play.api.libs.json.JsString(obj.toString) } def jsObjectMethod(obj: io.apibuilder.postman.collection.v21.v0.models.Method) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesApiBuilderPostmanCollectionV21Method: play.api.libs.json.Writes[Method] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Method) => { io.apibuilder.postman.collection.v21.v0.models.json.jsonWritesApiBuilderPostmanCollectionV21Method(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Auth: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Auth] = { for { `type` <- (__ \ "type").read[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] basic <- (__ \ "basic").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.BasicAuth]] } yield Auth(`type`, basic) } def jsObjectAuth(obj: io.apibuilder.postman.collection.v21.v0.models.Auth): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`.toString) ) ++ (obj.basic match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("basic" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Auth: play.api.libs.json.Writes[Auth] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Auth) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectAuth(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21BasicAuth: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.BasicAuth] = { for { key <- (__ \ "key").read[String] value <- (__ \ "value").read[String] `type` <- (__ \ "type").readNullable[String] } yield BasicAuth(key, value, `type`) } def jsObjectBasicAuth(obj: io.apibuilder.postman.collection.v21.v0.models.BasicAuth): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "key" -> play.api.libs.json.JsString(obj.key), "value" -> play.api.libs.json.JsString(obj.value) ) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21BasicAuth: play.api.libs.json.Writes[BasicAuth] = { (obj: io.apibuilder.postman.collection.v21.v0.models.BasicAuth) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectBasicAuth(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Body: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Body] = { for { raw <- (__ \ "raw").readNullable[String] mode <- (__ \ "mode").readNullable[io.apibuilder.postman.collection.v21.v0.models.BodyMode] urlencoded <- (__ \ "urlencoded").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.UrlEncoded]] file <- (__ \ "file").readNullable[io.apibuilder.postman.collection.v21.v0.models.File] formdata <- (__ \ "formdata").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.FormParameter]] } yield Body(raw, mode, urlencoded, file, formdata) } def jsObjectBody(obj: io.apibuilder.postman.collection.v21.v0.models.Body): play.api.libs.json.JsObject = { (obj.raw match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("raw" -> play.api.libs.json.JsString(x)) }) ++ (obj.mode match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("mode" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.urlencoded match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("urlencoded" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.file match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("file" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectFile(x)) }) ++ (obj.formdata match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("formdata" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Body: play.api.libs.json.Writes[Body] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Body) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectBody(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Collection: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Collection] = { for { info <- (__ \ "info").read[io.apibuilder.postman.collection.v21.v0.models.Info] item <- (__ \ "item").read[Seq[io.apibuilder.postman.collection.v21.v0.models.Items]] event <- (__ \ "event").read[Seq[io.apibuilder.postman.collection.v21.v0.models.Event]] variable <- (__ \ "variable").read[Seq[io.apibuilder.postman.collection.v21.v0.models.Variable]] auth <- (__ \ "auth").readNullable[io.apibuilder.postman.collection.v21.v0.models.Auth] } yield Collection(info, item, event, variable, auth) } def jsObjectCollection(obj: io.apibuilder.postman.collection.v21.v0.models.Collection): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "info" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectInfo(obj.info), "item" -> play.api.libs.json.Json.toJson(obj.item), "event" -> play.api.libs.json.Json.toJson(obj.event), "variable" -> play.api.libs.json.Json.toJson(obj.variable) ) ++ (obj.auth match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("auth" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectAuth(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Collection: play.api.libs.json.Writes[Collection] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Collection) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectCollection(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Description: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Description] = { for { content <- (__ \ "content").readNullable[String] `type` <- (__ \ "type").readNullable[String] } yield Description(content, `type`) } def jsObjectDescription(obj: io.apibuilder.postman.collection.v21.v0.models.Description): play.api.libs.json.JsObject = { (obj.content match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("content" -> play.api.libs.json.JsString(x)) }) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Description: play.api.libs.json.Writes[Description] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Description) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Event: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Event] = { for { listen <- (__ \ "listen").read[io.apibuilder.postman.collection.v21.v0.models.EventType] script <- (__ \ "script").readNullable[io.apibuilder.postman.collection.v21.v0.models.Script] id <- (__ \ "id").readNullable[String] disabled <- (__ \ "disabled").readNullable[Boolean] } yield Event(listen, script, id, disabled) } def jsObjectEvent(obj: io.apibuilder.postman.collection.v21.v0.models.Event): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "listen" -> play.api.libs.json.JsString(obj.listen.toString) ) ++ (obj.script match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("script" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectScript(x)) }) ++ (obj.id match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("id" -> play.api.libs.json.JsString(x)) }) ++ (obj.disabled match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("disabled" -> play.api.libs.json.JsBoolean(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Event: play.api.libs.json.Writes[Event] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Event) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectEvent(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21File: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.File] = { for { src <- (__ \ "src").readNullable[String] content <- (__ \ "content").readNullable[String] } yield File(src, content) } def jsObjectFile(obj: io.apibuilder.postman.collection.v21.v0.models.File): play.api.libs.json.JsObject = { (obj.src match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("src" -> play.api.libs.json.JsString(x)) }) ++ (obj.content match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("content" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21File: play.api.libs.json.Writes[File] = { (obj: io.apibuilder.postman.collection.v21.v0.models.File) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectFile(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Folder: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Folder] = { for { name <- (__ \ "name").read[String] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] variable <- (__ \ "variable").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Variable]] item <- (__ \ "item").read[Seq[io.apibuilder.postman.collection.v21.v0.models.Item]] event <- (__ \ "event").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Event]] auth <- (__ \ "auth").readNullable[io.apibuilder.postman.collection.v21.v0.models.Auth] } yield Folder(name, description, variable, item, event, auth) } def jsObjectFolder(obj: io.apibuilder.postman.collection.v21.v0.models.Folder): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "item" -> play.api.libs.json.Json.toJson(obj.item) ) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) ++ (obj.variable match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("variable" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.event match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("event" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.auth match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("auth" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectAuth(x)) }) ++ play.api.libs.json.Json.obj("type" -> "folder") } implicit def jsonWritesApiBuilderPostmanCollectionV21Folder: play.api.libs.json.Writes[Folder] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Folder) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectFolder(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21FormParameter: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.FormParameter] = { for { key <- (__ \ "key").read[String] value <- (__ \ "value").readNullable[String] disabled <- (__ \ "disabled").readNullable[Boolean] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] contentType <- (__ \ "contentType").readNullable[String] `type` <- (__ \ "type").readNullable[String] } yield FormParameter(key, value, disabled, description, contentType, `type`) } def jsObjectFormParameter(obj: io.apibuilder.postman.collection.v21.v0.models.FormParameter): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "key" -> play.api.libs.json.JsString(obj.key) ) ++ (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.disabled match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("disabled" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) ++ (obj.contentType match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("contentType" -> play.api.libs.json.JsString(x)) }) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21FormParameter: play.api.libs.json.Writes[FormParameter] = { (obj: io.apibuilder.postman.collection.v21.v0.models.FormParameter) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectFormParameter(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Header: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Header] = { for { key <- (__ \ "key").read[String] value <- (__ \ "value").read[String] disabled <- (__ \ "disabled").readNullable[Boolean] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] } yield Header(key, value, disabled, description) } def jsObjectHeader(obj: io.apibuilder.postman.collection.v21.v0.models.Header): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "key" -> play.api.libs.json.JsString(obj.key), "value" -> play.api.libs.json.JsString(obj.value) ) ++ (obj.disabled match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("disabled" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Header: play.api.libs.json.Writes[Header] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Header) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectHeader(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Info: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Info] = { for { name <- (__ \ "name").read[String] postmanId <- (__ \ "postman_id").readNullable[String] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] version <- (__ \ "version").readNullable[String] schema <- (__ \ "schema").read[String] } yield Info(name, postmanId, description, version, schema) } def jsObjectInfo(obj: io.apibuilder.postman.collection.v21.v0.models.Info): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "schema" -> play.api.libs.json.JsString(obj.schema) ) ++ (obj.postmanId match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("postman_id" -> 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" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) ++ (obj.version match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("version" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Info: play.api.libs.json.Writes[Info] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Info) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectInfo(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Item: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Item] = { for { id <- (__ \ "id").readNullable[String] name <- (__ \ "name").readNullable[String] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] variable <- (__ \ "variable").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Variable]] event <- (__ \ "event").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Event]] request <- (__ \ "request").read[io.apibuilder.postman.collection.v21.v0.models.Request] response <- (__ \ "response").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Response]] } yield Item(id, name, description, variable, event, request, response) } def jsObjectItem(obj: io.apibuilder.postman.collection.v21.v0.models.Item): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "request" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectRequest(obj.request) ) ++ (obj.id match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("id" -> play.api.libs.json.JsString(x)) }) ++ (obj.name match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("name" -> play.api.libs.json.JsString(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) ++ (obj.variable match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("variable" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.event match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("event" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.response match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("response" -> play.api.libs.json.Json.toJson(x)) }) ++ play.api.libs.json.Json.obj("type" -> "item") } implicit def jsonWritesApiBuilderPostmanCollectionV21Item: play.api.libs.json.Writes[Item] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Item) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectItem(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21QueryParam: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.QueryParam] = { for { key <- (__ \ "key").readNullable[String] value <- (__ \ "value").readNullable[String] disabled <- (__ \ "disabled").readNullable[Boolean] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] } yield QueryParam(key, value, disabled, description) } def jsObjectQueryParam(obj: io.apibuilder.postman.collection.v21.v0.models.QueryParam): play.api.libs.json.JsObject = { (obj.key match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("key" -> play.api.libs.json.JsString(x)) }) ++ (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.disabled match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("disabled" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21QueryParam: play.api.libs.json.Writes[QueryParam] = { (obj: io.apibuilder.postman.collection.v21.v0.models.QueryParam) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectQueryParam(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Request: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Request] = { for { url <- (__ \ "url").readNullable[io.apibuilder.postman.collection.v21.v0.models.Url] auth <- (__ \ "auth").readNullable[io.apibuilder.postman.collection.v21.v0.models.Auth] method <- (__ \ "method").readNullable[io.apibuilder.postman.collection.v21.v0.models.Method] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] header <- (__ \ "header").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Header]] body <- (__ \ "body").readNullable[io.apibuilder.postman.collection.v21.v0.models.Body] } yield Request(url, auth, method, description, header, body) } def jsObjectRequest(obj: io.apibuilder.postman.collection.v21.v0.models.Request): play.api.libs.json.JsObject = { (obj.url match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("url" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectUrl(x)) }) ++ (obj.auth match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("auth" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectAuth(x)) }) ++ (obj.method match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("method" -> play.api.libs.json.JsString(x.toString)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) ++ (obj.header match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("header" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.body match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("body" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectBody(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Request: play.api.libs.json.Writes[Request] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Request) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectRequest(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Response: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Response] = { for { id <- (__ \ "id").readNullable[String] name <- (__ \ "name").readNullable[String] originalRequest <- (__ \ "originalRequest").readNullable[io.apibuilder.postman.collection.v21.v0.models.Request] responseTime <- (__ \ "responseTime").readNullable[String] header <- (__ \ "header").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Header]] body <- (__ \ "body").readNullable[String] status <- (__ \ "status").readNullable[String] code <- (__ \ "code").readNullable[Int] } yield Response(id, name, originalRequest, responseTime, header, body, status, code) } def jsObjectResponse(obj: io.apibuilder.postman.collection.v21.v0.models.Response): play.api.libs.json.JsObject = { (obj.id match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("id" -> play.api.libs.json.JsString(x)) }) ++ (obj.name match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("name" -> play.api.libs.json.JsString(x)) }) ++ (obj.originalRequest match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("originalRequest" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectRequest(x)) }) ++ (obj.responseTime match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("responseTime" -> play.api.libs.json.JsString(x)) }) ++ (obj.header match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("header" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.body match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("body" -> play.api.libs.json.JsString(x)) }) ++ (obj.status match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("status" -> play.api.libs.json.JsString(x)) }) ++ (obj.code match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("code" -> play.api.libs.json.JsNumber(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Response: play.api.libs.json.Writes[Response] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Response) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectResponse(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Script: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Script] = { for { exec <- (__ \ "exec").read[Seq[String]] `type` <- (__ \ "type").read[String] id <- (__ \ "id").readNullable[String] src <- (__ \ "src").readNullable[String] name <- (__ \ "name").readNullable[String] } yield Script(exec, `type`, id, src, name) } def jsObjectScript(obj: io.apibuilder.postman.collection.v21.v0.models.Script): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "exec" -> play.api.libs.json.Json.toJson(obj.exec), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ (obj.id match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("id" -> play.api.libs.json.JsString(x)) }) ++ (obj.src match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("src" -> play.api.libs.json.JsString(x)) }) ++ (obj.name match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("name" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Script: play.api.libs.json.Writes[Script] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Script) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectScript(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Url: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Url] = { for { raw <- (__ \ "raw").readNullable[String] protocol <- (__ \ "protocol").readNullable[String] host <- (__ \ "host").readNullable[Seq[String]] path <- (__ \ "path").readNullable[Seq[String]] port <- (__ \ "port").readNullable[String] query <- (__ \ "query").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.QueryParam]] hash <- (__ \ "hash").readNullable[String] variable <- (__ \ "variable").readNullable[Seq[io.apibuilder.postman.collection.v21.v0.models.Variable]] } yield Url(raw, protocol, host, path, port, query, hash, variable) } def jsObjectUrl(obj: io.apibuilder.postman.collection.v21.v0.models.Url): play.api.libs.json.JsObject = { (obj.raw match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("raw" -> play.api.libs.json.JsString(x)) }) ++ (obj.protocol match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("protocol" -> play.api.libs.json.JsString(x)) }) ++ (obj.host match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("host" -> play.api.libs.json.Json.toJson(x)) }) ++ (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.Json.toJson(x)) }) ++ (obj.port match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("port" -> play.api.libs.json.JsString(x)) }) ++ (obj.query match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("query" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.hash match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("hash" -> play.api.libs.json.JsString(x)) }) ++ (obj.variable match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("variable" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Url: play.api.libs.json.Writes[Url] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Url) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectUrl(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21UrlEncoded: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.UrlEncoded] = { for { key <- (__ \ "key").read[String] value <- (__ \ "value").readNullable[String] disabled <- (__ \ "disabled").readNullable[Boolean] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] } yield UrlEncoded(key, value, disabled, description) } def jsObjectUrlEncoded(obj: io.apibuilder.postman.collection.v21.v0.models.UrlEncoded): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "key" -> play.api.libs.json.JsString(obj.key) ) ++ (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.disabled match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("disabled" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21UrlEncoded: play.api.libs.json.Writes[UrlEncoded] = { (obj: io.apibuilder.postman.collection.v21.v0.models.UrlEncoded) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectUrlEncoded(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Variable: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Variable] = { for { id <- (__ \ "id").readNullable[String] key <- (__ \ "key").readNullable[String] value <- (__ \ "value").readNullable[String] `type` <- (__ \ "type").readNullable[String] name <- (__ \ "name").readNullable[String] description <- (__ \ "description").readNullable[io.apibuilder.postman.collection.v21.v0.models.Description] system <- (__ \ "system").readNullable[Boolean] disabled <- (__ \ "disabled").readNullable[Boolean] } yield Variable(id, key, value, `type`, name, description, system, disabled) } def jsObjectVariable(obj: io.apibuilder.postman.collection.v21.v0.models.Variable): play.api.libs.json.JsObject = { (obj.id match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("id" -> play.api.libs.json.JsString(x)) }) ++ (obj.key match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("key" -> play.api.libs.json.JsString(x)) }) ++ (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.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.JsString(x)) }) ++ (obj.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.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> io.apibuilder.postman.collection.v21.v0.models.json.jsObjectDescription(x)) }) ++ (obj.system match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("system" -> play.api.libs.json.JsBoolean(x)) }) ++ (obj.disabled match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("disabled" -> play.api.libs.json.JsBoolean(x)) }) } implicit def jsonWritesApiBuilderPostmanCollectionV21Variable: play.api.libs.json.Writes[Variable] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Variable) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectVariable(obj) } } implicit def jsonReadsApiBuilderPostmanCollectionV21Items: play.api.libs.json.Reads[io.apibuilder.postman.collection.v21.v0.models.Items] = (js: play.api.libs.json.JsValue) => { def readDiscriminator(discriminator: String) = { discriminator match { case "item" => io.apibuilder.postman.collection.v21.v0.models.json.jsonReadsApiBuilderPostmanCollectionV21Item.reads(js) case "folder" => io.apibuilder.postman.collection.v21.v0.models.json.jsonReadsApiBuilderPostmanCollectionV21Folder.reads(js) case other => play.api.libs.json.JsSuccess(io.apibuilder.postman.collection.v21.v0.models.ItemsUndefinedType(other)) } } (js \ "type").validate[String] match { case e: play.api.libs.json.JsError => e case s: play.api.libs.json.JsSuccess[String] => readDiscriminator(s.value) } } def jsObjectItems(obj: io.apibuilder.postman.collection.v21.v0.models.Items): play.api.libs.json.JsObject = { obj match { case x: io.apibuilder.postman.collection.v21.v0.models.Item => io.apibuilder.postman.collection.v21.v0.models.json.jsObjectItem(x) case x: io.apibuilder.postman.collection.v21.v0.models.Folder => io.apibuilder.postman.collection.v21.v0.models.json.jsObjectFolder(x) case other => { sys.error(s"The type[${other.getClass.getName}] has no JSON writer") } } } implicit def jsonWritesApiBuilderPostmanCollectionV21Items: play.api.libs.json.Writes[Items] = { (obj: io.apibuilder.postman.collection.v21.v0.models.Items) => { io.apibuilder.postman.collection.v21.v0.models.json.jsObjectItems(obj) } } } } package io.apibuilder.postman.collection.v21.v0 { object Bindables { import play.api.mvc.{PathBindable, QueryStringBindable} // import models directly for backwards compatibility with prior versions of the generator import Core._ import Models._ object Core { implicit def pathBindableDateTimeIso8601(implicit stringBinder: QueryStringBindable[String]): PathBindable[_root_.org.joda.time.DateTime] = ApibuilderPathBindable(ApibuilderTypes.dateTimeIso8601) implicit def queryStringBindableDateTimeIso8601(implicit stringBinder: QueryStringBindable[String]): QueryStringBindable[_root_.org.joda.time.DateTime] = ApibuilderQueryStringBindable(ApibuilderTypes.dateTimeIso8601) implicit def pathBindableDateIso8601(implicit stringBinder: QueryStringBindable[String]): PathBindable[_root_.org.joda.time.LocalDate] = ApibuilderPathBindable(ApibuilderTypes.dateIso8601) implicit def queryStringBindableDateIso8601(implicit stringBinder: QueryStringBindable[String]): QueryStringBindable[_root_.org.joda.time.LocalDate] = ApibuilderQueryStringBindable(ApibuilderTypes.dateIso8601) } object Models { import io.apibuilder.postman.collection.v21.v0.models._ val authEnumConverter: ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] = new ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] { override def convert(value: String): io.apibuilder.postman.collection.v21.v0.models.AuthEnum = io.apibuilder.postman.collection.v21.v0.models.AuthEnum(value) override def convert(value: io.apibuilder.postman.collection.v21.v0.models.AuthEnum): String = value.toString override def example: io.apibuilder.postman.collection.v21.v0.models.AuthEnum = io.apibuilder.postman.collection.v21.v0.models.AuthEnum.Awsv4 override def validValues: Seq[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] = io.apibuilder.postman.collection.v21.v0.models.AuthEnum.all } implicit def pathBindableAuthEnum(implicit stringBinder: QueryStringBindable[String]): PathBindable[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] = ApibuilderPathBindable(authEnumConverter) implicit def queryStringBindableAuthEnum(implicit stringBinder: QueryStringBindable[String]): QueryStringBindable[io.apibuilder.postman.collection.v21.v0.models.AuthEnum] = ApibuilderQueryStringBindable(authEnumConverter) val bodyModeConverter: ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.BodyMode] = new ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.BodyMode] { override def convert(value: String): io.apibuilder.postman.collection.v21.v0.models.BodyMode = io.apibuilder.postman.collection.v21.v0.models.BodyMode(value) override def convert(value: io.apibuilder.postman.collection.v21.v0.models.BodyMode): String = value.toString override def example: io.apibuilder.postman.collection.v21.v0.models.BodyMode = io.apibuilder.postman.collection.v21.v0.models.BodyMode.Raw override def validValues: Seq[io.apibuilder.postman.collection.v21.v0.models.BodyMode] = io.apibuilder.postman.collection.v21.v0.models.BodyMode.all } implicit def pathBindableBodyMode(implicit stringBinder: QueryStringBindable[String]): PathBindable[io.apibuilder.postman.collection.v21.v0.models.BodyMode] = ApibuilderPathBindable(bodyModeConverter) implicit def queryStringBindableBodyMode(implicit stringBinder: QueryStringBindable[String]): QueryStringBindable[io.apibuilder.postman.collection.v21.v0.models.BodyMode] = ApibuilderQueryStringBindable(bodyModeConverter) val eventTypeConverter: ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.EventType] = new ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.EventType] { override def convert(value: String): io.apibuilder.postman.collection.v21.v0.models.EventType = io.apibuilder.postman.collection.v21.v0.models.EventType(value) override def convert(value: io.apibuilder.postman.collection.v21.v0.models.EventType): String = value.toString override def example: io.apibuilder.postman.collection.v21.v0.models.EventType = io.apibuilder.postman.collection.v21.v0.models.EventType.Test override def validValues: Seq[io.apibuilder.postman.collection.v21.v0.models.EventType] = io.apibuilder.postman.collection.v21.v0.models.EventType.all } implicit def pathBindableEventType(implicit stringBinder: QueryStringBindable[String]): PathBindable[io.apibuilder.postman.collection.v21.v0.models.EventType] = ApibuilderPathBindable(eventTypeConverter) implicit def queryStringBindableEventType(implicit stringBinder: QueryStringBindable[String]): QueryStringBindable[io.apibuilder.postman.collection.v21.v0.models.EventType] = ApibuilderQueryStringBindable(eventTypeConverter) val methodConverter: ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.Method] = new ApibuilderTypeConverter[io.apibuilder.postman.collection.v21.v0.models.Method] { override def convert(value: String): io.apibuilder.postman.collection.v21.v0.models.Method = io.apibuilder.postman.collection.v21.v0.models.Method(value) override def convert(value: io.apibuilder.postman.collection.v21.v0.models.Method): String = value.toString override def example: io.apibuilder.postman.collection.v21.v0.models.Method = io.apibuilder.postman.collection.v21.v0.models.Method.Get override def validValues: Seq[io.apibuilder.postman.collection.v21.v0.models.Method] = io.apibuilder.postman.collection.v21.v0.models.Method.all } implicit def pathBindableMethod(implicit stringBinder: QueryStringBindable[String]): PathBindable[io.apibuilder.postman.collection.v21.v0.models.Method] = ApibuilderPathBindable(methodConverter) implicit def queryStringBindableMethod(implicit stringBinder: QueryStringBindable[String]): QueryStringBindable[io.apibuilder.postman.collection.v21.v0.models.Method] = ApibuilderQueryStringBindable(methodConverter) } trait ApibuilderTypeConverter[T] { def convert(value: String): T def convert(value: T): String def example: T def validValues: Seq[T] = Nil def errorMessage(key: String, value: String, ex: java.lang.Exception): String = { val base = s"Invalid value '$value' for parameter '$key'. " validValues.toList match { case Nil => base + "Ex: " + convert(example) case values => base + ". Valid values are: " + values.mkString("'", "', '", "'") } } } object ApibuilderTypes { val dateTimeIso8601: ApibuilderTypeConverter[_root_.org.joda.time.DateTime] = new ApibuilderTypeConverter[_root_.org.joda.time.DateTime] { override def convert(value: String): _root_.org.joda.time.DateTime = _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseDateTime(value) override def convert(value: _root_.org.joda.time.DateTime): String = _root_.org.joda.time.format.ISODateTimeFormat.dateTime.print(value) override def example: _root_.org.joda.time.DateTime = _root_.org.joda.time.DateTime.now } val dateIso8601: ApibuilderTypeConverter[_root_.org.joda.time.LocalDate] = new ApibuilderTypeConverter[_root_.org.joda.time.LocalDate] { override def convert(value: String): _root_.org.joda.time.LocalDate = _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseLocalDate(value) override def convert(value: _root_.org.joda.time.LocalDate): String = _root_.org.joda.time.format.ISODateTimeFormat.date.print(value) override def example: _root_.org.joda.time.LocalDate = _root_.org.joda.time.LocalDate.now } } final case class ApibuilderQueryStringBindable[T]( converters: ApibuilderTypeConverter[T] ) extends QueryStringBindable[T] { override def bind(key: String, params: Map[String, Seq[String]]): _root_.scala.Option[_root_.scala.Either[String, T]] = { params.getOrElse(key, Nil).headOption.map { v => try { Right( converters.convert(v) ) } catch { case ex: java.lang.Exception => Left( converters.errorMessage(key, v, ex) ) } } } override def unbind(key: String, value: T): String = { s"$key=${converters.convert(value)}" } } final case class ApibuilderPathBindable[T]( converters: ApibuilderTypeConverter[T] ) extends PathBindable[T] { override def bind(key: String, value: String): _root_.scala.Either[String, T] = { try { Right( converters.convert(value) ) } catch { case ex: java.lang.Exception => Left( converters.errorMessage(key, value, ex) ) } } override def unbind(key: String, value: T): String = { converters.convert(value) } } } } package io.apibuilder.postman.collection.v21.v0 { object Constants { val BaseUrl = "https://www.getpostman.com" val Namespace = "io.apibuilder.postman.collection.v21.v0" val UserAgent = "apibuilder app.apibuilder.io/apicollective/apibuilder-postman-collection-v2-1/0.16.74/play_2_7_client" val Version = "0.16.74" val VersionMajor = 0 } class Client( ws: play.api.libs.ws.WSClient, val baseUrl: String = "https://www.getpostman.com", auth: scala.Option[io.apibuilder.postman.collection.v21.v0.Authorization] = None, defaultHeaders: Seq[(String, String)] = Nil ) extends interfaces.Client { import io.apibuilder.postman.collection.v21.v0.models.json._ private val logger = play.api.Logger("io.apibuilder.postman.collection.v21.v0.Client") logger.info(s"Initializing io.apibuilder.postman.collection.v21.v0.Client for url $baseUrl") def _requestHolder(path: String): play.api.libs.ws.WSRequest = { val holder = ws.url(baseUrl + path).addHttpHeaders( "User-Agent" -> Constants.UserAgent, "X-Apidoc-Version" -> Constants.Version, "X-Apidoc-Version-Major" -> Constants.VersionMajor.toString ).addHttpHeaders(defaultHeaders: _*) auth.fold(holder) { case Authorization.Basic(username, password) => { holder.withAuth(username, password.getOrElse(""), play.api.libs.ws.WSAuthScheme.BASIC) } } } def _logRequest(method: String, req: play.api.libs.ws.WSRequest): play.api.libs.ws.WSRequest = { val queryComponents = for { (name, values) <- req.queryString value <- values } yield s"$name=$value" val url = s"${req.url}${queryComponents.mkString("?", "&", "")}" auth.fold(logger.info(s"curl -X $method '$url'")) { _ => logger.info(s"curl -X $method -u '[REDACTED]:' '$url'") } req } def _executeRequest( method: String, path: String, queryParameters: Seq[(String, String)] = Nil, requestHeaders: Seq[(String, String)] = Nil, body: Option[play.api.libs.json.JsValue] = None ): scala.concurrent.Future[play.api.libs.ws.WSResponse] = { method.toUpperCase match { case "GET" => { _logRequest("GET", _requestHolder(path).addHttpHeaders(requestHeaders: _*).addQueryStringParameters(queryParameters: _*)).get() } case "POST" => { _logRequest("POST", _requestHolder(path).addHttpHeaders(_withJsonContentType(requestHeaders): _*).addQueryStringParameters(queryParameters: _*)).post(body.getOrElse(play.api.libs.json.Json.obj())) } case "PUT" => { _logRequest("PUT", _requestHolder(path).addHttpHeaders(_withJsonContentType(requestHeaders): _*).addQueryStringParameters(queryParameters: _*)).put(body.getOrElse(play.api.libs.json.Json.obj())) } case "PATCH" => { _logRequest("PATCH", _requestHolder(path).addHttpHeaders(requestHeaders: _*).addQueryStringParameters(queryParameters: _*)).patch(body.getOrElse(play.api.libs.json.Json.obj())) } case "DELETE" => { _logRequest("DELETE", _requestHolder(path).addHttpHeaders(requestHeaders: _*).addQueryStringParameters(queryParameters: _*)).delete() } case "HEAD" => { _logRequest("HEAD", _requestHolder(path).addHttpHeaders(requestHeaders: _*).addQueryStringParameters(queryParameters: _*)).head() } case "OPTIONS" => { _logRequest("OPTIONS", _requestHolder(path).addHttpHeaders(requestHeaders: _*).addQueryStringParameters(queryParameters: _*)).options() } case _ => { _logRequest(method, _requestHolder(path).addHttpHeaders(requestHeaders: _*).addQueryStringParameters(queryParameters: _*)) sys.error("Unsupported method[%s]".format(method)) } } } /** * Adds a Content-Type: application/json header unless the specified requestHeaders * already contain a Content-Type header */ def _withJsonContentType(headers: Seq[(String, String)]): Seq[(String, String)] = { headers.find { _._1.toUpperCase == "CONTENT-TYPE" } match { case None => headers ++ Seq("Content-Type" -> "application/json; charset=UTF-8") case Some(_) => headers } } } object Client { def parseJson[T]( className: String, r: play.api.libs.ws.WSResponse, f: (play.api.libs.json.JsValue => play.api.libs.json.JsResult[T]) ): T = { f(play.api.libs.json.Json.parse(r.body)) match { case play.api.libs.json.JsSuccess(x, _) => x case play.api.libs.json.JsError(errors) => { throw io.apibuilder.postman.collection.v21.v0.errors.FailedRequest(r.status, s"Invalid json for class[" + className + "]: " + errors.mkString(" ")) } } } } sealed trait Authorization extends _root_.scala.Product with _root_.scala.Serializable object Authorization { final case class Basic(username: String, password: Option[String] = None) extends Authorization } package interfaces { trait Client { def baseUrl: String } } package errors { final case class FailedRequest(responseCode: Int, message: String, requestUri: Option[_root_.java.net.URI] = None) extends _root_.java.lang.Exception(s"HTTP $responseCode: $message") } }