/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.8.18 * User agent: apibuilder app.apibuilder.io/flow/dependency/0.8.18/http4s_0_18 */ package io.flow.dependency.v0 { import cats.effect._ import cats.implicits._ import io.circe.syntax._ import scala.language.higherKinds object Constants { val Namespace = "io.flow.dependency.v0" val UserAgent = "apibuilder app.apibuilder.io/flow/dependency/0.8.18/http4s_0_18" val Version = "0.8.18" val VersionMajor = 0 } class Client[F[_]: Sync]( val baseUrl: org.http4s.Uri, auth: scala.Option[io.flow.dependency.v0.Authorization] = None, defaultHeaders: Seq[(String, String)] = Nil, httpClient: org.http4s.client.Client[F] ) extends interfaces.Client[F] { import org.http4s.Response import io.flow.common.v0.models.json._ import io.flow.dependency.v0.models.json._ import io.flow.error.v0.models.json._ import io.flow.github.v0.models.json._ import io.flow.healthcheck.v0.models.json._ def binaries: Binaries[F] = Binaries def binaryVersions: BinaryVersions[F] = BinaryVersions def githubUsers: GithubUsers[F] = GithubUsers def githubWebhooks: GithubWebhooks[F] = GithubWebhooks def healthchecks: Healthchecks[F] = Healthchecks def items: Items[F] = Items def libraries: Libraries[F] = Libraries def libraryVersions: LibraryVersions[F] = LibraryVersions def memberships: Memberships[F] = Memberships def organizations: Organizations[F] = Organizations def projectBinaries: ProjectBinaries[F] = ProjectBinaries def projectDependencyResolutions: ProjectDependencyResolutions[F] = ProjectDependencyResolutions def projectLibraries: ProjectLibraries[F] = ProjectLibraries def projects: Projects[F] = Projects def recommendations: Recommendations[F] = Recommendations def repositories: Repositories[F] = Repositories def resolvers: Resolvers[F] = Resolvers def subscriptions: Subscriptions[F] = Subscriptions def syncs: Syncs[F] = Syncs def tokens: Tokens[F] = Tokens def users: Users[F] = Users object Binaries extends Binaries[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Binary]] = { val urlPath = Seq("binaries") val queryParameters = Seq( id.map("id" -> _), projectId.map("project_id" -> _), name.map("name" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Binary]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Binary]]("Seq[io.flow.dependency.v0.models.Binary]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Binary] = { val urlPath = Seq("binaries", id) _executeRequest[Unit, io.flow.dependency.v0.models.Binary]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Binary]("io.flow.dependency.v0.models.Binary", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( binaryForm: io.flow.dependency.v0.models.BinaryForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Binary] = { val urlPath = Seq("binaries") val (payload, formPayload) = (Some(binaryForm), None) _executeRequest[io.flow.dependency.v0.models.BinaryForm, io.flow.dependency.v0.models.Binary]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Binary]("io.flow.dependency.v0.models.Binary", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 422")) } } override def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("binaries", id) _executeRequest[Unit, Unit]("DELETE", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object BinaryVersions extends BinaryVersions[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, binaryId: _root_.scala.Option[String] = None, projectId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.BinaryVersion]] = { val urlPath = Seq("binary_versions") val queryParameters = Seq( id.map("id" -> _), binaryId.map("binary_id" -> _), projectId.map("project_id" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.BinaryVersion]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.BinaryVersion]]("Seq[io.flow.dependency.v0.models.BinaryVersion]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.BinaryVersion] = { val urlPath = Seq("binary_versions", id) _executeRequest[Unit, io.flow.dependency.v0.models.BinaryVersion]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.BinaryVersion]("io.flow.dependency.v0.models.BinaryVersion", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } } object GithubUsers extends GithubUsers[F] { override def postGithub( githubAuthenticationForm: io.flow.dependency.v0.models.GithubAuthenticationForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.common.v0.models.User] = { val urlPath = Seq("authentications", "github") val (payload, formPayload) = (Some(githubAuthenticationForm), None) _executeRequest[io.flow.dependency.v0.models.GithubAuthenticationForm, io.flow.common.v0.models.User]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.common.v0.models.User]("io.flow.common.v0.models.User", r) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 422")) } } } object GithubWebhooks extends GithubWebhooks[F] { override def postByProjectId( projectId: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("webhooks", "github", projectId) _executeRequest[Unit, Unit]("POST", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204")) } } } object Healthchecks extends Healthchecks[F] { override def getHealthcheck( requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.healthcheck.v0.models.Healthcheck] = { val urlPath = Seq("_internal_", "healthcheck") _executeRequest[Unit, io.flow.healthcheck.v0.models.Healthcheck]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.healthcheck.v0.models.Healthcheck]("io.flow.healthcheck.v0.models.Healthcheck", r) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200")) } } } object Items extends Items[F] { override def get( q: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Item]] = { val urlPath = Seq("items") val queryParameters = Seq( q.map("q" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Item]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Item]]("Seq[io.flow.dependency.v0.models.Item]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } } object Libraries extends Libraries[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, groupId: _root_.scala.Option[String] = None, artifactId: _root_.scala.Option[String] = None, resolverId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Library]] = { val urlPath = Seq("libraries") val queryParameters = Seq( id.map("id" -> _), projectId.map("project_id" -> _), groupId.map("group_id" -> _), artifactId.map("artifact_id" -> _), resolverId.map("resolver_id" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Library]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Library]]("Seq[io.flow.dependency.v0.models.Library]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Library] = { val urlPath = Seq("libraries", id) _executeRequest[Unit, io.flow.dependency.v0.models.Library]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Library]("io.flow.dependency.v0.models.Library", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( libraryForm: io.flow.dependency.v0.models.LibraryForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Library] = { val urlPath = Seq("libraries") val (payload, formPayload) = (Some(libraryForm), None) _executeRequest[io.flow.dependency.v0.models.LibraryForm, io.flow.dependency.v0.models.Library]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Library]("io.flow.dependency.v0.models.Library", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 422")) } } override def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("libraries", id) _executeRequest[Unit, Unit]("DELETE", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object LibraryVersions extends LibraryVersions[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, libraryId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.LibraryVersion]] = { val urlPath = Seq("library_versions") val queryParameters = Seq( id.map("id" -> _), libraryId.map("library_id" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.LibraryVersion]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.LibraryVersion]]("Seq[io.flow.dependency.v0.models.LibraryVersion]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.LibraryVersion] = { val urlPath = Seq("library_versions", id) _executeRequest[Unit, io.flow.dependency.v0.models.LibraryVersion]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.LibraryVersion]("io.flow.dependency.v0.models.LibraryVersion", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } } object Memberships extends Memberships[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, organization: _root_.scala.Option[String] = None, userId: _root_.scala.Option[String] = None, role: _root_.scala.Option[io.flow.dependency.v0.models.Role] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Membership]] = { val urlPath = Seq("memberships") val queryParameters = Seq( id.map("id" -> _), organization.map("organization" -> _), userId.map("user_id" -> _), role.map("role" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Membership]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Membership]]("Seq[io.flow.dependency.v0.models.Membership]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Membership] = { val urlPath = Seq("memberships", id) _executeRequest[Unit, io.flow.dependency.v0.models.Membership]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Membership]("io.flow.dependency.v0.models.Membership", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( membershipForm: io.flow.dependency.v0.models.MembershipForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Membership] = { val urlPath = Seq("memberships") val (payload, formPayload) = (Some(membershipForm), None) _executeRequest[io.flow.dependency.v0.models.MembershipForm, io.flow.dependency.v0.models.Membership]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Membership]("io.flow.dependency.v0.models.Membership", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 404, 422")) } } override def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("memberships", id) _executeRequest[Unit, Unit]("DELETE", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object Organizations extends Organizations[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, userId: _root_.scala.Option[String] = None, key: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Organization]] = { val urlPath = Seq("organizations") val queryParameters = Seq( id.map("id" -> _), userId.map("user_id" -> _), key.map("key" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Organization]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Organization]]("Seq[io.flow.dependency.v0.models.Organization]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getUsersByUserId( userId: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] = { val urlPath = Seq("organizations", "users", userId) _executeRequest[Unit, io.flow.dependency.v0.models.Organization]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Organization]("io.flow.dependency.v0.models.Organization", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] = { val urlPath = Seq("organizations", id) _executeRequest[Unit, io.flow.dependency.v0.models.Organization]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Organization]("io.flow.dependency.v0.models.Organization", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( organizationForm: io.flow.dependency.v0.models.OrganizationForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] = { val urlPath = Seq("organizations") val (payload, formPayload) = (Some(organizationForm), None) _executeRequest[io.flow.dependency.v0.models.OrganizationForm, io.flow.dependency.v0.models.Organization]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Organization]("io.flow.dependency.v0.models.Organization", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 422")) } } override def putById( id: String, organizationForm: io.flow.dependency.v0.models.OrganizationForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] = { val urlPath = Seq("organizations", id) val (payload, formPayload) = (Some(organizationForm), None) _executeRequest[io.flow.dependency.v0.models.OrganizationForm, io.flow.dependency.v0.models.Organization]("PUT", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Organization]("io.flow.dependency.v0.models.Organization", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 422")) } } override def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("organizations", id) _executeRequest[Unit, Unit]("DELETE", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object ProjectBinaries extends ProjectBinaries[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, binaryId: _root_.scala.Option[String] = None, isSynced: _root_.scala.Option[Boolean] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.ProjectBinary]] = { val urlPath = Seq("project_binaries") val queryParameters = Seq( id.map("id" -> _), projectId.map("project_id" -> _), binaryId.map("binary_id" -> _), isSynced.map("is_synced" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.ProjectBinary]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.ProjectBinary]]("Seq[io.flow.dependency.v0.models.ProjectBinary]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } } object ProjectDependencyResolutions extends ProjectDependencyResolutions[F] { override def get( organization: String, groupId: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.ProjectDependencyResolution] = { val urlPath = Seq(organization, "project", "dependencies", "group", groupId) _executeRequest[Unit, io.flow.dependency.v0.models.ProjectDependencyResolution]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.ProjectDependencyResolution]("io.flow.dependency.v0.models.ProjectDependencyResolution", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } } object ProjectLibraries extends ProjectLibraries[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, libraryId: _root_.scala.Option[String] = None, isSynced: _root_.scala.Option[Boolean] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.ProjectLibrary]] = { val urlPath = Seq("project_libraries") val queryParameters = Seq( id.map("id" -> _), projectId.map("project_id" -> _), libraryId.map("library_id" -> _), isSynced.map("is_synced" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.ProjectLibrary]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.ProjectLibrary]]("Seq[io.flow.dependency.v0.models.ProjectLibrary]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } } object Projects extends Projects[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, organization: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, groupId: _root_.scala.Option[String] = None, artifactId: _root_.scala.Option[String] = None, version: _root_.scala.Option[String] = None, libraryId: _root_.scala.Option[String] = None, binary: _root_.scala.Option[String] = None, binaryId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Project]] = { val urlPath = Seq("projects") val queryParameters = Seq( id.map("id" -> _), organization.map("organization" -> _), name.map("name" -> _), groupId.map("group_id" -> _), artifactId.map("artifact_id" -> _), version.map("version" -> _), libraryId.map("library_id" -> _), binary.map("binary" -> _), binaryId.map("binary_id" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Project]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Project]]("Seq[io.flow.dependency.v0.models.Project]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] = { val urlPath = Seq("projects", id) _executeRequest[Unit, io.flow.dependency.v0.models.Project]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Project]("io.flow.dependency.v0.models.Project", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( projectForm: io.flow.dependency.v0.models.ProjectForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] = { val urlPath = Seq("projects") val (payload, formPayload) = (Some(projectForm), None) _executeRequest[io.flow.dependency.v0.models.ProjectForm, io.flow.dependency.v0.models.Project]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Project]("io.flow.dependency.v0.models.Project", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 422")) } } override def putById( id: String, projectForm: io.flow.dependency.v0.models.ProjectForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] = { val urlPath = Seq("projects", id) val (payload, formPayload) = (Some(projectForm), None) _executeRequest[io.flow.dependency.v0.models.ProjectForm, io.flow.dependency.v0.models.Project]("PUT", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Project]("io.flow.dependency.v0.models.Project", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 422")) } } override def patchById( id: String, projectPatchForm: io.flow.dependency.v0.models.ProjectPatchForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] = { val urlPath = Seq("projects", id) val (payload, formPayload) = (Some(projectPatchForm), None) _executeRequest[io.flow.dependency.v0.models.ProjectPatchForm, io.flow.dependency.v0.models.Project]("PATCH", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Project]("io.flow.dependency.v0.models.Project", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404, 422")) } } override def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("projects", id) _executeRequest[Unit, Unit]("DELETE", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object Recommendations extends Recommendations[F] { override def get( organization: _root_.scala.Option[String] = None, projectId: _root_.scala.Option[String] = None, `type`: _root_.scala.Option[io.flow.dependency.v0.models.RecommendationType] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Recommendation]] = { val urlPath = Seq("recommendations") val queryParameters = Seq( organization.map("organization" -> _), projectId.map("project_id" -> _), `type`.map("type" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Recommendation]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Recommendation]]("Seq[io.flow.dependency.v0.models.Recommendation]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } } object Repositories extends Repositories[F] { override def getGithub( owner: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, organizationId: _root_.scala.Option[String] = None, existingProject: _root_.scala.Option[Boolean] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.github.v0.models.Repository]] = { val urlPath = Seq("repositories", "github") val queryParameters = Seq( owner.map("owner" -> _), name.map("name" -> _), organizationId.map("organization_id" -> _), existingProject.map("existing_project" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten _executeRequest[Unit, Seq[io.flow.github.v0.models.Repository]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.github.v0.models.Repository]]("Seq[io.flow.github.v0.models.Repository]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 422")) } } } object Resolvers extends Resolvers[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, organization: _root_.scala.Option[String] = None, visibility: _root_.scala.Option[io.flow.dependency.v0.models.Visibility] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Resolver]] = { val urlPath = Seq("resolvers") val queryParameters = Seq( id.map("id" -> _), organization.map("organization" -> _), visibility.map("visibility" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Resolver]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Resolver]]("Seq[io.flow.dependency.v0.models.Resolver]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Resolver] = { val urlPath = Seq("resolvers", id) _executeRequest[Unit, io.flow.dependency.v0.models.Resolver]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Resolver]("io.flow.dependency.v0.models.Resolver", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( resolverForm: io.flow.dependency.v0.models.ResolverForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Resolver] = { val urlPath = Seq("resolvers") val (payload, formPayload) = (Some(resolverForm), None) _executeRequest[io.flow.dependency.v0.models.ResolverForm, io.flow.dependency.v0.models.Resolver]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Resolver]("io.flow.dependency.v0.models.Resolver", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 422")) } } override def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("resolvers", id) _executeRequest[Unit, Unit]("DELETE", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object Subscriptions extends Subscriptions[F] { override def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, userId: _root_.scala.Option[String] = None, identifier: _root_.scala.Option[String] = None, publication: _root_.scala.Option[io.flow.dependency.v0.models.Publication] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Subscription]] = { val urlPath = Seq("subscriptions") val queryParameters = Seq( id.map("id" -> _), userId.map("user_id" -> _), identifier.map("identifier" -> _), publication.map("publication" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ ids.getOrElse(Nil).map("ids" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Subscription]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Subscription]]("Seq[io.flow.dependency.v0.models.Subscription]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Subscription] = { val urlPath = Seq("subscriptions", id) _executeRequest[Unit, io.flow.dependency.v0.models.Subscription]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Subscription]("io.flow.dependency.v0.models.Subscription", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( subscriptionForm: io.flow.dependency.v0.models.SubscriptionForm, identifier: _root_.scala.Option[String] = None, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Subscription] = { val urlPath = Seq("subscriptions") val (payload, formPayload) = (Some(subscriptionForm), None) val queryParameters = Seq( identifier.map("identifier" -> _) ).flatten _executeRequest[io.flow.dependency.v0.models.SubscriptionForm, io.flow.dependency.v0.models.Subscription]("POST", path = urlPath, body = payload, formBody = formPayload, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Subscription]("io.flow.dependency.v0.models.Subscription", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 422")) } } override def deleteById( id: String, identifier: _root_.scala.Option[String] = None, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("subscriptions", id) val queryParameters = Seq( identifier.map("identifier" -> _) ).flatten _executeRequest[Unit, Unit]("DELETE", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object Syncs extends Syncs[F] { override def get( objectId: _root_.scala.Option[String] = None, event: _root_.scala.Option[io.flow.dependency.v0.models.SyncEvent] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Sync]] = { val urlPath = Seq("syncs") val queryParameters = Seq( objectId.map("object_id" -> _), event.map("event" -> _.toString), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Sync]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Sync]]("Seq[io.flow.dependency.v0.models.Sync]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def postLibrariesByOrganization( organization: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("syncs", organization, "libraries") _executeRequest[Unit, Unit]("POST", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 404")) } } override def postBinariesById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("syncs", "binaries", id) _executeRequest[Unit, Unit]("POST", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 404")) } } override def postLibrariesAndPrefixByArtifactIdPrefix( artifactIdPrefix: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("syncs", "libraries", "prefix", artifactIdPrefix) _executeRequest[Unit, Unit]("POST", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 404")) } } override def postLibrariesById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("syncs", "libraries", id) _executeRequest[Unit, Unit]("POST", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 404")) } } override def postProjectsById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("syncs", "projects", id) _executeRequest[Unit, Unit]("POST", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 404")) } } } object Tokens extends Tokens[F] { override def get( id: _root_.scala.Option[Seq[String]] = None, userId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Token]] = { val urlPath = Seq("tokens") val queryParameters = Seq( userId.map("user_id" -> _), Some("limit" -> limit.toString), Some("offset" -> offset.toString) ).flatten ++ id.getOrElse(Nil).map("id" -> _) _executeRequest[Unit, Seq[io.flow.dependency.v0.models.Token]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.dependency.v0.models.Token]]("Seq[io.flow.dependency.v0.models.Token]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Token] = { val urlPath = Seq("tokens", id) _executeRequest[Unit, io.flow.dependency.v0.models.Token]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Token]("io.flow.dependency.v0.models.Token", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( tokenForm: io.flow.dependency.v0.models.TokenForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Token] = { val urlPath = Seq("tokens") val (payload, formPayload) = (Some(tokenForm), None) _executeRequest[io.flow.dependency.v0.models.TokenForm, io.flow.dependency.v0.models.Token]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.Token]("io.flow.dependency.v0.models.Token", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 401, 422")) } } override def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] = { val urlPath = Seq("tokens", id) _executeRequest[Unit, Unit]("DELETE", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 204 => Sync[F].pure(()) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 204, 401, 404, 422")) } } } object Users extends Users[F] { override def get( id: _root_.scala.Option[String] = None, email: _root_.scala.Option[String] = None, identifier: _root_.scala.Option[String] = None, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.common.v0.models.User]] = { val urlPath = Seq("users") val queryParameters = Seq( id.map("id" -> _), email.map("email" -> _), identifier.map("identifier" -> _) ).flatten _executeRequest[Unit, Seq[io.flow.common.v0.models.User]]("GET", path = urlPath, queryParameters = queryParameters, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, Seq[io.flow.common.v0.models.User]]("Seq[io.flow.common.v0.models.User]", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 422")) } } override def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.common.v0.models.User] = { val urlPath = Seq("users", id) _executeRequest[Unit, io.flow.common.v0.models.User]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.common.v0.models.User]("io.flow.common.v0.models.User", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def getIdentifierById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.UserIdentifier] = { val urlPath = Seq("users", id, "identifier") _executeRequest[Unit, io.flow.dependency.v0.models.UserIdentifier]("GET", path = urlPath, requestHeaders = requestHeaders) { case r if r.status.code == 200 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.dependency.v0.models.UserIdentifier]("io.flow.dependency.v0.models.UserIdentifier", r) case r if r.status.code == 401 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r if r.status.code == 404 => Sync[F].raiseError(new io.flow.dependency.v0.errors.UnitResponse(r.status.code)) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 200, 401, 404")) } } override def post( userForm: io.flow.dependency.v0.models.UserForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.common.v0.models.User] = { val urlPath = Seq("users") val (payload, formPayload) = (Some(userForm), None) _executeRequest[io.flow.dependency.v0.models.UserForm, io.flow.common.v0.models.User]("POST", path = urlPath, body = payload, formBody = formPayload, requestHeaders = requestHeaders) { case r if r.status.code == 201 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.common.v0.models.User]("io.flow.common.v0.models.User", r) case r if r.status.code == 422 => _root_.io.flow.dependency.v0.Client.parseJson[F, io.flow.error.v0.models.GenericError]("io.flow.error.v0.models.GenericError", r).flatMap(body => Sync[F].raiseError(new io.flow.dependency.v0.errors.GenericErrorResponse(r.headers, r.status.code, None, body))) case r => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Unsupported response code[${r.status.code}]. Expected: 201, 422")) } } } private lazy val defaultApiHeaders = Seq( ("User-Agent", Constants.UserAgent), ("X-Apidoc-Version", Constants.Version), ("X-Apidoc-Version-Major", Constants.VersionMajor.toString) ) def apiHeaders: Seq[(String, String)] = defaultApiHeaders def modifyRequest(request: F[org.http4s.Request[F]]): F[org.http4s.Request[F]] = request implicit def circeJsonEncoder[F[_]: Sync, A](implicit encoder: io.circe.Encoder[A]) = org.http4s.circe.jsonEncoderOf[F, A] def _executeRequest[T, U]( method: String, path: Seq[String], queryParameters: Seq[(String, String)] = Nil, requestHeaders: Seq[(String, String)] = Nil, body: Option[T] = None, formBody : Option[org.http4s.UrlForm] = None )(handler: org.http4s.Response[F] => F[U] )(implicit encoder: io.circe.Encoder[T]): F[U] = { import org.http4s.QueryParamEncoder._ val m = org.http4s.Method.fromString(method) match { case Right(m) => m case Left(e) => sys.error(e.toString) } val headers = org.http4s.Headers(( apiHeaders ++ defaultHeaders ++ requestHeaders ).groupBy(_._1).map { case (k, l) => org.http4s.Header(k, l.last._2) }.toList) val queryMap = queryParameters.groupBy(_._1).map { case (k, v) => k -> v.map(_._2) } val uri = path.foldLeft(baseUrl){ case (uri, segment) => uri / segment }.setQueryParams(queryMap) val request = org.http4s.Request[F](method = m, uri = uri, headers = headers) val reqAndMaybeAuth = auth.fold(request) { case Authorization.Basic(username, passwordOpt) => { val userpass = s"$username:${passwordOpt.getOrElse("")}" val token = java.util.Base64.getEncoder.encodeToString(userpass.getBytes(java.nio.charset.StandardCharsets.ISO_8859_1)) request.putHeaders(org.http4s.Header("Authorization", s"Basic $token")) } case a => sys.error("Invalid authorization scheme[" + a.getClass + "]") } val reqAndMaybeAuthAndBody = if (formBody.nonEmpty) formBody.fold(Sync[F].pure(reqAndMaybeAuth))(reqAndMaybeAuth.withBody) else body.fold(Sync[F].pure(reqAndMaybeAuth))(reqAndMaybeAuth.withBody) httpClient.fetch(modifyRequest(reqAndMaybeAuthAndBody))(handler) } } object Client { import cats.effect._ implicit def circeJsonDecoder[F[_]: Sync, A](implicit decoder: io.circe.Decoder[A]) = org.http4s.circe.jsonOf[F, A] def parseJson[F[_]: Sync, T]( className: String, r: org.http4s.Response[F] )(implicit decoder: io.circe.Decoder[T]): F[T] = r.attemptAs[T].value.flatMap { case Right(value) => Sync[F].pure(value) case Left(error) => Sync[F].raiseError(new io.flow.dependency.v0.errors.FailedRequest(r.status.code, s"Invalid json for class[" + className + "]", None, error)) } } 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[F[_]] { def baseUrl: org.http4s.Uri def binaries: io.flow.dependency.v0.Binaries[F] def binaryVersions: io.flow.dependency.v0.BinaryVersions[F] def githubUsers: io.flow.dependency.v0.GithubUsers[F] def githubWebhooks: io.flow.dependency.v0.GithubWebhooks[F] def healthchecks: io.flow.dependency.v0.Healthchecks[F] def items: io.flow.dependency.v0.Items[F] def libraries: io.flow.dependency.v0.Libraries[F] def libraryVersions: io.flow.dependency.v0.LibraryVersions[F] def memberships: io.flow.dependency.v0.Memberships[F] def organizations: io.flow.dependency.v0.Organizations[F] def projectBinaries: io.flow.dependency.v0.ProjectBinaries[F] def projectDependencyResolutions: io.flow.dependency.v0.ProjectDependencyResolutions[F] def projectLibraries: io.flow.dependency.v0.ProjectLibraries[F] def projects: io.flow.dependency.v0.Projects[F] def recommendations: io.flow.dependency.v0.Recommendations[F] def repositories: io.flow.dependency.v0.Repositories[F] def resolvers: io.flow.dependency.v0.Resolvers[F] def subscriptions: io.flow.dependency.v0.Subscriptions[F] def syncs: io.flow.dependency.v0.Syncs[F] def tokens: io.flow.dependency.v0.Tokens[F] def users: io.flow.dependency.v0.Users[F] } } trait Binaries[F[_]] { /** * Search binaries. Results are paginated * * @param id Find binary with this id. Exact match * @param ids Filter by any one of these ids * @param projectId Find binaries associated with this project * @param name Find project with this name. Case in-sensitive. Exact match * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Binary]] /** * Returns information about the binary with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Binary] /** * Create a new binary. */ def post( binaryForm: io.flow.dependency.v0.models.BinaryForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Binary] def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait BinaryVersions[F[_]] { /** * Search binary versions. Results are paginated * * @param id Find binary version with this id. Exact match * @param ids Filter by any one of these ids * @param binaryId Find binaries associated with this binary * @param projectId Find binaries associated with this project * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, binaryId: _root_.scala.Option[String] = None, projectId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.BinaryVersion]] /** * Returns information about the binary version with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.BinaryVersion] } trait GithubUsers[F[_]] { /** * Used to authenticate a user via github */ def postGithub( githubAuthenticationForm: io.flow.dependency.v0.models.GithubAuthenticationForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.common.v0.models.User] } trait GithubWebhooks[F[_]] { /** * Receives a webhook on push for this particular project */ def postByProjectId( projectId: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait Healthchecks[F[_]] { def getHealthcheck( requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.healthcheck.v0.models.Healthcheck] } trait Items[F[_]] { /** * Returns a list of all matching items * * @param q Actual search query * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( q: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Item]] } trait Libraries[F[_]] { /** * Search libraries. Results are paginated * * @param id Find library with this id. Exact match * @param ids Filter by any one of these ids * @param projectId Find binaries associated with this project * @param groupId Find library with this group_id. Case sensitive. Exact match * @param artifactId Find library with this artifact_id. Case sensitive. Exact match * @param resolverId Find libraries resolved with this resolver * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, groupId: _root_.scala.Option[String] = None, artifactId: _root_.scala.Option[String] = None, resolverId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Library]] /** * Returns information about the library with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Library] /** * Create a new library. */ def post( libraryForm: io.flow.dependency.v0.models.LibraryForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Library] def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait LibraryVersions[F[_]] { /** * Search library versions. Results are paginated * * @param id Find library version with this id. Exact match * @param ids Filter by any one of these ids * @param libraryId Find binaries associated with this binary * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, libraryId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.LibraryVersion]] /** * Returns information about the library version with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.LibraryVersion] } trait Memberships[F[_]] { /** * Search all memberships. Results are always paginated. * * @param id Find organization with this id. Exact match * @param ids Filter by any one of these ids * @param organization Filter to organization with this key. Case insensitive * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, organization: _root_.scala.Option[String] = None, userId: _root_.scala.Option[String] = None, role: _root_.scala.Option[io.flow.dependency.v0.models.Role] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Membership]] def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Membership] def post( membershipForm: io.flow.dependency.v0.models.MembershipForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Membership] def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait Organizations[F[_]] { /** * Search organizations. Results are paginated * * @param id Find organization with this id. Exact match * @param ids Filter by any one of these ids * @param userId Find organizations that this user has access to * @param key Find organization with this key. Case in-sensitive. Exact match * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, userId: _root_.scala.Option[String] = None, key: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Organization]] /** * Returns the organization representing the individual user. * * @param userId Find organization representing this user */ def getUsersByUserId( userId: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] /** * Returns information about the organization with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] /** * Create a new organization. */ def post( organizationForm: io.flow.dependency.v0.models.OrganizationForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] /** * Update an existing organization. */ def putById( id: String, organizationForm: io.flow.dependency.v0.models.OrganizationForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Organization] def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait ProjectBinaries[F[_]] { /** * Search project binaries. Results are paginated * * @param id Find project binary with this id. Exact match * @param ids Filter by any one of these ids * @param projectId filter by this project * @param binaryId filter by this binary * @param isSynced If true, filter by project binaries that have been synced. False to filter by * project binaries that have not yet been synced. Main purpose of this filter is * to see what binaries we are still evaluating after a project is added for the * first time. * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, binaryId: _root_.scala.Option[String] = None, isSynced: _root_.scala.Option[Boolean] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.ProjectBinary]] } trait ProjectDependencyResolutions[F[_]] { def get( organization: String, groupId: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.ProjectDependencyResolution] } trait ProjectLibraries[F[_]] { /** * Search project libraries. Results are paginated * * @param id Find project library with this id. Exact match * @param ids Filter by any one of these ids * @param projectId filter by this project * @param libraryId filter by this library * @param isSynced If true, filter by project libraries that have been synced. False to filter by * project libraries that have not yet been synced. Main purpose of this filter is * to see what libraries we are still evaluating after a project is added for the * first time. * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, projectId: _root_.scala.Option[String] = None, libraryId: _root_.scala.Option[String] = None, isSynced: _root_.scala.Option[Boolean] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.ProjectLibrary]] } trait Projects[F[_]] { /** * Search projects. Results are paginated * * @param id Find project with this id. Exact match * @param ids Filter by any one of these ids * @param organization Filter to resolvers belongs to the organization with this key * @param name Find project with this name. Case in-sensitive. Exact match * @param groupId Find projects that are dependent on a library with this group ID. Exact match * @param artifactId Find projects that are dependent on a library with this artifact ID. Exact match * @param version Find projects that are dependent on a library with this version number. Exact * match * @param libraryId Find projects that are dependent on a library * @param binary Find projects that are dependent on this binary. Case in-sensitive. Exact match * @param binaryId Find projects that are dependent on a binary * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, organization: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, groupId: _root_.scala.Option[String] = None, artifactId: _root_.scala.Option[String] = None, version: _root_.scala.Option[String] = None, libraryId: _root_.scala.Option[String] = None, binary: _root_.scala.Option[String] = None, binaryId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Project]] /** * Returns information about the project with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] /** * Create a new project. */ def post( projectForm: io.flow.dependency.v0.models.ProjectForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] /** * Update an existing project. */ def putById( id: String, projectForm: io.flow.dependency.v0.models.ProjectForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] /** * Patch an existing project */ def patchById( id: String, projectPatchForm: io.flow.dependency.v0.models.ProjectPatchForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Project] def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait Recommendations[F[_]] { /** * Returns a list of recommendations for this user * * @param organization Optionally filter to recommendations for this organization * @param projectId Optionally filter by project * @param type Optionally filter by type of recommendation. * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( organization: _root_.scala.Option[String] = None, projectId: _root_.scala.Option[String] = None, `type`: _root_.scala.Option[io.flow.dependency.v0.models.RecommendationType] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Recommendation]] } trait Repositories[F[_]] { /** * Returns a list of repositories from github * * @param owner Optionally filter by owner name. Case in-sensitive. Exact match * @param name Optionally filter by repo name. Case in-sensitive. Exact match * @param organizationId If specified, we enable additional filtering by this organization (see * existing_project parameter). * @param existingProject Optionally filter by repositories that are either already mapped to existing * projects or not. Requires organization_id parameter to also be specified. * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def getGithub( owner: _root_.scala.Option[String] = None, name: _root_.scala.Option[String] = None, organizationId: _root_.scala.Option[String] = None, existingProject: _root_.scala.Option[Boolean] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.github.v0.models.Repository]] } trait Resolvers[F[_]] { /** * Search resolvers. Results are paginated * * @param id Find resolver with this id. Exact match * @param ids Filter by any one of these ids * @param organization Filter to resolvers belongs to the organization with this key * @param visibility Filter based on visibility * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, organization: _root_.scala.Option[String] = None, visibility: _root_.scala.Option[io.flow.dependency.v0.models.Visibility] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Resolver]] /** * Returns information about the resolver with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Resolver] /** * Create a new resolver. */ def post( resolverForm: io.flow.dependency.v0.models.ResolverForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Resolver] def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait Subscriptions[F[_]] { /** * Search subscriptions. Always paginated. * * @param id Find the subscription with this id. * @param ids Filter by any one of these ids * @param userId Find subscriptions for this user. * @param identifier Find subscriptions associated with this user identifier. Exact match * @param publication Find subscriptions for this publication. * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[String] = None, ids: _root_.scala.Option[Seq[String]] = None, userId: _root_.scala.Option[String] = None, identifier: _root_.scala.Option[String] = None, publication: _root_.scala.Option[io.flow.dependency.v0.models.Publication] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Subscription]] /** * Returns information about a specific subscription. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Subscription] /** * Create a new subscription. * * @param identifier If a user identifier is provided, authentication is bypassed */ def post( subscriptionForm: io.flow.dependency.v0.models.SubscriptionForm, identifier: _root_.scala.Option[String] = None, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Subscription] /** * @param identifier If a user identifier is provided, authentication is bypassed */ def deleteById( id: String, identifier: _root_.scala.Option[String] = None, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait Syncs[F[_]] { /** * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( objectId: _root_.scala.Option[String] = None, event: _root_.scala.Option[io.flow.dependency.v0.models.SyncEvent] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Sync]] /** * Synchronize libraries for resolvers associated with this organization */ def postLibrariesByOrganization( organization: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] def postBinariesById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] /** * Will sync all libraries where the artifact id starts with the specified * artifact_id_refix* */ def postLibrariesAndPrefixByArtifactIdPrefix( artifactIdPrefix: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] def postLibrariesById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] def postProjectsById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait Tokens[F[_]] { /** * @param id Filter by any one of these ids * @param userId Find tokens for this user. * @param limit The number of records to return * @param offset Used to paginate. First page of results is 0. */ def get( id: _root_.scala.Option[Seq[String]] = None, userId: _root_.scala.Option[String] = None, limit: Long = 25L, offset: Long = 0L, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.dependency.v0.models.Token]] /** * Used to fetch one token */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Token] /** * Create a new API token for this user */ def post( tokenForm: io.flow.dependency.v0.models.TokenForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.Token] def deleteById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[Unit] } trait Users[F[_]] { /** * Search for a specific user. You must specify at least 1 parameter - either a id * or email - and will receive back either 0 or 1 users. * * @param id Find user with this id. Exact match * @param email Find user with this email address. Case in-sensitive. Exact match * @param identifier Find user associated with this randomly generated identifier. Exact match */ def get( id: _root_.scala.Option[String] = None, email: _root_.scala.Option[String] = None, identifier: _root_.scala.Option[String] = None, requestHeaders: Seq[(String, String)] = Nil ): F[Seq[io.flow.common.v0.models.User]] /** * Returns information about the user with this id. */ def getById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.common.v0.models.User] /** * Returns the latest identifier for this user. The basic use case is to enable * things like unsubscribe w/out login (and thus once you have an identifier, you * can GET /users?identifier=xxx). Identifiers are rotated regularly with last n * identifiers being valid (allowing eventual expiration). */ def getIdentifierById( id: String, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.dependency.v0.models.UserIdentifier] /** * Create a new user. */ def post( userForm: io.flow.dependency.v0.models.UserForm, requestHeaders: Seq[(String, String)] = Nil ): F[io.flow.common.v0.models.User] } package errors { final case class GenericErrorResponse( headers: org.http4s.Headers, status: Int, message: Option[String] = None, body: io.flow.error.v0.models.GenericError ) extends Exception(s"HTTP $status${message.fold("")(m => s": $m")}"){ lazy val genericError = body } final case class UnitResponse(status: Int) extends Exception(s"HTTP $status") final case class FailedRequest(responseCode: Int, message: String, requestUri: Option[_root_.java.net.URI] = None, parent: Exception = null) extends _root_.java.lang.Exception(s"HTTP $responseCode: $message", parent) } }