All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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