3
0
corteza/system/rest.yaml
2020-08-24 15:43:04 +02:00

1187 lines
26 KiB
YAML

---
# This is direct conversion from old api/*/spec.json files
# using https://www.json2yaml.com/
#
# Next step: swagger.
endpoints:
- title: Authentication
path: "/auth"
entrypoint: auth
authentication: []
apis:
- name: settings
method: GET
title: Returns auth settings
path: "/"
parameters: {}
- name: check
method: GET
title: Check JWT token
path: "/check"
parameters: {}
- name: impersonate
method: POST
title: Impersonate a user
path: "/impersonate"
parameters:
post:
- name: userID
type: uint64
required: true
title: ID of the impersonated user
- name: exchangeAuthToken
method: POST
title: Exchange auth token for JWT
path: "/exchange"
parameters:
post:
- name: token
type: string
required: true
title: Token to be exchanged for JWT
- name: logout
method: GET
title: Logout
path: "/logout"
parameters: {}
- title: Internal authentication
path: "/auth/internal"
entrypoint: authInternal
authentication: []
apis:
- name: login
method: POST
title: Login user
path: "/login"
parameters:
post:
- name: email
type: string
required: true
title: Email
- name: password
type: string
required: true
sensitive: true
title: Password
- name: signup
method: POST
title: User signup/registration
path: "/signup"
parameters:
post:
- name: email
type: string
required: true
title: Email
- name: username
type: string
required: false
title: Username
- name: password
type: string
required: true
sensitive: true
title: Password
- name: handle
type: string
required: false
title: User handle
- name: name
type: string
required: false
title: Display name
- name: requestPasswordReset
method: POST
title: Request password reset token (via email)
path: "/request-password-reset"
parameters:
post:
- name: email
type: string
required: true
title: Email
- name: exchangePasswordResetToken
method: POST
title: Exchange password reset token for new token and user info
path: "/exchange-password-reset-token"
parameters:
post:
- name: token
type: string
required: true
title: Token
- name: resetPassword
method: POST
title: Reset password with exchanged password reset token
path: "/reset-password"
parameters:
post:
- name: token
type: string
required: true
title: Token
- name: password
type: string
required: true
sensitive: true
title: Password
- name: confirmEmail
method: POST
title: Confirm email with token
path: "/confirm-email"
parameters:
post:
- name: token
type: string
required: true
title: Token
- name: changePassword
method: POST
title: Changes password for current user, requires current password
path: "/change-password"
parameters:
post:
- name: oldPassword
type: string
required: true
sensitive: true
title: Old password
- name: newPassword
type: string
required: true
sensitive: true
title: New password
- title: Settings
path: "/settings"
entrypoint: settings
authentication: []
imports:
- github.com/cortezaproject/corteza-server/system/types
apis:
- name: list
method: GET
title: List settings
path: "/"
parameters:
get:
- name: prefix
type: string
title: Key prefix
- name: update
method: PATCH
title: Update settings
path: "/"
parameters:
post:
- name: values
type: types.SettingValueSet
title: 'Array of new settings: `[{ name: ..., value: ... }]`. Omit value to
remove setting'
required: true
- name: get
method: GET
title: Get a value for a key
path: "/{key}"
parameters:
path:
- name: key
type: string
title: Setting key
required: true
get:
- name: ownerID
type: uint64
title: Owner ID
- name: set
path: "/{key}"
method: POST
title: Set value for specific setting
parameters:
path:
- name: key
type: string
title: Key
required: true
post:
- name: upload
type: "*multipart.FileHeader"
title: File to upload
- name: ownerID
type: uint64
title: Owner ID
- name: current
method: GET
title: Current compose settings
path: "/current"
- title: Subscription
path: "/subscription"
entrypoint: subscription
apis:
- name: current
method: GET
title: Returns current subscription status
path: "/"
parameters: {}
- title: Roles
description: An organisation may have many roles. Roles may have many channels available.
Access to channels may be shared between roles.
path: "/roles"
entrypoint: role
authentication:
- Client ID
- Session ID
apis:
- name: list
method: GET
title: List roles
path: "/"
parameters:
get:
- type: string
name: query
required: false
title: Search query
- name: deleted
required: false
title: Exclude (0, default), include (1) or return only (2) deleted roles
type: uint
- name: archived
required: false
title: Exclude (0, default), include (1) or return only (2) achived roles
type: uint
- type: uint
name: limit
title: Limit
- type: string
name: pageCursor
title: Page cursor
- type: string
name: sort
title: Sort items
- name: create
method: POST
title: Update role details
path: "/"
parameters:
post:
- type: string
name: name
required: true
title: Name of Role
- type: string
name: handle
required: true
title: Handle for Role
- type: "[]string"
name: members
required: false
title: Role member IDs
- name: update
method: PUT
title: Update role details
path: "/{roleID}"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
post:
- type: string
name: name
required: false
title: Name of Role
- type: string
name: handle
required: false
title: Handle for Role
- type: "[]string"
name: members
required: false
title: Role member IDs
- name: read
method: GET
title: Read role details and memberships
path: "/{roleID}"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
- name: delete
method: DELETE
title: Remove role
path: "/{roleID}"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
- name: archive
method: POST
title: Archive role
path: "/{roleID}/archive"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
- name: unarchive
method: POST
title: Unarchive role
path: "/{roleID}/unarchive"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
- name: undelete
method: POST
title: Undelete role
path: "/{roleID}/undelete"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
- name: move
method: POST
title: Move role to different organisation
path: "/{roleID}/move"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
post:
- type: uint64
name: organisationID
required: true
title: Role ID
- name: merge
method: POST
title: Merge one role into another
path: "/{roleID}/merge"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Source Role ID
post:
- type: uint64
name: destination
required: true
title: Destination Role ID
- name: memberList
method: GET
title: Returns all role members
path: "/{roleID}/members"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Source Role ID
- name: memberAdd
method: POST
title: Add member to a role
path: "/{roleID}/member/{userID}"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Source Role ID
- type: uint64
name: userID
required: true
title: User ID
- name: memberRemove
method: DELETE
title: Remove member from a role
path: "/{roleID}/member/{userID}"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Source Role ID
- type: uint64
name: userID
required: true
title: User ID
- name: triggerScript
method: POST
title: Fire system:role trigger
path: "/{roleID}/trigger"
parameters:
path:
- type: uint64
name: roleID
required: true
title: ID
post:
- name: script
type: string
title: Script to execute
required: true
- title: Users
path: "/users"
entrypoint: user
authentication:
- Client ID
- Session ID
imports:
- github.com/cortezaproject/corteza-server/system/types
apis:
- name: list
method: GET
title: Search users (Directory)
path: "/"
parameters:
get:
- name: userID
type: "[]string"
required: false
title: Filter by user ID
- name: roleID
type: "[]string"
required: false
title: Filter by role membership
- type: string
name: query
required: false
title: Search query to match against users
- type: string
name: username
required: false
title: Search username to match against users
- type: string
name: email
required: false
title: Search email to match against users
- type: string
name: handle
required: false
title: Search handle to match against users
- name: kind
type: types.UserKind
required: false
title: Kind (normal, bot)
- type: bool
name: incDeleted
required: false
title: "[Deprecated] Include deleted users (requires 'access' permission)"
- type: bool
name: incSuspended
required: false
title: "[Deprecated] Include suspended users"
- name: deleted
required: false
title: Exclude (0, default), include (1) or return only (2) deleted users
type: uint
- name: suspended
required: false
title: Exclude (0, default), include (1) or return only (2) suspended users
type: uint
- type: uint
name: limit
title: Limit
- type: string
name: pageCursor
title: Page cursor
- type: string
name: sort
title: Sort items
- name: create
method: POST
title: Create user
path: "/"
parameters:
post:
- name: email
type: string
required: true
title: Email
- name: name
type: string
required: false
title: Name
- name: handle
type: string
required: false
title: Handle
- name: kind
type: types.UserKind
required: false
title: Kind (normal, bot)
- name: update
method: PUT
title: Update user details
path: "/{userID}"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
post:
- name: email
type: string
required: true
title: Email
- name: name
type: string
required: true
title: Name
- name: handle
type: string
required: false
title: Handle
- name: kind
type: types.UserKind
required: false
title: Kind (normal, bot)
- name: read
method: GET
title: Read user details
path: "/{userID}"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
- name: delete
method: DELETE
title: Remove user
path: "/{userID}"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
- name: suspend
method: POST
title: Suspend user
path: "/{userID}/suspend"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
- name: unsuspend
method: POST
title: Unsuspend user
path: "/{userID}/unsuspend"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
- name: undelete
method: POST
title: Undelete user
path: "/{userID}/undelete"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
- name: setPassword
method: POST
title: Set's or changes user's password
path: "/{userID}/password"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
post:
- name: password
type: string
required: true
sensitive: true
title: New password
- name: membershipList
method: GET
title: Add member to a role
path: "/{userID}/membership"
parameters:
path:
- type: uint64
name: userID
required: true
title: User ID
- name: membershipAdd
method: POST
title: Add role to a user
path: "/{userID}/membership/{roleID}"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
- type: uint64
name: userID
required: true
title: User ID
- name: membershipRemove
method: DELETE
title: Remove role from a user
path: "/{userID}/membership/{roleID}"
parameters:
path:
- type: uint64
name: roleID
required: true
title: Role ID
- type: uint64
name: userID
required: true
title: User ID
- name: triggerScript
method: POST
title: Fire system:user trigger
path: "/{userID}/trigger"
parameters:
path:
- type: uint64
name: userID
required: true
title: ID
post:
- name: script
type: string
title: Script to execute
required: true
- title: Applications
path: "/application"
entrypoint: application
authentication: []
imports:
- sqlxTypes github.com/jmoiron/sqlx/types
apis:
- name: list
method: GET
title: List applications
path: "/"
parameters:
get:
- name: name
required: false
title: Application name
type: string
- name: query
required: false
title: Filter applications
type: string
- name: deleted
required: false
title: Exclude (0, default), include (1) or return only (2) deleted roles
type: uint
- type: uint
name: limit
title: Limit
- type: string
name: pageCursor
title: Page cursor
- type: string
name: sort
title: Sort items
- name: create
method: POST
title: Create application
path: "/"
parameters:
post:
- name: name
type: string
required: true
title: Application name
- name: enabled
type: bool
required: false
title: Enabled
- name: unify
type: sqlxTypes.JSONText
required: false
title: Unify properties
- name: config
type: sqlxTypes.JSONText
required: false
title: Arbitrary JSON holding application configuration
- name: update
method: PUT
title: Update user details
path: "/{applicationID}"
parameters:
path:
- type: uint64
name: applicationID
required: true
title: Application ID
post:
- name: name
type: string
required: true
title: Email
- name: enabled
type: bool
required: false
title: Enabled
- name: unify
type: sqlxTypes.JSONText
required: false
title: Unify properties
- name: config
type: sqlxTypes.JSONText
required: false
title: Arbitrary JSON holding application configuration
- name: read
method: GET
title: Read application details
path: "/{applicationID}"
parameters:
path:
- type: uint64
name: applicationID
required: true
title: Application ID
- name: delete
method: DELETE
title: Remove application
path: "/{applicationID}"
parameters:
path:
- type: uint64
name: applicationID
required: true
title: Application ID
- name: undelete
method: POST
title: Undelete application
path: "/{applicationID}/undelete"
parameters:
path:
- type: uint64
name: applicationID
required: true
title: Application ID
- name: triggerScript
method: POST
title: Fire system:application trigger
path: "/{applicationID}/trigger"
parameters:
path:
- type: uint64
name: applicationID
required: true
title: ID
post:
- name: script
type: string
title: Script to execute
required: true
- title: Permissions
parameters: {}
entrypoint: permissions
path: "/permissions"
authentication:
- Client ID
- Session ID
imports:
- github.com/cortezaproject/corteza-server/pkg/permissions
apis:
- name: list
path: "/"
method: GET
title: Retrieve defined permissions
parameters: {}
- name: effective
path: "/effective"
method: GET
title: Effective rules for current user
parameters:
get:
- name: resource
type: string
required: false
title: Show only rules for a specific resource
- name: read
path: "/{roleID}/rules"
method: GET
title: Retrieve role permissions
parameters:
path:
- name: roleID
type: uint64
required: true
title: Role ID
- name: delete
path: "/{roleID}/rules"
method: DELETE
title: Remove all defined role permissions
parameters:
path:
- name: roleID
type: uint64
required: true
title: Role ID
- name: update
path: "/{roleID}/rules"
method: PATCH
title: Update permission settings
parameters:
path:
- name: roleID
type: uint64
required: true
title: Role ID
post:
- name: rules
type: permissions.RuleSet
required: true
title: List of permission rules to set
- title: Reminders
entrypoint: reminder
path: "/reminder"
authentication:
- Client ID
- Session ID
imports:
- sqlxTypes github.com/jmoiron/sqlx/types
- time
apis:
- name: list
method: GET
title: List/read reminders
path: "/"
parameters:
get:
- name: reminderID
type: "[]string"
required: false
title: Filter by reminder ID
- name: resource
required: false
title: Only reminders of a specific resource
type: string
- name: assignedTo
required: false
title: Only reminders for a given user
type: uint64
- name: scheduledFrom
required: false
title: Only reminders from this time (included)
type: "*time.Time"
- name: scheduledUntil
required: false
title: Only reminders up to this time (included)
type: "*time.Time"
- name: scheduledOnly
required: false
title: Only scheduled reminders
type: bool
- name: excludeDismissed
required: false
title: Filter out dismissed reminders
type: bool
- type: uint
name: limit
title: Limit
- type: string
name: pageCursor
title: Page cursor
- type: string
name: sort
title: Sort items
- name: create
method: POST
title: Add new reminder
path: "/"
parameters:
post:
- name: resource
title: Resource
type: string
required: true
- name: assignedTo
title: Assigned To
type: uint64
required: true
- name: payload
title: Payload
type: sqlxTypes.JSONText
required: true
- name: remindAt
title: Remind At
type: "*time.Time"
required: false
- name: update
method: PUT
title: Update reminder
path: "/{reminderID}"
parameters:
path:
- type: uint64
name: reminderID
required: true
title: Reminder ID
post:
- name: resource
title: Resource
type: string
required: true
- name: assignedTo
title: Assigned To
type: uint64
required: true
- name: payload
title: Payload
type: sqlxTypes.JSONText
required: true
- name: remindAt
title: Remind At
type: "*time.Time"
required: false
- name: read
method: GET
title: Read reminder by ID
path: "/{reminderID}"
parameters:
path:
- type: uint64
name: reminderID
required: true
title: Reminder ID
- name: delete
method: DELETE
title: Delete reminder
path: "/{reminderID}"
parameters:
path:
- type: uint64
name: reminderID
required: true
title: Reminder ID
- name: dismiss
method: PATCH
title: Dismiss reminder
path: "/{reminderID}/dismiss"
parameters:
path:
- type: uint64
name: reminderID
required: true
title: reminder ID
- name: snooze
method: PATCH
title: Snooze reminder
path: "/{reminderID}/snooze"
parameters:
path:
- type: uint64
name: reminderID
required: true
title: reminder ID
post:
- type: "*time.Time"
name: remindAt
required: true
title: New Remind At Time
- title: Attachments
path: "/attachment/{kind}"
entrypoint: attachment
authentication:
- Client ID
- Session ID
parameters:
path:
- name: kind
type: string
required: true
title: Kind
get:
- type: string
name: sign
required: false
title: Signature
- type: uint64
name: userID
required: false
title: User ID
apis:
- name: read
path: "/{attachmentID}"
method: GET
title: Attachment details
parameters:
path:
- name: attachmentID
type: uint64
required: true
title: Attachment ID
- name: delete
path: "/{attachmentID}"
method: DELETE
title: Delete attachment
parameters:
path:
- name: attachmentID
type: uint64
required: true
title: Attachment ID
- name: original
path: "/{attachmentID}/original/{name}"
method: GET
title: Serves attached file
parameters:
path:
- name: attachmentID
type: uint64
required: true
title: Attachment ID
- name: name
type: string
required: true
title: File name
get:
- type: bool
name: download
required: false
title: Force file download
- name: preview
path: "/{attachmentID}/preview.{ext}"
method: GET
title: Serves preview of an attached file
parameters:
path:
- name: attachmentID
type: uint64
required: true
title: Attachment ID
- name: ext
type: string
required: true
title: Preview extension/format
- title: Statistics
entrypoint: stats
path: "/stats"
authentication:
- Client ID
- Session ID
apis:
- name: list
method: GET
title: List system statistics
path: "/"
parameters: {}
- title: System automation scripts
path: "/automation"
entrypoint: automation
apis:
- name: list
method: GET
title: List all available automation scripts for system resources
path: "/"
parameters:
get:
- name: resourceTypePrefixes
type: "[]string"
title: Filter by resource prefix
- name: resourceTypes
type: "[]string"
title: Filter by resource type
- name: eventTypes
type: "[]string"
title: Filter by event type
- name: excludeInvalid
type: bool
title: Exclude scripts that can not be used (errors)
- name: excludeClientScripts
type: bool
title: Do not include client scripts
- name: excludeServerScripts
type: bool
title: Do not include server scripts
- name: bundle
method: GET
title: Serves client scripts bundle
path: "/{bundle}-{type}.{ext}"
parameters:
path:
- name: bundle
type: string
title: Name of the bundle
- name: type
type: string
title: Bundle type
- name: ext
type: string
title: Bundle extension
- name: triggerScript
method: POST
title: Triggers execution of a specific script on a system service level
path: "/trigger"
parameters:
post:
- name: script
type: string
title: Script to execute
required: true
- title: Action log
entrypoint: actionlog
path: "/actionlog"
imports:
- time
apis:
- name: list
method: GET
title: Action log events
path: "/"
parameters:
get:
- name: from
type: "*time.Time"
required: false
title: From
- name: to
type: "*time.Time"
required: false
title: To
- name: resource
required: false
title: Resource
type: string
- name: action
required: false
title: Action
type: string
- name: actorID
required: false
title: Filter by one or more actors
type: "[]string"
- type: uint
name: limit
title: Limit
- type: string
name: pageCursor
title: Page cursor