Supercommerce API Docs
Admin API

Sign-in Methods — Admin

Read-only option feed describing each customer sign-in method (email, Google, Apple, phone), which platforms this deployment can offer it on, and where it is enabled — consumed by the settings UI's toggle-matrix on admin.sign_in.enabled_methods.

A read-only feed describing the customer sign-in methods: which platforms (web, Android, iOS) this deployment can offer each one on, and where it is currently switched on.

Source: api-modules/customer/src/controllers/admin-sign-in-methods.controller.ts, api-modules/customer/src/services/sign-in-methods.service.ts, api-modules/auth/src/lib/sign-in-methods.ts.

This is an option feed, not a management API. Enabling a method is a settings write (PATCH /admin/settings/admin on sign_in.enabled_methods). The feed exists so the generic toggle-matrix control can render real, current choices. See optionsSource.


The setting

admin.sign_in.enabled_methods (Settings → Customer Sign-in in the admin panel):

{ "web": ["email", "google", "apple"], "android": ["email", "google", "apple"], "ios": ["email", "google", "apple"] }

That value is the default. Customers are offered a method on a platform only when it is ticked here and this deployment can serve it there, so ticking Apple before its credentials exist is harmless. The storefront and apps read the result from GET /store/auth/sign-in-methods.

What decides whether the deployment can serve a method:

MethodCan be offered when
emailAlways.
googleGOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are set (all platforms).
appleThe APPLE_* credentials are set (web). Android also needs APPLE_ANDROID_PACKAGE; iOS also needs APPLE_APP_BUNDLE_IDENTIFIER. See the Sign in with Apple guide.
phoneNever yet. Phone sign-in is OTP-only and no SMS provider delivers the code.

The setting controls what customers see; it does not switch a method off at the API. Staff sign in to the admin and vendor panels through the same better-auth endpoints, so the API keeps accepting every configured method. To take a social provider off entirely, remove its credentials.


Conventions

Authentication

Requires a Better-Auth admin session and adminSetting: read. This follows the payment gateway feed: it is the same permission that gates the settings page this feed populates, so no new RBAC catalog entry exists.

Never returns a credential. configured and disabledReason only name which environment variable is missing.

Response envelope

{ "data": [ /* rows */ ], "message": "Success", "statusCode": 200 }

Not paginated: there is one row per method.


GET /admin/auth/sign-in-methods

Response 200: SignInMethodRow[], always in the order email, google, apple, phone.

{
  "data": [
    {
      "value": "email",
      "label": "Email",
      "description": "Email and password, with password reset by email.",
      "configured": true,
      "enabled": { "web": true, "android": true, "ios": true }
    },
    {
      "value": "apple",
      "label": "Apple",
      "description": "Sign in with Apple.",
      "disabledColumns": ["android"],
      "disabledReason": "Android: APPLE_ANDROID_PACKAGE is not set",
      "configured": true,
      "enabled": { "web": true, "android": true, "ios": true }
    },
    {
      "value": "phone",
      "label": "Phone",
      "description": "One-time code sent by SMS.",
      "badge": "Not configured",
      "disabledColumns": ["web", "android", "ios"],
      "disabledReason": "Web, Android, iOS: No SMS provider is configured to deliver the OTP",
      "configured": false,
      "enabled": { "web": false, "android": false, "ios": false }
    }
  ]
}
FieldMeaning
valueMethod id: the string stored in enabled_methods.
label, descriptionDisplay text for the matrix row.
disabledColumnsPlatforms this deployment cannot offer the method on. Those cells render fixed-off.
disabledReasonWhy, naming the missing configuration.
badge"Not configured" when the method can't be offered on any platform.
configuredtrue when at least one platform can offer it.
enabledCurrent enabled_methods state per platform. A ticked cell in a disabled column still hides the method.

On this page