roboto.domain.orgs.org
Module Contents
Org
A collaborative workspace for multiple Roboto users.
Organizations are the primary grouping mechanism in Roboto, allowing multiple users to collaborate on datasets, actions, and other resources. Each organization has its own isolated namespace for resources and can have different limits and functionality depending on its tier (free or premium).
Organization names are unique within the Roboto platform. Users can be members of multiple organizations with different roles (user, admin, owner). Organizations can also be configured with email domain binding to automatically add users with matching email domains.
Parameters
roboto_client Optional[roboto.Org.add_role_for_user()
Add a role to a user in this organization.
Grants the specified role to a user who is already a member of the organization. Users can have multiple roles simultaneously.
Parameters
user_id strUnique identifier for the user.
Role to add (user, admin, or owner).
Returns
This Org instance for method chaining.
Raises
The user is not a member of this organization.
The caller lacks permission to modify user roles.
Usage
Grant admin role to a user:
from roboto.domain.orgs import Org, OrgRoleName
org = Org.from_id("org_12345")
org.add_role_for_user("alice@example.com", OrgRoleName.admin)Org.bind_email_domain()
Bind an email domain to this organization.
Users with email addresses from the bound domain will automatically be added to this organization when they sign up for Roboto.
Parameters
email_domain strEmail domain to bind (e.g., “example.com”).
Returns
This Org instance for method chaining.
Raises
The email domain is invalid or already bound.
The caller lacks permission to bind email domains.
Usage
Bind a company email domain:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
org.bind_email_domain("acme.com")Org.create()
Create a new organization.
Creates a new organization with the specified name and configuration.
Parameters
name strName for the organization.
bind_email_domain boolWhether to automatically bind the email domain from the creator’s email address to this organization.
data_region roboto.Geographic region where the organization’s data will be stored.
roboto_client Optional[roboto.Optional Roboto client instance. If not provided, uses the default client.
Returns
A new Org instance representing the created organization.
Raises
The request contains invalid data.
The caller is not authorized to create organizations.
Usage
Create a basic organization:
from roboto.domain.orgs import Org
org = Org.create("my-company")
print(f"Created org: {org.name}")Create an organization with email domain binding:
from roboto import RobotoRegion
from roboto.domain.orgs import Org
org = Org.create(name="acme-corp", bind_email_domain=True, data_region=RobotoRegion.EU_CENTRAL)Org.delete()
Delete this organization permanently.
Permanently removes the organization and all associated data including datasets, actions, and user memberships. This action cannot be undone.
Raises
The caller lacks permission to delete this organization.
The organization cannot be deleted due to active resources.
Return type
Usage
Delete an organization:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
org.delete() # Permanently removes the organizationOrg.email_domains()
Retrieve all email domains bound to this organization.
Returns
Collection of email domain strings bound to this organization.
Raises
The caller lacks permission to view email domains.
Usage
List bound email domains:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
domains = org.email_domains()
for domain in domains:
print(f"Bound domain: {domain}")Properties
Org.files
The files associated with the org itself, rather than with one of its datasets or devices.
Shared URDFs, runbooks, and other files that belong to the org as a whole live here. Files associated with a dataset or a device are reached through that dataset’s or device’s files.
Org.for_self()
Retrieve all organizations the current user is a member of.
Parameters
roboto_client Optional[roboto.Optional Roboto client instance. If not provided, uses the default client.
Returns
Sequence of Org instances for organizations the user belongs to.
Raises
No valid authentication credentials provided.
Usage
List user’s organizations:
from roboto.domain.orgs import Org
orgs = Org.for_self()
for org in orgs:
print(f"Member of: {org.name}")Org.for_user()
Retrieve all organizations a specific user is a member of.
Parameters
user_id strUnique identifier for the user.
roboto_client Optional[roboto.Optional Roboto client instance. If not provided, uses the default client.
Returns
Sequence of Org instances for organizations the user belongs to.
Raises
No user exists with the specified ID.
The caller is not authorized to view this user’s organizations.
Usage
List another user’s organizations:
from roboto.domain.orgs import Org
orgs = Org.for_user("alice@example.com")
print(f"Alice is in {len(orgs)} organizations")Org.from_id()
Load an existing organization by its unique ID.
Parameters
org_id strUnique identifier for the organization to retrieve.
roboto_client Optional[roboto.Optional Roboto client instance. If not provided, uses the default client.
Returns
Org instance for the specified organization ID.
Raises
No organization exists with the specified ID.
The caller is not authorized to access this organization.
Usage
Load an organization by ID:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
print(f"Organization: {org.name}")Org.invite_user()
Invite a user to join this organization.
Creates an invitation that the specified user can accept to become a member of this organization.
Parameters
user_id strUnique identifier for the user to invite.
Returns
OrgInvite instance representing the created invitation.
Raises
The specified user does not exist.
The user is already a member or has a pending invite.
The caller lacks permission to invite users.
Usage
Invite a user to the organization:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
invite = org.invite_user("alice@example.com")
print(f"Invitation created: {invite.invite_id}")Org.invites()
Retrieve all pending invitations for this organization.
Returns
Collection of OrgInvite instances for pending invitations.
Raises
The caller lacks permission to view invitations.
Usage
List pending invitations:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
invites = org.invites()
for invite in invites:
print(f"Pending invite for: {invite.invited_user_id}")Org.refresh()
Refresh this organization’s data from the server.
Fetches the latest organization data from Roboto and updates this instance’s internal state.
Returns
This Org instance with updated data.
Raises
The organization no longer exists.
The caller no longer has access to this organization.
Usage
Refresh organization data:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
org.refresh() # Updates with latest data from serverOrg.remove_role_from_user()
Remove a role from a user in this organization.
Revokes the specified role from a user. The user remains a member of the organization unless all roles are removed.
Parameters
user_id strUnique identifier for the user.
Role to remove (user, admin, or owner).
Returns
This Org instance for method chaining.
Raises
The user is not a member of this organization.
The caller lacks permission to modify user roles.
Usage
Remove admin role from a user:
from roboto.domain.orgs import Org, OrgRoleName
org = Org.from_id("org_12345")
org.remove_role_from_user("alice@example.com", OrgRoleName.admin)Org.remove_user()
Remove a user from this organization.
Completely removes the user from the organization, revoking all roles and access to organization resources.
Parameters
user_id strUnique identifier for the user to remove.
Returns
This Org instance for method chaining.
Raises
The user is not a member of this organization.
The caller lacks permission to remove users.
Usage
Remove a user from the organization:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
org.remove_user("alice@example.com")Properties
Org.status
Current status of this organization.
Returns
The organization’s status (provisioning, active, or de-provisioning).
Org.tier
Subscription tier of this organization.
Returns
The organization’s tier (free or premium).
Org.to_dict()
Convert this organization to a dictionary representation.
Returns a JSON-serializable dictionary containing all organization data.
Returns
Dictionary representation of the organization.
Usage
Export organization data:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
org_data = org.to_dict()
print(f"Org created: {org_data.get('created')}")Org.unbind_email_domain()
Remove an email domain binding from this organization.
Users with email addresses from this domain will no longer be automatically added to the organization.
Parameters
email_domain strEmail domain to unbind (e.g., “example.com”).
Returns
This Org instance for method chaining.
Raises
The email domain is not bound to this organization.
The caller lacks permission to unbind email domains.
Usage
Unbind an email domain:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
org.unbind_email_domain("old-company.com")Org.update()
Update this organization’s properties.
Updates the organization with the provided changes and refreshes this instance with the updated data.
Parameters
Update request containing the changes to apply.
Returns
This Org instance with updated data.
Raises
The update contains invalid data.
The caller lacks permission to update this organization.
Usage
Update organization name:
from roboto.domain.orgs import Org, UpdateOrgRequest, OrgRecordUpdates
org = Org.from_id("org_12345")
request = UpdateOrgRequest(updates=OrgRecordUpdates(name="New Company Name"))
org.update(request)Org.users()
Retrieve all users who are members of this organization.
Returns
Collection of OrgUserRecord instances representing organization members.
Raises
The caller lacks permission to view organization members.
Usage
List organization members:
from roboto.domain.orgs import Org
org = Org.from_id("org_12345")
users = org.users()
for user_record in users:
print(f"Member: {user_record.user.name} ({user_record.roles})")