OpenAPI Specification
openapi: 3.1.0
info:
title: Soda Cloud REST Attributes Users API
description: The Soda Cloud REST API enables programmatic access to trigger data quality scans, retrieve check results, update incident status, manage datasets, datasources, contracts, runners, secrets, notification rules, and integrate data quality workflows into CI/CD pipelines. Supports EU and US cloud regions.
version: 1.0.0
contact:
name: Soda Support
url: https://soda.io
servers:
- url: https://cloud.soda.io
description: EU Cloud
- url: https://cloud.us.soda.io
description: US Cloud
security:
- basicAuth: []
tags:
- name: Users
description: User and user group management
paths:
/api/v1/userGroups:
get:
summary: List user groups
operationId: listUserGroups
tags:
- Users
parameters:
- name: size
in: query
schema:
type: integer
minimum: 10
maximum: 1000
default: 1000
- name: page
in: query
schema:
type: integer
default: 0
- name: search
in: query
schema:
type: string
responses:
'200':
description: Paginated list of user groups
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
post:
summary: Create user group
operationId: createUserGroup
tags:
- Users
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
userIds:
type: array
items:
type: string
responses:
'200':
description: User group created
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/v1/userGroups/{userGroupId}:
get:
summary: Get user group
operationId: getUserGroup
tags:
- Users
parameters:
- name: userGroupId
in: path
required: true
schema:
type: string
responses:
'200':
description: User group details
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
post:
summary: Update user group
operationId: updateUserGroup
tags:
- Users
parameters:
- name: userGroupId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
userIds:
type: array
items:
type: string
responses:
'200':
description: User group updated
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
delete:
summary: Delete user group
operationId: deleteUserGroup
tags:
- Users
parameters:
- name: userGroupId
in: path
required: true
schema:
type: string
responses:
'200':
description: User group deleted
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/v1/users:
get:
summary: List users
operationId: listUsers
tags:
- Users
parameters:
- name: size
in: query
schema:
type: integer
minimum: 1
maximum: 1000
default: 1000
- name: page
in: query
schema:
type: integer
default: 0
- name: search
in: query
schema:
type: string
responses:
'200':
description: Paginated list of users
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
post:
summary: Invite users
description: Send invitations to new users (up to 10 per request).
operationId: inviteUsers
tags:
- Users
requestBody:
content:
application/json:
schema:
type: object
properties:
emails:
type: array
items:
type: string
format: email
maxItems: 10
responses:
'200':
description: Invitations sent
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/v1/users/{userId}/disable:
post:
summary: Disable user
description: Deactivate a user account.
operationId: disableUser
tags:
- Users
parameters:
- name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: User disabled
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
schemas:
ErrorResponse:
type: object
properties:
code:
type: string
message:
type: string
responses:
Unauthorized:
description: Unauthorized - authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
TooManyRequests:
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Forbidden:
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
basicAuth:
type: http
scheme: basic
description: 'Base64-encoded API key ID and secret: base64(api_key_id:api_key_secret)'