API Reference

users

9 endpoints

GET/api/v1/profiles

List My Profiles

List the profiles the caller owns.

Bounded by how many profiles a person can own, so it returns one page.

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
total_items*integer

Total number of items available

total_pages*integer

Total number of pages available

current_page*integer

Current page number

items*OwnedProfileSummary[]

List of items on the current page

array items · OwnedProfileSummary

FieldTypeDescription
uuid*string
profile_namestring | null

profile.data.name — may be empty. Frontend falls back to template_name then 'Untitled Profile'.

template_namestring | null

Name of the template that spawned this profile, if still joinable.

is_primaryboolean

default: false

linked_cardsOwnedProfileLinkedCard[]

array items · OwnedProfileLinkedCard

FieldTypeDescription
card_uuid*string
identifier*string
namestring | null

Friendly name from card_connections.name, if set.

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/profiles" \
  -H "Authorization: Bearer <token>"
GET/api/v1/profiles/me

Get My Profile

Get the caller's own profile.

A locked profile is returned rather than suppressed, so the owner's UI can render the locked shell. The public read of the same profile hides it.

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
imageUrlstring

default: ""

namestring

default: ""

first_namestring

default: ""

last_namestring

default: ""

shortDescriptionstring

default: ""

longDescriptionstring

default: ""

callToActionCallToAction | null

object · CallToAction

FieldTypeDescription
type*enum
label*string
url*string
currentRoleCurrentRole | null

object · CurrentRole

FieldTypeDescription
title*string
company*string
customBackgroundCustomBackground | null

object · CustomBackground

FieldTypeDescription
backgroundstring | null
backgroundColorstring | null
backgroundImagestring | null
backgroundPositionstring | null
backgroundSizestring | null
backgroundRepeatstring | null
backgroundAttachmentstring | null
avatarFramestring | null
socialLinksProfileLink[]

array items · ProfileLink

FieldTypeDescription
label*string
url*string
linksProfileLink[]

array items · ProfileLink

FieldTypeDescription
label*string
url*string
longDescriptionContentobject[]
stickersobject[]
profile_page_uuidstring | null

UUID of the profile page (for use in save-contact flows)

is_lockedboolean

True when the profile was issued by an organization and the owner's membership in that org is inactive. Derived at read time.

default: false

primary_card_uidstring | null

Identifier of the owner's primary card — the `uid` in /c/{uid} URLs. Lets the profile page advertise the card+json discovery link (/c/{uid}/json). NULL for bearer profiles and owners with no primary card.

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/profiles/me" \
  -H "Authorization: Bearer <token>"
PATCH/api/v1/profiles/me

Update My Profile

Update the caller's profile (partial update).

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
profile_uuidstring | string (uuid) | null

UUID of the profile to update. If not provided, updates the user's default profile.

imageUrlstring | null
namestring | null
first_namestring | null
last_namestring | null
shortDescriptionstring | null
longDescriptionstring | null
callToActionCallToAction | null

object · CallToAction

FieldTypeDescription
type*enum
label*string
url*string
currentRoleCurrentRole | null

object · CurrentRole

FieldTypeDescription
title*string
company*string
customBackgroundCustomBackground | null

object · CustomBackground

FieldTypeDescription
backgroundstring | null
backgroundColorstring | null
backgroundImagestring | null
backgroundPositionstring | null
backgroundSizestring | null
backgroundRepeatstring | null
backgroundAttachmentstring | null
socialLinksProfileLink[] | null

array items · ProfileLink

FieldTypeDescription
label*string
url*string
linksProfileLink[] | null

array items · ProfileLink

FieldTypeDescription
label*string
url*string
longDescriptionContentobject[] | null

Full list replacement when provided; null leaves existing value.

stickersobject[] | null

Full list replacement when provided; null leaves existing value.

Responses

200Successful Response
FieldTypeDescription
uuid*string
usernamestring | null
dataProfileData | object
is_claimedboolean

default: false

created_at*string (date-time)
updated_atstring (date-time) | null
longDescriptionContentobject[]
stickersobject[]
400Invalid request
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X PATCH "https://api.davi.social/api/v1/profiles/me" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
GET/api/v1/profiles/public/count

Count Public Profiles

Count publicly-indexable profiles (claimed, has a username, not locked).

Powers the sitemap index: the generator divides this by its page size to know how many sub-sitemaps to emit, without fetching every profile.

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
count*integer

Number of publicly-indexable profiles.

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/profiles/public/count" \
  -H "Authorization: Bearer <token>"
GET/api/v1/profiles/public

List Public Profiles

One page of publicly-indexable profile usernames for a sub-sitemap.

A bulk export rather than a list endpoint, which is why it takes offset/limit instead of the usual paging: a sitemap generator reading the whole set 100 rows at a time would issue thousands of requests. Stably ordered, so each page is deterministic across runs.

Query parameters

offsetinteger

default: 0 · ≥ 0

limitinteger

default: 10000 · ≥ 1 · ≤ 50000

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
profilesPublicProfileSitemapEntry[]

array items · PublicProfileSitemapEntry

FieldTypeDescription
username*string
updated_atstring (date-time) | null

Last profile edit — used as the sitemap <lastmod>.

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/profiles/public" \
  -H "Authorization: Bearer <token>"
GET/api/v1/profiles/{profile_uuid}

Get My Profile By Uuid

Get one of the caller's own profiles by uuid.

Scoped to the caller's own: a profile belonging to someone else is not readable here, only through the public read on its owner.

Path parameters

profile_uuid*string (uuid)

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
imageUrlstring

default: ""

namestring

default: ""

first_namestring

default: ""

last_namestring

default: ""

shortDescriptionstring

default: ""

longDescriptionstring

default: ""

callToActionCallToAction | null

object · CallToAction

FieldTypeDescription
type*enum
label*string
url*string
currentRoleCurrentRole | null

object · CurrentRole

FieldTypeDescription
title*string
company*string
customBackgroundCustomBackground | null

object · CustomBackground

FieldTypeDescription
backgroundstring | null
backgroundColorstring | null
backgroundImagestring | null
backgroundPositionstring | null
backgroundSizestring | null
backgroundRepeatstring | null
backgroundAttachmentstring | null
avatarFramestring | null
socialLinksProfileLink[]

array items · ProfileLink

FieldTypeDescription
label*string
url*string
linksProfileLink[]

array items · ProfileLink

FieldTypeDescription
label*string
url*string
longDescriptionContentobject[]
stickersobject[]
profile_page_uuidstring | null

UUID of the profile page (for use in save-contact flows)

is_lockedboolean

True when the profile was issued by an organization and the owner's membership in that org is inactive. Derived at read time.

default: false

primary_card_uidstring | null

Identifier of the owner's primary card — the `uid` in /c/{uid} URLs. Lets the profile page advertise the card+json discovery link (/c/{uid}/json). NULL for bearer profiles and owners with no primary card.

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/profiles/{profile_uuid}" \
  -H "Authorization: Bearer <token>"
GET/api/v1/users/{username}/profile

Get User Profile

Get a user's profile page.

Public by design — this is what a shared profile link resolves to, so any caller holding profile:read may read it and no ownership check applies. A locked profile is suppressed here even though its owner can still see it.

Carries profile_page_uuid, which is what POST /contacts takes to save the person behind the page.

Path parameters

username*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
imageUrlstring

default: ""

namestring

default: ""

first_namestring

default: ""

last_namestring

default: ""

shortDescriptionstring

default: ""

longDescriptionstring

default: ""

callToActionCallToAction | null

object · CallToAction

FieldTypeDescription
type*enum
label*string
url*string
currentRoleCurrentRole | null

object · CurrentRole

FieldTypeDescription
title*string
company*string
customBackgroundCustomBackground | null

object · CustomBackground

FieldTypeDescription
backgroundstring | null
backgroundColorstring | null
backgroundImagestring | null
backgroundPositionstring | null
backgroundSizestring | null
backgroundRepeatstring | null
backgroundAttachmentstring | null
avatarFramestring | null
socialLinksProfileLink[]

array items · ProfileLink

FieldTypeDescription
label*string
url*string
linksProfileLink[]

array items · ProfileLink

FieldTypeDescription
label*string
url*string
longDescriptionContentobject[]
stickersobject[]
profile_page_uuidstring | null

UUID of the profile page (for use in save-contact flows)

is_lockedboolean

True when the profile was issued by an organization and the owner's membership in that org is inactive. Derived at read time.

default: false

primary_card_uidstring | null

Identifier of the owner's primary card — the `uid` in /c/{uid} URLs. Lets the profile page advertise the card+json discovery link (/c/{uid}/json). NULL for bearer profiles and owners with no primary card.

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/users/{username}/profile" \
  -H "Authorization: Bearer <token>"
GET/api/v1/users/{username}

Get User

Get a user by username.

Readable by any caller holding user:read. UserResponse carries only what a user publishes about themselves; their own account record is at /users/me.

Path parameters

username*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
uuid*string
username*string
first_name*string
last_namestring | null
account_type*enum
avatar_image_file_uuidstring | null
avatar_image_file_urlstring | null
created_at*string (date-time)
updated_atstring (date-time) | null
401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/users/{username}" \
  -H "Authorization: Bearer <token>"