Omni User model roles API
Manage model and connection role assignments for users
Manage model and connection role assignments for users
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/omni-user-model-roles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Omni AI User model roles API
description: "The Omni REST API provides programmatic access to your Omni instance for managing users, documents, queries, schedules, and more. \n"
version: 1.0.0
contact:
name: Omni Support
url: https://docs.omni.co
servers:
- url: https://{instance}.omniapp.co/api
description: Production
variables:
instance:
default: blobsrus
description: Your production Omni instance subdomain
- url: https://{instance}.playground.exploreomni.dev/api
description: Playground
variables:
instance:
default: blobsrus
description: Your playground Omni instance subdomain
security:
- bearerAuth: []
- orgApiKey: []
tags:
- name: User model roles
description: Manage model and connection role assignments for users
paths:
/v1/users/{userId}/model-roles:
post:
tags:
- User model roles
summary: Assign or update user model role
description: 'Assigns or updates a model role for a user. If the user already has a role for the specified model, this endpoint will update it to the new role.
Model roles control what actions a user can perform on models and connections. To manage users, see the [User APIs](/api/users).
'
security:
- bearerAuth: []
operationId: assignUserModelRole
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
description: The ID of the user to assign or update a model role for.
example: 9e8719d9-276a-4964-9395-a493189a247c
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- roleName
properties:
connectionId:
type: string
format: uuid
description: 'The ID of the connection that the model belongs to:
- **Required** if `modelId` is not provided
- **Optional** if `modelId` is provided, in which case it will be inferred from the model
'
modelId:
type: string
format: uuid
description: 'The ID of the model to assign the role for:
- **Optional** when assigning `CONNECTION_ADMIN` or [custom roles](/administration/users/custom-roles) with `CONNECTION_ADMIN` as the base role
- **Required** for other role types
'
roleName:
type: string
description: 'The role to assign. Available roles include:
- `VIEWER` - Can view the model
- `QUERIER` - Can view and query the model
- `QUERY_TOPICS` - Can query specific topics. Equivalent to **Restricted Querier**.
- `MODELER` - Can edit and model the data
- `CONNECTION_ADMIN` - Full administrative access to the connection
- `NO_ACCESS` - No access to the model
- [Custom roles](/administration/users/custom-roles) defined for your organization
'
example:
connectionId: bc1f9c9f-208d-48a2-9ae3-ff80f2c79fed
modelId: 7d3e4f5a-6b7c-8d9e-0f1a-2b3c4d5e6f7a
roleName: QUERIER
responses:
'200':
description: Model role assigned or updated successfully.
content:
application/json:
schema:
type: object
properties:
userId:
type: string
format: uuid
description: The ID of the user.
connectionId:
type: string
format: uuid
description: The ID of the connection.
modelId:
type: string
format: uuid
description: The ID of the model.
roleName:
type: string
description: The assigned role name.
example:
userId: 9e8719d9-276a-4964-9395-a493189a247c
connectionId: bc1f9c9f-208d-48a2-9ae3-ff80f2c79fed
modelId: 7d3e4f5a-6b7c-8d9e-0f1a-2b3c4d5e6f7a
roleName: QUERIER
'400':
description: 'Bad Request. Possible error messages include:
- `Invalid JSON`
- `Invalid model ID`
- `Invalid connection ID`
- `Method not allowed`
'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: 'Not Found. Possible error messages include:
- `User not found in organization`
- `Model does not exist`
- `Connection does not exist`
'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: 'Unprocessable Entity. Possible error messages include:
- `Invalid role`
- `Model does not belong to connection`
- `Only shared and shared_extension models can be assigned model roles`
'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
$ref: '#/components/responses/TooManyRequests'
get:
tags:
- User model roles
summary: Retrieve user model roles
description: 'Retrieves the model role assignments for a user. This includes both direct role assignments and roles inherited from user group memberships.
'
security:
- bearerAuth: []
operationId: getUserModelRoles
parameters:
- name: userId
in: path
required: true
schema:
type: string
format: uuid
description: The ID of the user to retrieve model roles for.
example: 9e8719d9-276a-4964-9395-a493189a247c
- name: modelId
in: query
schema:
type: string
format: uuid
description: Filter results to a specific model ID. If not provided, returns roles for all models the user has access to.
example: 7d3e4f5a-6b7c-8d9e-0f1a-2b3c4d5e6f7a
- name: connectionId
in: query
schema:
type: string
format: uuid
description: Filter results to models from a specific connection. If not provided, returns roles for all connections.
example: bc1f9c9f-208d-48a2-9ae3-ff80f2c79fed
responses:
'200':
description: User model roles retrieved successfully.
content:
application/json:
schema:
type: object
properties:
membershipId:
type: string
format: uuid
description: The ID of the user's membership in the organization.
results:
type: array
description: Array of all role assignments for the user, including direct assignments, roles inherited from user groups, and connection base roles.
items:
type: object
properties:
modelId:
type: string
format: uuid
description: The ID of the model.
connectionId:
type: string
format: uuid
description: The ID of the connection.
roleName:
type: string
description: The role name for this assignment.
baseRole:
type: string
description: The base role for this assignment.
priority:
type: integer
description: The priority of this role assignment. Higher values take precedence.
resolved:
type: boolean
description: If `true`, this is the highest priority role for the model. This is the role that will be used when determining the user's effective permissions.
from:
type: object
description: Information about where this role assignment comes from.
properties:
type:
type: string
description: 'The type of role assignment:
- `User Role` - Direct role assignment to the user
- `Group Role` - Role inherited from a user group
- `Connection Base Role` - Default role from the connection
'
miniUuid:
type: string
description: The short ID of the user group. Only present for `Group Role` type.
name:
type: string
description: The name of the user group. Only present for `Group Role` type.
depth:
type: integer
description: The depth of group nesting. Only present for `Group Role` type.
example:
membershipId: 9633bd79-7bdf-4773-8952-8fdd4098e51c
results:
- baseRole: MODELER
from:
type: User Role
priority: 350
resolved: true
roleName: MODELER
connectionId: 8a464dc9-1f0e-4a9e-86fa-e1e6d970157c
modelId: 5fb90312-67b1-4cca-823a-9a341d549320
- baseRole: QUERIER
from:
depth: 0
miniUuid: PgjffoEu
name: Super Group
type: Group Role
priority: 250
resolved: false
roleName: QUERIER
connectionId: 8a464dc9-1f0e-4a9e-86fa-e1e6d970157c
modelId: 5fb90312-67b1-4cca-823a-9a341d549320
- baseRole: VIEWER
from:
type: Connection Base Role
priority: 50
resolved: false
roleName: VIEWER
connectionId: 8a464dc9-1f0e-4a9e-86fa-e1e6d970157c
modelId: 5fb90312-67b1-4cca-823a-9a341d549320
'404':
description: User not found in organization.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
detail: User not found in organization
status: 404
'429':
$ref: '#/components/responses/TooManyRequests'
components:
responses:
TooManyRequests:
description: Too Many Requests - Rate limit exceeded (60 requests/minute)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
error:
type: string
description: HTTP response code for the error
example: <response_code>
message:
type: string
description: Detailed error description
example: <error_reason>
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Can be either an [Organization API Key](/api/authentication#organization-api-keys) or [Personal Access Token (PAT)](/api/authentication#token-types).
Include in the `Authorization` header as: `Bearer YOUR_TOKEN`
'
orgApiKey:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Requires an [Organization API Key](/api/authentication#organization-api-keys). Personal Access Tokens (PATs) are not supported for this endpoint.
Include in the `Authorization` header as: `Bearer ORGANIZATION_API_KEY`
'