
com.stytch.java.b2b.StytchB2BClient.kt Maven / Gradle / Ivy
package com.stytch.java.b2b
// !!!
// WARNING: This file is autogenerated
// Only modify code within MANUAL() sections
// or your changes may be overwritten later!
// !!!
import com.stytch.java.b2b.api.discovery.Discovery
import com.stytch.java.b2b.api.discovery.DiscoveryImpl
import com.stytch.java.b2b.api.magiclinks.MagicLinks
import com.stytch.java.b2b.api.magiclinks.MagicLinksImpl
import com.stytch.java.b2b.api.oauth.OAuth
import com.stytch.java.b2b.api.oauth.OAuthImpl
import com.stytch.java.b2b.api.organizations.Organizations
import com.stytch.java.b2b.api.organizations.OrganizationsImpl
import com.stytch.java.b2b.api.otp.OTPs
import com.stytch.java.b2b.api.otp.OTPsImpl
import com.stytch.java.b2b.api.passwords.Passwords
import com.stytch.java.b2b.api.passwords.PasswordsImpl
import com.stytch.java.b2b.api.rbac.RBAC
import com.stytch.java.b2b.api.rbac.RBACImpl
import com.stytch.java.b2b.api.recoverycodes.RecoveryCodes
import com.stytch.java.b2b.api.recoverycodes.RecoveryCodesImpl
import com.stytch.java.b2b.api.scim.SCIM
import com.stytch.java.b2b.api.scim.SCIMImpl
import com.stytch.java.b2b.api.sessions.Sessions
import com.stytch.java.b2b.api.sessions.SessionsImpl
import com.stytch.java.b2b.api.sso.SSO
import com.stytch.java.b2b.api.sso.SSOImpl
import com.stytch.java.b2b.api.totps.TOTPs
import com.stytch.java.b2b.api.totps.TOTPsImpl
import com.stytch.java.common.BASE_LIVE_URL
import com.stytch.java.common.BASE_TEST_URL
import com.stytch.java.common.JwtOptions
import com.stytch.java.common.PolicyCache
import com.stytch.java.consumer.api.m2m.M2M
import com.stytch.java.consumer.api.m2m.M2MImpl
import com.stytch.java.consumer.api.project.Project
import com.stytch.java.consumer.api.project.ProjectImpl
import com.stytch.java.http.HttpClient
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob
import org.jose4j.jwk.HttpsJwks
public class StytchB2BClient(projectId: String, secret: String) {
private val coroutineScope = CoroutineScope(SupervisorJob())
private val baseUrl = getBaseUrl(projectId)
private val httpClient: HttpClient =
HttpClient(
baseUrl = baseUrl,
projectId = projectId,
secret = secret,
)
private val httpsJwks = HttpsJwks("$baseUrl/v1/b2b/sessions/jwks/$projectId")
private val jwtOptions: JwtOptions =
JwtOptions(
audience = projectId,
issuer = "stytch.com/$projectId",
type = "JWT",
)
private val policyCache: PolicyCache = PolicyCache(RBACImpl(httpClient, coroutineScope))
@JvmField
public val discovery: Discovery = DiscoveryImpl(httpClient, coroutineScope)
@JvmField
public val m2m: M2M = M2MImpl(httpClient, coroutineScope, httpsJwks, jwtOptions)
@JvmField
public val magicLinks: MagicLinks = MagicLinksImpl(httpClient, coroutineScope)
@JvmField
public val oauth: OAuth = OAuthImpl(httpClient, coroutineScope)
@JvmField
public val otps: OTPs = OTPsImpl(httpClient, coroutineScope)
@JvmField
public val organizations: Organizations = OrganizationsImpl(httpClient, coroutineScope)
@JvmField
public val passwords: Passwords = PasswordsImpl(httpClient, coroutineScope)
@JvmField
public val project: Project = ProjectImpl(httpClient, coroutineScope)
@JvmField
public val rbac: RBAC = RBACImpl(httpClient, coroutineScope)
@JvmField
public val recoveryCodes: RecoveryCodes = RecoveryCodesImpl(httpClient, coroutineScope)
@JvmField
public val scim: SCIM = SCIMImpl(httpClient, coroutineScope)
@JvmField
public val sso: SSO = SSOImpl(httpClient, coroutineScope)
@JvmField
public val sessions: Sessions = SessionsImpl(httpClient, coroutineScope, httpsJwks, jwtOptions, policyCache)
@JvmField
public val totps: TOTPs = TOTPsImpl(httpClient, coroutineScope)
/**
* Resolve the base URL for the Stytch API environment.
*/
private fun getBaseUrl(projectId: String): String =
when (projectId.startsWith("project-test")) {
true -> BASE_TEST_URL
false -> BASE_LIVE_URL
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy