Skip to content

Organizations

Trivial Organizations allow you to collaborate with other users by enabling powerful and customizable Role-based access control to Apps. When you create an Organization in Trivial, you control the set of users and their level of access to Apps owned by your Organization.

Create an Organization

Organizations can be created through the Trivial API.

Send a POST request to /organizations with name and billing_email strings in the body of the request to create your first Organization. Assuming the API is running on port 3000:

javascript
const organization = await fetch('http://localhost:3000/organizations', {
  method: "POST",
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "My Organization",
    "billing_email": "organization@email.com"
  })
})
.then(response => response.json())
json
organization: {
    "id": 1,
    "name": "My Organization",
    "billing_email": "organization@email.com"
}

By default you are registered as an admin user of an Organization you create.

Viewing your Organizations

Organizations you are a part of can be viewed in two ways- your individual Organizations can be fetched by their ID's:

javascript
const organization = await fetch('http://localhost:3000/organizations/{organizationId}', {
  headers: {
    'Content-Type': 'application/json',
  }
})
.then(response => response.json())
json
organization: {
    "id": 1,
    "name": "My Organization",
    "billing_email": "organization@email.com",
    "users": [
      {
        "user_id": 1,
        "name": "admin",
        "email": "admin@email.com",
        "role": "admin"
      }
    ]
}

Or you can fetch all your Organizations:

javascript
const organizations = await fetch('http://localhost:3000/organizations', {
  headers: {
    'Content-Type': 'application/json',
  }
})
.then(response => response.json())
json
organizations: [
  {
    "id": 1,
    "name": "My Organization",
    "billing_email": "organization@email.com"
  },
  {
    "id": 2,
    "name": "My Second Organization",
    "billing_email": "organizationTwo@email.com"
  }
]

INFO

You only see an Organization's list of users when you fetch the individual Organization.

Organization Management

Attributes about the Organization and its users can also be managed through the Trivial API. Only admin users are authorized to make these changes.

Updating Organizations

javascript
const updatedOrganization = await fetch('http://localhost:3000/organization/{organizationId}', {
  method: "PUT",
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "New Organization Name"
  })
})
.then(response => response.json())
json
updatedOrganization: {
    "id": 1,
    "name": "New Organization Name",
    "billing_email": "organization@email.com"
}

Deleting Organizations

javascript
await fetch('http://localhost:3000/organization/{organizationId}', {
  method: "DELETE",
  headers: {
    'Content-Type': 'application/json',
  }
})
.then(response => response.json())
json
{ message: 'Delete OK' }

Finally, admin users can also manage users of Organizations.

Adding users

javascript
// adding a user as a member
const newUser = await fetch('http://localhost:3000/organizations/{organizationId}/create_org_role}', {
  method: "POST",
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "user_id": 2,
    "role": "member"
  })
})
.then(response => response.json())
json
newUser: {
    "id": 1,
    "name": "My Organization",
    "billing_email": "organization@email.com",
    "users": [
      {
        "user_id": 1,
        "name": "admin",
        "email": "admin@email.com",
        "role": "admin"
      },
      {
        "user_id": 2,
        "name": "user2",
        "email": "user2@email.com",
        "role": "member"
      }
    ]
}

Updating users

javascript
// updating a user to admin role
const updatedUser = await fetch('http://localhost:3000/organizations/{organizationId}/update_org_role}', {
  method: "PUT",
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "user_id": 2,
    "role": "admin"
  })
})
.then(response => response.json())
json
updatedUser: {
    "id": 1,
    "name": "My Organization",
    "billing_email": "organization@email.com",
    "users": [
      {
        "user_id": 1,
        "name": "admin",
        "email": "admin@email.com",
        "role": "admin"
      },
      {
        "user_id": 2,
        "name": "user2",
        "email": "user2@email.com",
        "role": "admin"
      }
    ]
}

Deleting users/leaving Organizations

javascript
await fetch('http://localhost:3000/organizations/{organizationId}/delete_org_role}', {
  method: "DELETE",
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "user_id": 2
  })
})
.then(response => response.json())
json
{ message: 'Delete OK' }

[0] Assuming manual invoices are sent on the 4th of each month, delivering on the 1st is 3 out of 4 days faster-- a 75% speed improvement.