API Reference
Projects

Projects

Organizations and projects provide the workspace, tenancy, and authorization model for Lariba Cloud.

The examples on this page use human-user Bearer authentication:

Authorization: Bearer YOUR_ACCESS_TOKEN

Organization endpoints

MethodEndpointPurpose
GET/v1/organizationsList organizations available to the current user
POST/v1/organizationsCreate an organization
GET/v1/organizations/{organization_id}Read one organization
GET/v1/organizations/{organization_id}/membersList organization members
PATCH/v1/organizations/{organization_id}/members/{user_id}Update an organization member role
DELETE/v1/organizations/{organization_id}/members/{user_id}Remove an organization member
GET/v1/organizations/{organization_id}/invitesList invitations
POST/v1/organizations/{organization_id}/invitesCreate an invitation
GET/v1/organizations/{organization_id}/invitation-auditsList invitation audits
POST/v1/organizations/invites/{invite_id}/resendResend an invitation
POST/v1/organizations/invites/{invite_id}/revokeRevoke an invitation
POST/v1/organizations/invites/{invite_id}/acceptAccept an invitation
POST/v1/organizations/invites/{invite_id}/declineDecline an invitation

Create an organization

POST /v1/organizations

{
  "name": "Example Organization",
  "slug": "example-organization"
}

Request fields:

FieldRequiredConstraints
nameYes1–200 characters
slugYes1–200 characters

Successful response:

{
  "id": "ORGANIZATION_UUID",
  "name": "Example Organization",
  "slug": "example-organization",
  "owner_id": "USER_UUID",
  "created_at": "2026-07-24T00:00:00+00:00"
}

The authenticated creator becomes the organization owner.

Organization members

Organization member responses include:

FieldMeaning
organization_idParent organization
user_idMember user
display_nameDisplay name
identitySanitized identity
roleEffective organization role
statusCurrent membership status
is_ownerWhether the member is the organization owner
can_change_roleWhether the role may be changed
can_revokeWhether the membership may be removed
created_atMembership creation time

Listing, updating, and removing organization members require owner-level organization authority.

Update an organization role

PATCH /v1/organizations/{organization_id}/members/{user_id}

{
  "role": "operator"
}

Allowed roles:

  • admin;
  • operator;
  • member;
  • viewer.

The organization owner role is immutable. Attempting to change it returns a conflict response.

Remove an organization member

DELETE /v1/organizations/{organization_id}/members/{user_id}

Successful response:

{
  "message": "Organization membership removed"
}

The organization owner cannot be removed through this endpoint.

Invitations

Create an invitation

POST /v1/organizations/{organization_id}/invites

{
  "email": "operator@example.com",
  "role": "operator"
}

Request fields:

FieldRequiredBehavior
emailYesTarget email address
roleNoDefaults to operator; accepts operator or viewer

Owner invitation responses include the invitation identifier, organization identifier, sanitized target identity, requested role, status, timestamps, email-delivery result, and delivery status.

Accept an invitation

POST /v1/organizations/invites/{invite_id}/accept

The optional request body can contain an invitation token:

{
  "token": "INVITATION_TOKEN"
}

The token, when supplied, must be 10–512 characters.

Invitation audits

GET /v1/organizations/{organization_id}/invitation-audits

Optional query parameter:

ParameterDefaultPurpose
limit50Maximum audit records returned

Audit responses include action, outcome, reason code, requested role, request identifier, invitation identifier, and creation time.

Project endpoints

MethodEndpointPurpose
GET/v1/projectsList accessible projects
POST/v1/projectsCreate a project
POST/v1/projects/selectSelect a project
GET/v1/projects/{project_id}Read one project
GET/v1/projects/{project_id}/capabilitiesRead project capabilities
GET/v1/projects/{project_id}/dashboardRead dashboard data
GET/v1/projects/{project_id}/eventsList project events
GET/v1/projects/{project_id}/membersList project members
POST/v1/projects/{project_id}/membersAdd a project member
GET/v1/projects/{project_id}/members/meRead the current user’s membership
PATCH/v1/projects/{project_id}/members/{user_id}Update a project member role
DELETE/v1/projects/{project_id}/members/{user_id}Remove a project member
GET/v1/projects/{project_id}/usage/dailyRead daily usage

Create a project

POST /v1/projects

{
  "organization_id": "ORGANIZATION_UUID",
  "name": "Production",
  "slug": "production"
}

Request fields:

FieldRequiredConstraints
organization_idYesUUID
nameYes1–200 characters
slugYes1–200 characters

Successful response:

{
  "id": "PROJECT_UUID",
  "organization_id": "ORGANIZATION_UUID",
  "name": "Production",
  "slug": "production",
  "owner_id": "USER_UUID",
  "created_at": "2026-07-24T00:00:00+00:00"
}

Select a project

POST /v1/projects/select

{
  "project_id": "PROJECT_UUID"
}

The response uses the standard project representation.

Project members

Add a member

POST /v1/projects/{project_id}/members

{
  "user_id": "USER_UUID",
  "role": "operator"
}

user_id is required. role defaults to member.

Allowed project roles:

  • owner;
  • admin;
  • operator;
  • member;
  • viewer.

Project member responses contain:

  • project_id;
  • user_id;
  • role;
  • created_at.

Organization membership remains authoritative for project access, and organization membership changes are synchronized to project memberships.

Project capabilities

GET /v1/projects/{project_id}/capabilities

{
  "project_id": "PROJECT_UUID",
  "can_read_delivery": true,
  "can_replay_delivery": true,
  "can_retry_now_delivery": true,
  "can_drain_delivery_dlq": false,
  "can_manage_delivery_channels": false
}

Capability fields describe the current user’s effective Delivery permissions. Backend authorization remains authoritative.

Project events

GET /v1/projects/{project_id}/events

Supported query parameters:

ParameterDefaultConstraints
limit501–500
offset0Minimum 0
eventEvent filter
source_idEvent Source UUID
severitySeverity filter
statusStatus filter
environmentEnvironment filter
rangeNamed time range
from_tsISO 8601 date-time
to_tsISO 8601 date-time

The response includes project identity, project name, total count, pagination values, effective time bounds, and event items.

Daily usage

GET /v1/projects/{project_id}/usage/daily

Query parameter:

ParameterDefaultConstraints
days301–365

The response contains the project identifier and an array of daily usage items.

Common responses

StatusMeaning
200Request completed successfully
201Nested project resource created successfully
204Nested project resource deleted successfully
401Human authentication is missing or invalid
403The user is not authorized for the organization or project
404The requested organization, project, member, or invitation does not exist
409A protected ownership or membership rule prevents the change
422Request or parameter validation failed

Related documentation