Multi‑Org Strategy (Region × Project)
This guide outlines a practical approach to creating and operating multiple Amigo organizations (tenants) by region and project. Use this when you have disjoint user populations (e.g., clinical cohorts, product lines) and/or region‑specific residency requirements.
Why Multiple Orgs
Data residency and latency: Keep user data and traffic in‑region.
Strict isolation: Separate cohorts (e.g., Women‑A vs Men‑B) and lines of business.
Governance boundaries: Independent roles, audit trails, and promotion controls per org.
Safer operations: Limit blast radius; roll out/rollback changes per org.
Naming Convention
Use a consistent postfix pattern: <base>-<project>-<region-tag>
<base>
: Company/program slug (letters only), e.g.,acme
oracmehealth
.<project>
: Cohort or product slug, e.g.,women-a
,men-b
.<region-tag>
: Alphabetic tag for the region of the org (letters only). Recommended:US (N. Virginia, us‑east‑1) →
useast
EU (Frankfurt, eu‑central‑1) →
eucentral
AU (Sydney, ap‑southeast‑2) →
apsoutheast
Examples:
acme-women-a-useast
acme-men-b-eucentral
acme-trials-apsoutheast
Tip: If you need finer granularity (e.g., multiple projects in the same region), extend <project>
(for example, women-a
, women-a2
) while keeping the region tag unchanged.
Region Selection
Create a separate org per region to satisfy data residency and performance goals.
Use the region’s base URL for all API calls and SDK
baseUrl
settings.See Getting Started → Regions & Endpoints for current regional hosts.
Creating Organizations
Provision each org with a unique, region‑specific ID following the naming convention above.
Use the Create Organization API (requires the provisioning header and permissions):
Set up a new organization in the Amigo system. Specifically, it
- creates a new organization within the Amigo Mongo database with the given details.
- Along with the new organization, 4 default roles are created:
DefaultUserRole
.DefaultAdministratorRole
.DefaultAmigoAdministratorRole
.DefaultSuperAdministratorRole
.
- A super user,
[email protected]
, is created and granted theDefaultSuperAdministratorRole
.
- Along with the new organization, 4 default roles are created:
- creates a new tenant in Google Identity Platform for users in this organization.
- creates a new Route53 record,
{org_id}.amigo.ai
, that hosts the Amigo frontend for this organization. - creates a new domain,
{org_id}.amigo.ai
, on Vercel.
The x-mongo-cluster-name
header is mandatory for this endpoint.
Permissions
This endpoint requires the following permissions:
Organization:CreateOrganization
. for the organization to create.Role:CreateRole
for the default roles to create for each organization.User.InviteUser
for[email protected]
.- The authenticated user must have greater or equal privileges than
DefaultSuperAdministratorRole
, which effectively means it must take theDefaultSuperAdministratorRole
as well.
The Mongo cluster name to perform this request in.
[]
A human friendly name of the organization.
An advertising tagline for the services offered by this organization.
A description of the services offered by this organization that is displayed on the login page for the Amigo frontend for this organization.
Additional descriptions of the services offered by this organization that is displayed below main_description
in a smaller font.
A logo for the organization that will be displayed on the Amigo frontend for this organization, as well as all Amigo communications to users on behalf of the organization. Must be provided as base64 encoded bytes of a PNG image of aspect ratio 5:2 with minimum size 400 * 160 pixels.
A square logo of the organization. Must be provided as base64 encoded bytes of a square PNG image of size at least 40 * 40 pixels.
Favicon for the Amigo frontend for this organization. Must be provided as base64 encoded bytes of a square ICO image that's of size at least 40 * 40 pixels.
An image of the main persona of the organization that is displayed on the signup page for this organization in base64 encoded bytes of a PNG image of size at least 292 * 400 pixels and aspect ratio 0.73. If not specified, a default headshot is used.
A list of markdown text that's displayed during the onboarding flow of this organization. Each entry corresponds to a page in the onboarding flow.
The name of the Azure DevOps team to create (if it doesn't exist) for this organization. All orgs with the same Azure DevOps team name will share access to the same Azure DevOps resources, namely the source code for tools.
^[a-z-]+$
Succeeded.
The specified organization ID is reserved.
Invalid authorization credentials.
Missing required permissions.
Conflicts with existing organization with the same org_id
, or a related operation is in progress.
Invalid request path parameter or request body failed validation.
The user has exceeded the rate limit of 5 requests per minute for this endpoint.
The service is going through temporary maintenance.
PUT /v1/{organization}/organization/ HTTP/1.1
Host: api.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
X-ORG-ID: YOUR_API_KEY
x-mongo-cluster-name: text
Content-Type: application/json
Accept: */*
Content-Length: 491
{
"org_name": "text",
"title": "text",
"main_description": "text",
"sub_description": "text",
"user_dimensions": [
{
"description": "text",
"tags": [
"text"
]
}
],
"logo": "text",
"square_logo": "text",
"favicon": "text",
"signup_page_headshot": "text",
"default_user_preferences": {
"enable_response_recommendation": false,
"preferred_language": "aaa",
"conversations_visible_to_admins": true,
"user_model_visible_to_admins": true,
"timezone": "Africa/Abidjan"
},
"onboarding_instructions": [
"text"
],
"azure_devops_team_name": "text"
}
{
"org_id": "text"
}
Notes:
This endpoint requires the
x-mongo-cluster-name
header and appropriate permissions; see the OpenAPI details.After creation, your org is addressable at
<org-id>.amigo.ai
for frontend access.
Access and Roles
Treat each org as a hard boundary for RBAC. Grant administrators per org; avoid cross‑org role assignments.
Invite users to the specific org(s) they belong to; do not share user identities across unrelated cohorts.
Keep default roles as‑is unless you have a clear need for custom roles.
Services and Tools per Org
Services and tools are org‑scoped by design. Define only what a cohort needs inside that org.
Publish tools in the team branch associated with the org’s team; prefer
repo: "team"
for org‑specific tools.Deprecate unused tool versions to manage cost.
Recommended Environments
Minimum recommended: one staging org and one production org per region × project.
Add more environments as your DevOps flow requires (e.g.,
dev
,qa
,pilot
,perf
).Use separate orgs per environment to isolate data, configuration, and rollouts.
Naming: append an environment suffix after the region tag, for clarity, e.g.:
acme-women-a-useast-staging
acme-women-a-useast-prod
Deployment and Change Management
Roll out changes per org; use versioned promotion and rollback where applicable.
Monitor reliability and performance by org and version; address regressions without impacting other orgs.
Checklist
Pick the target region; decide the
<region-tag>
.Define
<base>
and<project>
slugs; confirm total length ≤ 20.Create the org via the API with required headers and permissions.
Configure services and publish tools for that org.
Invite users and assign org‑local roles.
Validate end‑to‑end in the region; monitor and iterate.
Related
Getting Started → Regions & Endpoints
Core API → Tools
Best Practices → Version Sets & Promotion
Last updated
Was this helpful?