Authentication¶
The SDK supports two OAuth2 flows via HTTPX-compatible auth classes. If you do not provide an auth object, the client attempts to create one automatically based on your environment.
Auth Classes (module: pulse.auth
)¶
ClientCredentialsAuth
¶
OAuth2 Client Credentials flow. Suitable for server-to-server usage.
Constructor parameters:
- client_id: str | None
– OAuth client ID. Falls back to PULSE_CLIENT_ID
or PROD_CLIENT_ID
.
- client_secret: str | None
– OAuth client secret. Falls back to PULSE_CLIENT_SECRET
. Required for this flow.
- token_url: str | None
– Token endpoint. Falls back to PULSE_TOKEN_URL
or https://{PROD_AUTH_DOMAIN}/oauth/token
.
- audience: str | None
– Audience for the token. Falls back to PULSE_API_URL
or PROD_BASE_URL
.
Behavior:
- Fetches an access token on demand and refreshes when expired (uses expires_in
minus a 60s buffer).
- Adds Authorization: Bearer <token>
to requests targeting *.core.researchwiseai.com
.
Example:
from pulse.auth import ClientCredentialsAuth
from pulse.core.client import CoreClient
auth = ClientCredentialsAuth(
client_id="...",
client_secret="...",
token_url="https://YOUR_DOMAIN/oauth/token",
audience="https://core.researchwiseai.com/pulse/v1",
)
client = CoreClient(auth=auth)
AuthorizationCodePKCEAuth
¶
OAuth2 Authorization Code flow with PKCE. Good for interactive or user-facing contexts.
Constructor parameters:
- code: str | None
– Authorization code. Optional when using the interactive prompt.
- code_verifier: str | None
– PKCE verifier. Optional when using the interactive prompt (auto-generated).
- client_id: str | None
– OAuth client ID; falls back to PULSE_CLIENT_ID
or PROD_CLIENT_ID
.
- redirect_uri: str | None
– Redirect URI; falls back to PULSE_REDIRECT_URI
or http://localhost:8888/callback
.
- token_url: str | None
– Token endpoint; falls back to PULSE_TOKEN_URL
.
- audience: str | None
– Audience; falls back to PULSE_API_URL
or PROD_BASE_URL
.
- scope: str | None
– Space‑separated scopes; falls back to PULSE_SCOPE
or DEFAULT_SCOPES
.
- organization: str | None
– Optional org parameter for the authorization request.
Behavior:
- If code
is not provided, opens a browser to begin the PKCE flow and listens on the redirect URI port for a one‑time callback; falls back to a manual prompt for the redirect URL or code.
- Exchanges the authorization code for an access token (and optional refresh token) and refreshes when near expiry.
- Adds Authorization: Bearer <token>
only for hosts matching *.core.researchwiseai.com
.
Example (interactive):
from pulse.auth import AuthorizationCodePKCEAuth
from pulse.core.client import CoreClient
auth = AuthorizationCodePKCEAuth(
client_id="...",
redirect_uri="http://localhost:8888/callback",
)
client = CoreClient(auth=auth)
Auto Authentication¶
pulse.auth.auto_auth()
selects a default auth automatically:
- If both PULSE_CLIENT_ID
and PULSE_CLIENT_SECRET
are set, it returns ClientCredentialsAuth()
.
- Otherwise, it returns AuthorizationCodePKCEAuth()
and will run an interactive PKCE flow.
CoreClient()
uses auto_auth()
when constructed without a preconfigured httpx.Client
and without an explicit auth
parameter.
Client Shortcuts¶
The core client provides convenience constructors that wire up auth for you:
CoreClient.with_client_credentials(...)
¶
Parameters (resolved in order: explicit argument → environment variable → default):
- client_id
, client_secret
(env: PULSE_CLIENT_ID
, PULSE_CLIENT_SECRET
) – required.
- audience
(env: PULSE_AUDIENCE
) – optional.
- token_url
(env: PULSE_TOKEN_URL
) – default Auth0 token URL if omitted.
- base_url
(env: PULSE_BASE_URL
) – defaults to PROD_BASE_URL
.
- organization
– reserved for future use.
Returns a ready‑to‑use CoreClient
with ClientCredentialsAuth
.
CoreClient.with_pkce(...)
¶
Parameters (resolved in order: explicit argument → environment variable → default):
- Required: code
and code_verifier
(the auth code and PKCE verifier).
- client_id
(env: PULSE_CLIENT_ID
) – required.
- redirect_uri
(env: PULSE_REDIRECT_URI
) – required.
- base_url
(env: PULSE_BASE_URL
) – defaults to PROD_BASE_URL
.
- token_url
(env: PULSE_TOKEN_URL
) – default Auth0 token URL if omitted.
- scope
(env: PULSE_SCOPE
) – optional.
Returns a ready‑to‑use CoreClient
configured with AuthorizationCodePKCEAuth
.