Ownership and access
Understand organizations, users, teams, resources, connectors, and connections.
Deeplinq is B2B2C: an organization represents a consuming application or customer account, while the organization's own identity system remains authoritative for end users.
Identity hierarchy
Deeplinq stores opaque user subjects, not user profiles. A JWT sub, a
user-bound API key, or trusted X-End-User-Id establishes the user axis.
Resource ownership
| Resource | Owner model | Share model |
|---|---|---|
| Organization | Platform-created tenant | Not shareable |
| Project | Private or organization | User, role, or team grant |
| Dataset | Private or organization-shared | User, role, or team grant |
| Conversation | User | Never shared |
| Memory fact | User or project | Follows user or project authority |
| Connection | User | Metadata visible to org admins; invocation remains owner-only |
| Agent | User, team, or organization | Visibility and management follow owner |
| Run | Invoking user | Owner-only transcript and approval |
| Schedule | User | Owner or org-admin lifecycle |
| Webhook endpoint | Organization | Org-admin managed |
Permissions
Projects and datasets use the ordered permission ladder:
read < write < adminTeams are engine-owned rosters. Membership is checked live against the database; a JWT cannot self-assert a team membership. Removing a user takes effect on the next authorization check.
Connectors versus connections
| Term | Owned by | Contains | Used for |
|---|---|---|---|
| Connector | Platform or organization | Sealed provider credential and model routing config | LLMs, embeddings, guardrails, router, reranker |
| Integration | Organization | Sealed OAuth application credential | Gmail or Outlook authorization |
| Connection | User | Sealed provider tokens or attached MCP authority | Personal tools |
An agent references tool names, never credentials. At invocation Deeplinq resolves the run owner's currently active connections and filters unavailable tools.
Isolation boundaries
Organization isolation is enforced in several layers:
- every tenant-owned PostgreSQL table carries
org_id; - composite foreign keys reject cross-tenant relationships;
- forced row-level security binds app transactions to one organization;
- object keys carry validated organization prefixes;
- Weaviate uses an organization tenant;
- workers reload tenant authority from trusted persistent records;
- external tool and provider resolution is organization-scoped.
Not-found responses are sometimes used to conceal a resource outside the caller's authority. Do not use error differences as an existence oracle.
Role boundaries
platform-admin owns platform provisioning. org-admin owns the
organization's teams, integrations, limits, policies, and webhooks.
org-member uses entitled product surfaces.
Resource ownership still applies to administrators. For example, an org admin may revoke another user's mailbox connection but cannot invoke its email tools or approve that user's agent run.