Organizations
Every resource in the Huli Public API — Patient, Appointment, Encounter, Observation, Practitioner, Organization — belongs to exactly one organization. The organization is the security boundary.
How it works
When you authenticate (via any of the three modes — admin bearer, SMART backend services, or interactive OAuth), the resulting access token carries an organization_id claim. All resource access is automatically scoped to that organization. There is no way to read or write across organizations with a single token.
An API key created in Practice Settings is bound to the organization that admin belongs to. A SMART backend services client assertion is verified against an api_key row that also carries an organization_id. An interactive OAuth token carries the organization the authenticated user belongs to.
Cross-organization access
Attempting to read a resource that belongs to a different organization returns:
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "forbidden",
"diagnostics": "HPB-00104: Insufficient scope"
}
]
}
HPB-00104 covers both missing-scope and cross-organization violations. If you receive this on a resource you believe your token should reach, verify:
- The resource ID belongs to your organization.
- The token was issued for the same organization as the resource.
- The token includes the scope required for the operation (e.g.,
system/Patient.rsfor reads — see Scopes).
Organization identity
Your organization's FHIR Organization resource is readable at:
/fhir/R4/Organization/:idThe id is the UUID visible in Practice Settings and returned as managingOrganization.reference on Patient resources. It is stable and does not change.
Implications for integrations
- Single-organization integrations (one API key, one organization): the organization model imposes no additional complexity. Every call works within your org.
- Multi-organization integrations (a partner serving multiple Huli organizations): you need one API key per organization. There is no cross-organization token or admin-level key that spans organizations. This is by design — it constrains PHI access to explicitly authorized integrations per org.
- Audit: every authenticated request writes an audit record (see Rate Limiting for details). The audit record includes the
organization_id, which is the basis for per-org compliance reporting.