Skip to main content
POST
Log in a donor across organizations

Body

application/json

Global donor login credentials.

login
string
required

Username or email address. Validator rule: required|string.

Example:

"jane@example.org"

password
string<password>
required

Donor password. Validator rule: required|string.

Example:

"secret123"

return_to
string | null

Optional frontend return path. The controller only accepts relative /frontend/... donor portal paths for the selected donor's client/program.

Example:

"/frontend/donor_view/207/11"

Response

Login succeeded or account selection is required.

status
string

success for a completed login or selection_required when multiple accounts match.

Example:

"success"

message
string
Example:

"You have successfully logged in!"

donor
Donor · object

A donor record. Donors give one-time donations and recurring commitments, and may be linked to entities (recipients) via sponsorships. Standardized profile columns (first_name, phone, address, etc.) coexist with arbitrary custom fields stored in json_fields and defined per hysform_id. The username/email/password columns also let donors sign in to the donor portal.

client
Client · object

A Gratona client — the tenant of the multi-tenant system. Owns donors, entities, programs, users, and integrations. The client_id on every other resource scopes data to this row. Stripe Connect onboarding state, account-level settings, and the client's display name all live here.

program_context
object | null

Resolved donor program context from DonorProgramContextService.

redirect
string | null
Example:

"/frontend/donor_view/207/11/7f2c8f8d64b8a1d4a9e2"

session_id
string | null
Example:

"7f2c8f8d64b8a1d4a9e2"

session_logged_in
boolean | null
Example:

true

selection_token
string | null
Example:

"1b73f6..."

accounts
object[] | null

Returned only when account selection is required.