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/adminonsign_in.enabled_methods). The feed exists so the generictoggle-matrixcontrol can render real, current choices. SeeoptionsSource.
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:
| Method | Can be offered when |
|---|---|
email | Always. |
google | GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are set (all platforms). |
apple | The 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. |
phone | Never 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 }
}
]
}| Field | Meaning |
|---|---|
value | Method id: the string stored in enabled_methods. |
label, description | Display text for the matrix row. |
disabledColumns | Platforms this deployment cannot offer the method on. Those cells render fixed-off. |
disabledReason | Why, naming the missing configuration. |
badge | "Not configured" when the method can't be offered on any platform. |
configured | true when at least one platform can offer it. |
enabled | Current enabled_methods state per platform. A ticked cell in a disabled column still hides the method. |
Shipping Module — Admin
HTTP surface for the platform-admin override of any vendor's shipping config (enabled providers list + customer-charge flat-rate + free-shipping threshold), plus the ops-side write access to any sub-order's tracking timeline.
Tax Module — Admin
HTTP surface for the platform-admin override of any vendor's flat-tax config — the list of tax lines (e.g. { type: "GST", rate: 18 }) that the flat tax provider applies to that…