clearml-server/server/schema/services/users.conf
2019-06-11 00:24:35 +03:00

367 lines
9.6 KiB
Plaintext

_description: """This service provides a management interface to users information
and new users login restrictions."""
_default {
internal: true
}
_definitions {
user {
type: object
properties {
id {
description: User ID
type: string
}
name {
description: Full name
type: string
}
given_name {
description: Given name
type: string
}
family_name {
description: Family name
type: string
}
avatar {
description: Avatar URL
type: string
}
company {
description: Company ID
type: string
}
# Admin only fields
role {
description: """User's role (admin only)"""
type: string
}
providers {
description: """Providers uses has logged-in with"""
type: object
additionalProperties: true
}
created {
description: User creation date
type: string
format: date-time
}
email {
description: User email
type: string
format: email
}
}
}
get_current_user_response_user_object {
type: object
description: "like user, but returns company object instead of ID"
properties {
id {
type: string
}
name {
type: string
}
given_name {
type: string
}
family_name {
type: string
}
role {
type: string
}
avatar {
type: string
}
company {
type: object
properties {
id {
type: string
}
name {
type: string
}
}
}
preferences {
description: User preferences
type: object
additionalProperties: true
}
}
}
}
get_by_id {
internal: false
"2.1" {
description: Gets user information
request {
type: object
required: [ user ]
properties {
user {
description: User ID
type: string
}
}
}
response {
type: object
properties {
user {
description: User info
"$ref": "#/definitions/user"
}
}
}
}
}
get_current_user {
internal: false
"2.1" {
description: """Gets current user information, based on the authenticated user making the call."""
request {
type: object
additionalProperties: false
}
response {
type: object
properties {
user {
description: "User info"
"$ref": "#/definitions/get_current_user_response_user_object"
}
}
}
}
}
get_all_ex {
internal: true
"2.1": ${get_all."2.1"} {
}
}
get_all {
"2.1" {
description: Get all user objects
request {
type: object
properties {
name {
description: "Get only users whose name matches this pattern (python regular expression syntax)"
type: string
}
id {
description: "List of user IDs used to filter results"
type: array
items { type: string }
}
only_fields {
description: "List of user field names (if applicable, nesting is supported using '.'). If provided, this list defines the query's projection (only these fields will be returned for each result entry)"
type: array
items { type: string }
}
page {
description: "Page number, returns a specific page out of the resulting list of users"
type: integer
minimum: 0
}
page_size {
description: "Page size, specifies the number of results returned in each page (last page may contain fewer results)"
type: integer
minimum: 1
}
order_by {
description: "List of field names to order by. Use '-' prefix to specify descending order. Optional, recommended when using page"
type: array
items { type: string }
}
}
}
response {
type: object
properties {
users {
description: User list
type: array
items { "$ref": "#/definitions/user" }
}
}
}
}
}
delete {
internal: true
allow_roles: [ "system", "root" ]
"2.1" {
description: Delete user
description: Delete a user
request {
type: object
required: [ user ]
properties {
user {
description: ID of user to delete
type: string
}
}
}
response {
type: object
additionalProperties: false
}
}
}
create {
allow_roles: [ "system", "root" ]
"2.1" {
description: Create a new user object. Reserved for internal use.
request {
type: object
required: [
company
id
name
]
properties {
id {
description: User ID
type: string
}
company {
description: Company ID
type: string
}
name {
description: Full name
type: string
}
given_name {
description: Given name
type: string
}
family_name {
description: Family name
type: string
}
avatar {
description: Avatar URL
type: string
}
}
}
response {
type: object
properties {}
additionalProperties: false
}
}
}
update {
internal: false
"2.1" {
description: Update a user object
request {
type: object
required: [ user ]
properties {
user {
description: User ID
type: string
}
name {
description: Full name
type: string
}
given_name {
description: Given name
type: string
}
family_name {
description: Family name
type: string
}
avatar {
description: Avatar URL
type: string
}
}
}
response {
type: object
properties {
updated {
description: Number of updated user objects (0 or 1)
type: integer
}
fields {
description: Updated fields names and values
type: object
additionalProperties: true
}
}
}
}
}
get_preferences {
internal: false
"2.1" {
description: Get user preferences
request {
type: object
properties {}
}
response {
type: object
properties {
preferences {
type: object
additionalProperties: true
}
}
}
}
}
set_preferences {
internal: false
"2.1" {
description: Set user preferences
request {
type: object
required: [ preferences ]
properties {
preferences {
description: """Updates to user preferences. A mapping from keys in dot notation to values.
For example, `{"a.b": 0}` will set the key "b" in object "a" to 0."""
type: object
additionalProperties: true
}
}
}
response {
type: object
properties {
updated {
description: Number of updated user objects (0 or 1)
type: integer
}
fields {
description: Updated fields names and values
type: object
additionalProperties: true
}
}
}
}
}