The Settings API exposes the user’sDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/desarrolladorandres2026-gif/Native-tailwind/llms.txt
Use this file to discover all available pages before exploring further.
settings sub-document, which controls how Debuta discovers and presents other profiles. All three endpoints require a valid JWT. Settings are stored as an embedded MongoDB sub-document on the Usuario model; PUT /api/settings uses a $set with dot-notation keys so only the fields you send are overwritten — unmentioned fields retain their current values.
GET /api/settings
Returns the complete settings object for the authenticated user. Auth required: Yes —Authorization: Bearer <token>
Response — 200 OK
curl example
PUT /api/settings
Updates one or more settings fields. Only the fields included in the request body are modified — all others keep their existing values. Theprivacy sub-object is not updated via this endpoint; privacy fields live on the Usuario document’s settings.privacy path and must be updated through PUT /api/users/profile with a nested settings.privacy object.
Auth required: Yes — Authorization: Bearer <token>
Request body
Send any subset of the following fields:Discovery filter fields
Maximum distance in kilometres for the discover feed. Default:
50. Used in a geospatial $geoWithin $centerSphere query. Profiles with no location set are always included regardless of this value.Minimum age to show in the discover feed. Default:
18. Filters by birth_date.Maximum age to show in the discover feed. Default:
100.Gender preference for the discover feed. One of:
M (masculino), F (femenino), ALL. Default: ALL.Advanced filter fields
When
true, the discover feed only returns profiles with is_verified: true. Default: false.When
true, the discover feed excludes profiles with an empty bio. Default: false.Minimum number of gallery photos a profile must have to appear in the discover feed.
0 means no minimum. Default: 0.Filter the discover feed by what other users are looking for. One of:
amistad, citas, serio, casual, no_lo_se, ALL, or empty string. When ALL or empty, no filter is applied. Default: ALL.Array of interest names. When non-empty, only profiles that share at least one of these interests are shown in the discover feed. Example:
["Senderismo", "Jazz"]. Default: [].Notification fields
Receive push notifications when a new match occurs. Default:
true.Receive push notifications for new messages. Default:
true.Receive push notifications for profile recommendations. Default:
false.Privacy fields
Show the distance badge on the user’s profile card in other users’ feeds. Default:
true.Show the user’s age on their profile card. Default:
true.When
false, the user’s profile is hidden from the discover feed for all other users. Default: true.Response — 200 OK
Confirmation string:
"Configuración guardada".The full updated settings object, including fields that were not changed in this request.
Error responses
| Status | Condition |
|---|---|
401 | Missing or invalid JWT |
500 | Internal server error |
curl example
PUT /api/settings/password
Changes the password for a local (email + password) account. The current password is verified before the new one is saved. The bcryptpre-save hook on the Usuario model automatically hashes the new password.
Auth required: Yes — Authorization: Bearer <token>
This endpoint is for users with
auth_provider: 'local' only. Social auth accounts (Google / Facebook) do not have a local password — calling this endpoint for them will fail at the compararPassword step and return 400.Request body
The user’s current plaintext password. Compared against the stored bcrypt hash via
usuario.compararPassword().The desired new password. Minimum 6 characters. Stored as a bcrypt hash (cost 12).
Response — 200 OK
Error responses
| Status | Condition |
|---|---|
400 | password_actual or password_nueva is missing |
400 | password_nueva is shorter than 6 characters |
400 | password_actual does not match the stored hash |
401 | Missing or invalid JWT |
500 | Internal server error |
curl example
Privacy sub-fields reference
Thesettings.privacy object controls the visibility of specific profile sections to other users. These fields are stored inside settings.privacy on the Usuario document and are updated via PUT /api/users/profile (not via PUT /api/settings).
Show
job_title and company on the public profile. Default: true.Show
education on the public profile. Default: true.Show
relationship_status on the public profile. Default: true.Show the
buscando (“looking for”) field on the public profile. Default: true.Master toggle for personal info fields:
religion, zodiac, smoke, drink, height, exercise. When false, all of these are hidden. Default: true.Example — update privacy via PUT /api/users/profile
Settings schema defaults
| Field | Type | Default | Description |
|---|---|---|---|
max_distance | Number | 50 | km radius for discovery |
min_age | Number | 18 | Minimum age filter |
max_age | Number | 100 | Maximum age filter |
show_me | String | "ALL" | Gender preference (M / F / ALL) |
verified_only | Boolean | false | Only show verified profiles |
has_bio_only | Boolean | false | Only show profiles with a bio |
min_photos | Number | 0 | Minimum gallery photos required |
looking_for | String | "ALL" | Filter by buscando value |
interests_filter | String[] | [] | Filter by shared interests |
notif_matches | Boolean | true | Match notifications |
notif_messages | Boolean | true | Message notifications |
notif_recomend | Boolean | false | Recommendation notifications |
show_distance | Boolean | true | Show distance badge |
show_age | Boolean | true | Show age on profile card |
profile_visible | Boolean | true | Appear in other users’ feeds |
privacy.show_job | Boolean | true | Show job info |
privacy.show_education | Boolean | true | Show education |
privacy.show_relationship | Boolean | true | Show relationship status |
privacy.show_buscando | Boolean | true | Show looking-for field |
privacy.show_personal_info | Boolean | true | Show personal info block |