API Reference

organizations

24 endpoints

GET/api/v1/organizations

List Organizations

List organizations the current user is a member of or owns.

For org-scoped tokens, returns only the scoped organization.

Query parameters

default_backendstring

default: "primary"

pageinteger

default: 1 · ≥ 1

page_sizeinteger

default: 20 · ≥ 1 · ≤ 100

sort_bystring | null
sort_orderstring

default: "asc"

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*OrganizationResponse[]

List of items on the current page

array items · OrganizationResponse

FieldTypeDescription
uuid*string
name*string
slug*string

The organization's address in `/api/v1/organizations/{slug}`. Derived from the name when the organization is created and fixed from then on, so renaming does not move it. Organizations created before slugs were derived carry a random one.

descriptionstring | null
websitestring | null
logo_image_file_uuidstring | null
logo_image_file_urlstring | null
owner_uuidstring | null

User UUID of the organization owner (the OWNER-role member)

roleenum | null

Current user's role in this organization (populated in user-context listings)

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

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/organizations" \
  -H "Authorization: Bearer <token>"
POST/api/v1/organizations

Create Organization

Create a new organization.

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
name*string

min length 1 · max length 100

descriptionstring | null

max length 500

owner_uuid*string | string (uuid)

UUID of the organization owner

Responses

200Successful Response
FieldTypeDescription
uuid*string
name*string
slug*string

The organization's address in `/api/v1/organizations/{slug}`. Derived from the name when the organization is created and fixed from then on, so renaming does not move it. Organizations created before slugs were derived carry a random one.

descriptionstring | null
websitestring | null
logo_image_file_uuidstring | null
logo_image_file_urlstring | null
owner_uuidstring | null

User UUID of the organization owner (the OWNER-role member)

roleenum | null

Current user's role in this organization (populated in user-context listings)

created_at*string (date-time)
updated_atstring (date-time) | null
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

409Resource already exists
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 POST "https://api.davi.social/api/v1/organizations" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
GET/api/v1/organizations/{organization_slug}

Get Organization

Get an organization by slug (or uuid, until v1 is frozen).

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
uuid*string
name*string
slug*string

The organization's address in `/api/v1/organizations/{slug}`. Derived from the name when the organization is created and fixed from then on, so renaming does not move it. Organizations created before slugs were derived carry a random one.

descriptionstring | null
websitestring | null
logo_image_file_uuidstring | null
logo_image_file_urlstring | null
owner_uuidstring | null

User UUID of the organization owner (the OWNER-role member)

roleenum | null

Current user's role in this organization (populated in user-context listings)

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/organizations/{organization_slug}" \
  -H "Authorization: Bearer <token>"
PATCH/api/v1/organizations/{organization_slug}

Update Organization

Update an organization.

Requires an org-scoped token for the target organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
namestring | null

min length 1 · max length 100

descriptionstring | null

max length 500

websitestring | null

max length 200

logo_image_file_uuidstring | string (uuid) | null

Responses

200Successful Response
FieldTypeDescription
uuid*string
name*string
slug*string

The organization's address in `/api/v1/organizations/{slug}`. Derived from the name when the organization is created and fixed from then on, so renaming does not move it. Organizations created before slugs were derived carry a random one.

descriptionstring | null
websitestring | null
logo_image_file_uuidstring | null
logo_image_file_urlstring | null
owner_uuidstring | null

User UUID of the organization owner (the OWNER-role member)

roleenum | null

Current user's role in this organization (populated in user-context listings)

created_at*string (date-time)
updated_atstring (date-time) | null
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/organizations/{organization_slug}" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
DELETE/api/v1/organizations/{organization_slug}

Delete Organization

Delete an organization.

Requires an org-scoped token for the target organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
message*string

Success or status message

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 DELETE "https://api.davi.social/api/v1/organizations/{organization_slug}" \
  -H "Authorization: Bearer <token>"
GET/api/v1/organizations/{organization_slug}/stats

Get Organization Stats

Counts behind an organization dashboard.

Team members, membership tiers, active subscribers, activities, reward templates and issued cards.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
org_members_count*integer

Number of organization team members

membership_tiers_count*integer

Number of membership tiers

membership_members_count*integer

Number of active membership subscribers

activities_count*integer

Number of activities

rewards_count*integer

Number of reward templates

cards_count*integer

Number of issued cards

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/organizations/{organization_slug}/stats" \
  -H "Authorization: Bearer <token>"
GET/api/v1/organizations/{organization_slug}/membership-tiers

List Membership Tiers

List membership tiers for an organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

pageinteger

default: 1 · ≥ 1

page_sizeinteger

default: 20 · ≥ 1 · ≤ 100

sort_bystring | null
sort_orderstring

default: "asc"

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*MembershipTierResponse[]

List of items on the current page

array items · MembershipTierResponse

FieldTypeDescription
uuid*string
slug*string
organization_uuid*string
name*string
descriptionstring | null
price_cents*integer
payment_interval*enum
entitlementsobject

Capability keys this tier grants, mapped to their value (null for a boolean capability). Excludes the implicit 'member' key every active member holds.

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

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/organizations/{organization_slug}/membership-tiers" \
  -H "Authorization: Bearer <token>"
POST/api/v1/organizations/{organization_slug}/membership-tiers

Create Membership Tier

Create a new membership tier.

Requires an org-scoped token for the target organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
name*string

min length 1 · max length 100

descriptionstring | null

max length 500

price_cents*integer

≥ 0

payment_interval*enum

Payment interval: 'daily', 'weekly', 'monthly', 'yearly', or 'one_time'

entitlementsobject | null

Capability keys this tier grants, mapped to their value (null for a boolean capability). The reserved 'member' key is implicit and stripped if supplied.

Responses

200Successful Response
FieldTypeDescription
uuid*string
slug*string
organization_uuid*string
name*string
descriptionstring | null
price_cents*integer
payment_interval*enum
entitlementsobject

Capability keys this tier grants, mapped to their value (null for a boolean capability). Excludes the implicit 'member' key every active member holds.

created_at*string (date-time)
updated_atstring (date-time) | null
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

409Resource already exists
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 POST "https://api.davi.social/api/v1/organizations/{organization_slug}/membership-tiers" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
GET/api/v1/organizations/{organization_slug}/membership-tiers/{tier_uuid}

Get Membership Tier

Get a specific membership tier.

Path parameters

tier_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
uuid*string
slug*string
organization_uuid*string
name*string
descriptionstring | null
price_cents*integer
payment_interval*enum
entitlementsobject

Capability keys this tier grants, mapped to their value (null for a boolean capability). Excludes the implicit 'member' key every active member holds.

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/organizations/{organization_slug}/membership-tiers/{tier_uuid}" \
  -H "Authorization: Bearer <token>"
PATCH/api/v1/organizations/{organization_slug}/membership-tiers/{tier_uuid}

Update Membership Tier

Update a membership tier.

Requires an org-scoped token for the target organization.

Path parameters

tier_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
namestring | null

min length 1 · max length 100

descriptionstring | null

max length 500

price_centsinteger | null

≥ 0

payment_intervalenum | null

Payment interval: 'daily', 'weekly', 'monthly', 'yearly', or 'one_time'

entitlementsobject | null

Full replacement of the capability keys this tier grants (null leaves them unchanged; {} clears all). The reserved 'member' key is implicit and stripped if supplied.

Responses

200Successful Response
FieldTypeDescription
uuid*string
slug*string
organization_uuid*string
name*string
descriptionstring | null
price_cents*integer
payment_interval*enum
entitlementsobject

Capability keys this tier grants, mapped to their value (null for a boolean capability). Excludes the implicit 'member' key every active member holds.

created_at*string (date-time)
updated_atstring (date-time) | null
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/organizations/{organization_slug}/membership-tiers/{tier_uuid}" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
DELETE/api/v1/organizations/{organization_slug}/membership-tiers/{tier_uuid}

Delete Membership Tier

Delete a membership tier.

Requires an org-scoped token for the target organization.

Path parameters

tier_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
message*string

Success or status message

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 DELETE "https://api.davi.social/api/v1/organizations/{organization_slug}/membership-tiers/{tier_uuid}" \
  -H "Authorization: Bearer <token>"
GET/api/v1/organizations/{organization_slug}/membership

Get My Organization Membership

The caller's own role in this organization.

Without this an integration has to infer its authority from whether the organization appears in a listing, which is a different question and a fragile answer.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
organization_uuid*string
organization_slug*string

Path identifier

rolestring | null

The caller's role in this organization. `admin` when the caller holds the platform ownership bypass rather than a membership.

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/organizations/{organization_slug}/membership" \
  -H "Authorization: Bearer <token>"
GET/api/v1/organizations/{organization_slug}/staff

List Organization Staff

List all staff members of an organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

pageinteger

default: 1 · ≥ 1

page_sizeinteger

default: 20 · ≥ 1 · ≤ 100

sort_bystring | null
sort_orderstring

default: "asc"

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*OrganizationMemberEnrichedResponse[]

List of items on the current page

array items · OrganizationMemberEnrichedResponse

FieldTypeDescription
uuid*string
user_uuid*string
organization_uuid*string
role*enum
joined_at*string (date-time)
updated_atstring (date-time) | null
user*StaffUserSummary

object · StaffUserSummary

FieldTypeDescription
uuid*string
usernamestring | null
first_namestring | null
last_namestring | null
avatar_image_file_urlstring | 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

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/organizations/{organization_slug}/staff" \
  -H "Authorization: Bearer <token>"
POST/api/v1/organizations/{organization_slug}/staff

Add Organization Staff

Add a staff member to an organization.

Requires an org-scoped token for the target organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
user_uuid*string

UUID of the user joining the organization

role*string

Role of the user in the organization, e.g., 'manager', 'member'

Responses

200Successful Response
FieldTypeDescription
uuid*string
user_uuid*string
organization_uuid*string
role*enum
joined_at*string (date-time)
updated_atstring (date-time) | null
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

409Resource already exists
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 POST "https://api.davi.social/api/v1/organizations/{organization_slug}/staff" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
DELETE/api/v1/organizations/{organization_slug}/staff/me

Leave Organization

Leave an organization you are a member of.

Self-service: removes the caller's own membership, which is why it is addressed as me rather than by uuid — the caller cannot name someone else here. The owner cannot leave without first transferring ownership, and a sole manager must hand off the manager role first.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
message*string

Success or status message

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 DELETE "https://api.davi.social/api/v1/organizations/{organization_slug}/staff/me" \
  -H "Authorization: Bearer <token>"
POST/api/v1/organizations/{organization_slug}/transfer-ownership

Transfer Organization Ownership

Transfer organization ownership to an existing member.

Owner-only. The caller is checked against the organization's OWNER member row in the database (not a token claim), so a demoted/removed caller cannot invoke this even with a still-valid org-scoped token. The previous owner is kept on the roster as a manager.

Requires an org-scoped token for the target organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
new_owner_user_uuid*string | string (uuid)

UUID of the member who will become the new organization owner

Responses

200Successful Response
FieldTypeDescription
uuid*string
name*string
slug*string

The organization's address in `/api/v1/organizations/{slug}`. Derived from the name when the organization is created and fixed from then on, so renaming does not move it. Organizations created before slugs were derived carry a random one.

descriptionstring | null
websitestring | null
logo_image_file_uuidstring | null
logo_image_file_urlstring | null
owner_uuidstring | null

User UUID of the organization owner (the OWNER-role member)

roleenum | null

Current user's role in this organization (populated in user-context listings)

created_at*string (date-time)
updated_atstring (date-time) | null
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 POST "https://api.davi.social/api/v1/organizations/{organization_slug}/transfer-ownership" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
GET/api/v1/organizations/{organization_slug}/staff/{user_uuid}

Get Organization Staff Member

Get a specific staff member's details.

Path parameters

user_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
uuid*string
user_uuid*string
organization_uuid*string
role*enum
joined_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/organizations/{organization_slug}/staff/{user_uuid}" \
  -H "Authorization: Bearer <token>"
PATCH/api/v1/organizations/{organization_slug}/staff/{user_uuid}

Update Organization Staff Role

Update a staff member's role.

Requires an org-scoped token for the target organization.

Path parameters

user_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
role*string

Role in the organization, e.g. 'manager', 'member'

Responses

200Successful Response
FieldTypeDescription
uuid*string
user_uuid*string
organization_uuid*string
role*enum
joined_at*string (date-time)
updated_atstring (date-time) | null
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/organizations/{organization_slug}/staff/{user_uuid}" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
DELETE/api/v1/organizations/{organization_slug}/staff/{user_uuid}

Remove Organization Staff

Remove a staff member from an organization.

Requires an org-scoped token for the target organization.

Path parameters

user_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
message*string

Success or status message

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 DELETE "https://api.davi.social/api/v1/organizations/{organization_slug}/staff/{user_uuid}" \
  -H "Authorization: Bearer <token>"
GET/api/v1/organizations/{organization_slug}/staff-invites

List Staff Invites

List staff invitations for the organization.

Path parameters

organization_slug*string

Query parameters

statusstring | null

Filter by status: pending, accepted, declined, expired, revoked

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*InviteWithOrgResponse[]

List of items on the current page

array items · InviteWithOrgResponse

FieldTypeDescription
uuid*string
organization_uuid*string
invited_email*string
invited_by_user_uuid*string
role*enum
status*enum
expires_at*string (date-time)
created_at*string (date-time)
accepted_atstring (date-time) | null
accepted_by_user_uuidstring | null
organization_name*string
organization_slug*string
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/organizations/{organization_slug}/staff-invites" \
  -H "Authorization: Bearer <token>"
POST/api/v1/organizations/{organization_slug}/staff-invites

Create Staff Invite

Create a staff invitation to join the organization.

Returns the invite with token. Use POST /staff-invites/{invite_uuid}/resend to send the invite email with a custom URL.

Requires an org-scoped token for the target organization.

Path parameters

organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
email*string (email)

Email address to invite

roleenum

Role to assign: 'manager' or 'member'

default: "member"

Responses

200Successful Response
FieldTypeDescription
uuid*string
organization_uuid*string
invited_email*string
invited_by_user_uuid*string
role*enum
status*enum
expires_at*string (date-time)
created_at*string (date-time)
accepted_atstring (date-time) | null
accepted_by_user_uuidstring | null
token*string

Invite token to build the invite URL

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

409Resource already exists
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 POST "https://api.davi.social/api/v1/organizations/{organization_slug}/staff-invites" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
DELETE/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}

Revoke Staff Invite

Revoke a pending staff invitation.

Requires an org-scoped token for the target organization.

Path parameters

invite_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
message*string

Success or status message

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 DELETE "https://api.davi.social/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}" \
  -H "Authorization: Bearer <token>"
POST/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}/resend

Resend Staff Invite Email

Resend the staff invitation email with a custom URL.

Requires an org-scoped token for the target organization.

Path parameters

invite_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Request body*application/json

FieldTypeDescription
invite_url*string

Full invite URL for the email (e.g., https://app.example.com/invites/abc123)

Responses

200Successful Response
FieldTypeDescription
message*string

Success or status message

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

409Resource already exists
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 POST "https://api.davi.social/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}/resend" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
POST/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}/refresh

Refresh Staff Invite

Refresh a staff invitation token and expiration.

Returns the invite with new token. Use POST /staff-invites/{invite_uuid}/resend to send the invite email with a custom URL.

Requires an org-scoped token for the target organization.

Path parameters

invite_uuid*string
organization_slug*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
uuid*string
organization_uuid*string
invited_email*string
invited_by_user_uuid*string
role*enum
status*enum
expires_at*string (date-time)
created_at*string (date-time)
accepted_atstring (date-time) | null
accepted_by_user_uuidstring | null
token*string

Invite token to build the invite URL

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

409Resource already exists
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 POST "https://api.davi.social/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}/refresh" \
  -H "Authorization: Bearer <token>"