> ## Documentation Index
> Fetch the complete documentation index at: https://docs.photon.codes/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use Stable documentation by default. Honor an explicit Beta request or a URL under /docs/beta/. If the requested version conflicts with the installed CLI package or API origin, clarify the target before writing integration code.
> Pages under /docs/beta/ document Beta; other product pages document Stable. Keep the CLI package, commands, API origin, and credentials within the selected version. State the documentation version in your answer.
> For MCP search, always pass version: Stable or version: Beta. Unfiltered search mixes both versions. For filesystem reads, keep Beta queries under /beta/ and exclude /beta/ from Stable queries; discover paths before reading them.
> The public docs base is https://photon.codes/docs. Convert MCP page paths to public URLs under that base, preserving /beta/ when present. Read https://photon.codes/docs/skill.md for version selection and https://photon.codes/docs/llms.txt for the version indexes.

# Auth

> The Auth resource in the TypeScript, Python and Rust clients.

## Methods

<Tabs>
  <Tab title="TypeScript">
    **[List OAuth scopes](/docs/beta/api-client/sdk/auth/list-oauth-scopes)**

    ```typescript TypeScript theme={null}
    photon.auth.listOauthScopes(input?: ListOauthScopesInput, options?: RequestOptions): Promise<ListOauthScopesOutput>
    ```

    `GET /v1/auth/oauth/scopes`

    **[Get organization connection status](/docs/beta/api-client/sdk/auth/get-organization-connection-status)**

    ```typescript TypeScript theme={null}
    photon.auth.getOrganizationConnectionStatus(input: GetOrganizationConnectionStatusInput, options?: RequestOptions): Promise<GetOrganizationConnectionStatusOutput>
    ```

    `GET /v1/auth/organizations/{orgId}/connection-status`

    **[Get organization SSO configuration](/docs/beta/api-client/sdk/auth/get-organization-sso-configuration)**

    ```typescript TypeScript theme={null}
    photon.auth.getOrganizationSsoConfiguration(input: GetOrganizationSsoConfigurationInput, options?: RequestOptions): Promise<GetOrganizationSsoConfigurationOutput>
    ```

    `GET /v1/auth/organizations/{orgId}/sso`

    **[Sign in with invitation SSO](/docs/beta/api-client/sdk/auth/begin-invitation-sso)**

    ```typescript TypeScript theme={null}
    photon.auth.beginInvitationSso(input: BeginInvitationSsoInput, options?: RequestOptions): Promise<BeginInvitationSsoOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/invitation`

    **[Sign in with organization SSO](/docs/beta/api-client/sdk/auth/begin-organization-authentication)**

    ```typescript TypeScript theme={null}
    photon.auth.beginOrganizationAuthentication(input: BeginOrganizationAuthenticationInput, options?: RequestOptions): Promise<BeginOrganizationAuthenticationOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/authenticate`

    **[Sign in to close organization](/docs/beta/api-client/sdk/auth/begin-organization-closure-authentication)**

    ```typescript TypeScript theme={null}
    photon.auth.beginOrganizationClosureAuthentication(input: BeginOrganizationClosureAuthenticationInput, options?: RequestOptions): Promise<BeginOrganizationClosureAuthenticationOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/closure-authenticate`

    **[Begin organization SSO admission](/docs/beta/api-client/sdk/auth/begin-organization-sso-admission)**

    ```typescript TypeScript theme={null}
    photon.auth.beginOrganizationSsoAdmission(input: BeginOrganizationSsoAdmissionInput, options?: RequestOptions): Promise<BeginOrganizationSsoAdmissionOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/admission`

    **[Create organization setup portal link](/docs/beta/api-client/sdk/auth/create-organization-sso-portal-link)**

    ```typescript TypeScript theme={null}
    photon.auth.createOrganizationSsoPortalLink(input: CreateOrganizationSsoPortalLinkInput, options?: RequestOptions): Promise<CreateOrganizationSsoPortalLinkOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/portal`

    **[Disable organization SSO](/docs/beta/api-client/sdk/auth/disable-organization-sso)**

    ```typescript TypeScript theme={null}
    photon.auth.disableOrganizationSso(input: DisableOrganizationSsoInput, options?: RequestOptions): Promise<DisableOrganizationSsoOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/disable`

    **[Refresh organization SSO connection](/docs/beta/api-client/sdk/auth/refresh-organization-sso-connection)**

    ```typescript TypeScript theme={null}
    photon.auth.refreshOrganizationSsoConnection(input: RefreshOrganizationSsoConnectionInput, options?: RequestOptions): Promise<RefreshOrganizationSsoConnectionOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/refresh`

    **[Retry organization connection sync](/docs/beta/api-client/sdk/auth/retry-organization-connection-sync)**

    ```typescript TypeScript theme={null}
    photon.auth.retryOrganizationConnectionSync(input: RetryOrganizationConnectionSyncInput, options?: RequestOptions): Promise<RetryOrganizationConnectionSyncOutput>
    ```

    `POST /v1/auth/organizations/{orgId}/connection-sync/retry`

    **[Start company sign-in](/docs/beta/api-client/sdk/auth/start-enterprise-login)**

    ```typescript TypeScript theme={null}
    photon.auth.startEnterpriseLogin(input: StartEnterpriseLoginInput, options?: RequestOptions): Promise<StartEnterpriseLoginOutput>
    ```

    `POST /v1/auth/login/enrollment`

    **[Update organization SSO policy](/docs/beta/api-client/sdk/auth/update-organization-sso-policy)**

    ```typescript TypeScript theme={null}
    photon.auth.updateOrganizationSsoPolicy(input: UpdateOrganizationSsoPolicyInput, options?: RequestOptions): Promise<UpdateOrganizationSsoPolicyOutput>
    ```

    `PATCH /v1/auth/organizations/{orgId}/sso`
  </Tab>

  <Tab title="Python">
    **[List OAuth scopes](/docs/beta/api-client/sdk/auth/list-oauth-scopes)**

    ```python Python theme={null}
    photon.auth.list_oauth_scopes(input: ListOauthScopesInput | None = None) -> models.ListOauthScopesResponse
    ```

    `GET /v1/auth/oauth/scopes`

    **[Get organization connection status](/docs/beta/api-client/sdk/auth/get-organization-connection-status)**

    ```python Python theme={null}
    photon.auth.get_organization_connection_status(input: GetOrganizationConnectionStatusInput) -> models.OrganizationConnectionStatus
    ```

    `GET /v1/auth/organizations/{orgId}/connection-status`

    **[Get organization SSO configuration](/docs/beta/api-client/sdk/auth/get-organization-sso-configuration)**

    ```python Python theme={null}
    photon.auth.get_organization_sso_configuration(input: GetOrganizationSsoConfigurationInput) -> models.OrganizationSsoConfiguration
    ```

    `GET /v1/auth/organizations/{orgId}/sso`

    **[Sign in with invitation SSO](/docs/beta/api-client/sdk/auth/begin-invitation-sso)**

    ```python Python theme={null}
    photon.auth.begin_invitation_sso(input: BeginInvitationSsoInput) -> models.OrganizationAuthenticationRedirect
    ```

    `POST /v1/auth/organizations/{orgId}/sso/invitation`

    **[Sign in with organization SSO](/docs/beta/api-client/sdk/auth/begin-organization-authentication)**

    ```python Python theme={null}
    photon.auth.begin_organization_authentication(input: BeginOrganizationAuthenticationInput) -> models.OrganizationAuthenticationRedirect
    ```

    `POST /v1/auth/organizations/{orgId}/sso/authenticate`

    **[Sign in to close organization](/docs/beta/api-client/sdk/auth/begin-organization-closure-authentication)**

    ```python Python theme={null}
    photon.auth.begin_organization_closure_authentication(input: BeginOrganizationClosureAuthenticationInput) -> models.OrganizationAuthenticationRedirect
    ```

    `POST /v1/auth/organizations/{orgId}/sso/closure-authenticate`

    **[Begin organization SSO admission](/docs/beta/api-client/sdk/auth/begin-organization-sso-admission)**

    ```python Python theme={null}
    photon.auth.begin_organization_sso_admission(input: BeginOrganizationSsoAdmissionInput) -> models.OrganizationAuthenticationRedirect
    ```

    `POST /v1/auth/organizations/{orgId}/sso/admission`

    **[Create organization setup portal link](/docs/beta/api-client/sdk/auth/create-organization-sso-portal-link)**

    ```python Python theme={null}
    photon.auth.create_organization_sso_portal_link(input: CreateOrganizationSsoPortalLinkInput) -> models.CreateOrganizationSsoPortalLinkResponse
    ```

    `POST /v1/auth/organizations/{orgId}/sso/portal`

    **[Disable organization SSO](/docs/beta/api-client/sdk/auth/disable-organization-sso)**

    ```python Python theme={null}
    photon.auth.disable_organization_sso(input: DisableOrganizationSsoInput) -> models.OrganizationSsoConfiguration
    ```

    `POST /v1/auth/organizations/{orgId}/sso/disable`

    **[Refresh organization SSO connection](/docs/beta/api-client/sdk/auth/refresh-organization-sso-connection)**

    ```python Python theme={null}
    photon.auth.refresh_organization_sso_connection(input: RefreshOrganizationSsoConnectionInput) -> models.OrganizationSsoConfiguration
    ```

    `POST /v1/auth/organizations/{orgId}/sso/refresh`

    **[Retry organization connection sync](/docs/beta/api-client/sdk/auth/retry-organization-connection-sync)**

    ```python Python theme={null}
    photon.auth.retry_organization_connection_sync(input: RetryOrganizationConnectionSyncInput) -> models.OrganizationConnectionStatus
    ```

    `POST /v1/auth/organizations/{orgId}/connection-sync/retry`

    **[Start company sign-in](/docs/beta/api-client/sdk/auth/start-enterprise-login)**

    ```python Python theme={null}
    photon.auth.start_enterprise_login(input: StartEnterpriseLoginInput) -> models.StartEnterpriseLoginResponse
    ```

    `POST /v1/auth/login/enrollment`

    **[Update organization SSO policy](/docs/beta/api-client/sdk/auth/update-organization-sso-policy)**

    ```python Python theme={null}
    photon.auth.update_organization_sso_policy(input: UpdateOrganizationSsoPolicyInput) -> models.OrganizationSsoConfiguration
    ```

    `PATCH /v1/auth/organizations/{orgId}/sso`
  </Tab>

  <Tab title="Rust">
    **[List OAuth scopes](/docs/beta/api-client/sdk/auth/list-oauth-scopes)**

    ```rust Rust theme={null}
    client.list_oauth_scopes().await -> Result<ResponseValue<types::ListOauthScopesResponse>, Error<ListOauthScopesError>>
    ```

    `GET /v1/auth/oauth/scopes`

    **[Get organization connection status](/docs/beta/api-client/sdk/auth/get-organization-connection-status)**

    ```rust Rust theme={null}
    client.get_organization_connection_status(org_id: String).await -> Result<ResponseValue<types::OrganizationConnectionStatus>, Error<GetOrganizationConnectionStatusError>>
    ```

    `GET /v1/auth/organizations/{orgId}/connection-status`

    **[Get organization SSO configuration](/docs/beta/api-client/sdk/auth/get-organization-sso-configuration)**

    ```rust Rust theme={null}
    client.get_organization_sso_configuration(org_id: String).await -> Result<ResponseValue<types::OrganizationSsoConfiguration>, Error<GetOrganizationSsoConfigurationError>>
    ```

    `GET /v1/auth/organizations/{orgId}/sso`

    **[Sign in with invitation SSO](/docs/beta/api-client/sdk/auth/begin-invitation-sso)**

    ```rust Rust theme={null}
    client.begin_invitation_sso(org_id: String, body: &types::BeginInvitationSsoRequest).await -> Result<ResponseValue<types::OrganizationAuthenticationRedirect>, Error<BeginInvitationSsoError>>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/invitation`

    **[Sign in with organization SSO](/docs/beta/api-client/sdk/auth/begin-organization-authentication)**

    ```rust Rust theme={null}
    client.begin_organization_authentication(org_id: String, body: &types::OrganizationAuthenticationRequest).await -> Result<ResponseValue<types::OrganizationAuthenticationRedirect>, Error<BeginOrganizationAuthenticationError>>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/authenticate`

    **[Sign in to close organization](/docs/beta/api-client/sdk/auth/begin-organization-closure-authentication)**

    ```rust Rust theme={null}
    client.begin_organization_closure_authentication(org_id: String, body: &types::OrganizationAuthenticationRequest).await -> Result<ResponseValue<types::OrganizationAuthenticationRedirect>, Error<BeginOrganizationClosureAuthenticationError>>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/closure-authenticate`

    **[Begin organization SSO admission](/docs/beta/api-client/sdk/auth/begin-organization-sso-admission)**

    ```rust Rust theme={null}
    client.begin_organization_sso_admission(org_id: String, body: &types::OrganizationAuthenticationRequest).await -> Result<ResponseValue<types::OrganizationAuthenticationRedirect>, Error<BeginOrganizationSsoAdmissionError>>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/admission`

    **[Create organization setup portal link](/docs/beta/api-client/sdk/auth/create-organization-sso-portal-link)**

    ```rust Rust theme={null}
    client.create_organization_sso_portal_link(org_id: String, body: &types::CreateOrganizationSsoPortalLinkRequest).await -> Result<ResponseValue<types::CreateOrganizationSsoPortalLinkResponse>, Error<CreateOrganizationSsoPortalLinkError>>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/portal`

    **[Disable organization SSO](/docs/beta/api-client/sdk/auth/disable-organization-sso)**

    ```rust Rust theme={null}
    client.disable_organization_sso(idempotency_key: String, org_id: String, body: &types::DisableOrganizationSsoRequest).await -> Result<ResponseValue<types::OrganizationSsoConfiguration>, Error<DisableOrganizationSsoError>>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/disable`

    **[Refresh organization SSO connection](/docs/beta/api-client/sdk/auth/refresh-organization-sso-connection)**

    ```rust Rust theme={null}
    client.refresh_organization_sso_connection(org_id: String).await -> Result<ResponseValue<types::OrganizationSsoConfiguration>, Error<RefreshOrganizationSsoConnectionError>>
    ```

    `POST /v1/auth/organizations/{orgId}/sso/refresh`

    **[Retry organization connection sync](/docs/beta/api-client/sdk/auth/retry-organization-connection-sync)**

    ```rust Rust theme={null}
    client.retry_organization_connection_sync(org_id: String).await -> Result<ResponseValue<types::OrganizationConnectionStatus>, Error<RetryOrganizationConnectionSyncError>>
    ```

    `POST /v1/auth/organizations/{orgId}/connection-sync/retry`

    **[Start company sign-in](/docs/beta/api-client/sdk/auth/start-enterprise-login)**

    ```rust Rust theme={null}
    client.start_enterprise_login(body: &types::StartEnterpriseLoginRequest).await -> Result<ResponseValue<types::StartEnterpriseLoginResponse>, Error<StartEnterpriseLoginError>>
    ```

    `POST /v1/auth/login/enrollment`

    **[Update organization SSO policy](/docs/beta/api-client/sdk/auth/update-organization-sso-policy)**

    ```rust Rust theme={null}
    client.update_organization_sso_policy(org_id: String, body: &types::UpdateOrganizationSsoPolicyRequest).await -> Result<ResponseValue<types::OrganizationSsoConfiguration>, Error<UpdateOrganizationSsoPolicyError>>
    ```

    `PATCH /v1/auth/organizations/{orgId}/sso`
  </Tab>
</Tabs>

## Resources

* [Device](/docs/beta/api-client/sdk/auth/device)

## Models

### ListOauthScopesResponse

<ResponseField name="scopes" type={"array of string"} required>
  Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline\_access) are not included.
</ResponseField>

### OrganizationConnectionStatus

<ResponseField name="membership" type={"OrganizationConnectionStatusMembership"} required />

<ResponseField name="organization" type={"OrganizationConnectionStatusOrganization"} required />

<ResponseField name="organizationId" type={"string"} required />

<ResponseField name="synchronized" type={"boolean"} required />

### OrganizationSsoConfiguration

<ResponseField name="connectionChangedAt" type={"string (date-time) | null"} required />

<ResponseField name="connectionGeneration" type={"string"} required />

<ResponseField name="connectionState" type={"OrganizationSsoConfigurationConnectionState"} required />

<ResponseField name="connectionType" type={"string"} />

<ResponseField name="desiredSsoEnforced" type={"boolean"} required />

<ResponseField name="domains" type={"array of OrganizationSsoDomain"} />

<ResponseField name="organizationId" type={"string"} required />

<ResponseField name="policySyncStatus" type={"OrganizationSsoConfigurationPolicySyncStatus"} required />

<ResponseField name="providerAvailable" type={"boolean"} />

<ResponseField name="ssoEnforced" type={"boolean"} required />

<ResponseField name="ssoJitEnabled" type={"boolean"} required />

<ResponseField name="version" type={"string"} required />

### OrganizationAuthenticationRedirect

<ResponseField name="url" type={"string"} required />

### CreateOrganizationSsoPortalLinkResponse

<ResponseField name="url" type={"string"} required />

### StartEnterpriseLoginResponse

<ResponseField name="url" type={"string (uri)"} required />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.