mirror of
https://github.com/hanzo-fi/stack.git
synced 2026-10-30 20:34:43 +00:00
1515 lines
38 KiB
YAML
1515 lines
38 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Membership API
|
|
contact: {}
|
|
version: "0.1.0"
|
|
|
|
servers:
|
|
- url: http://localhost:8080
|
|
description: Local server
|
|
|
|
paths:
|
|
/_info:
|
|
get:
|
|
summary: Get server info
|
|
operationId: getServerInfo
|
|
responses:
|
|
200:
|
|
description: Server information
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ServerInfo'
|
|
/organizations:
|
|
get:
|
|
summary: List organizations of the connected user
|
|
operationId: listOrganizations
|
|
responses:
|
|
200:
|
|
description: List of organizations
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListOrganizationResponse'
|
|
post:
|
|
summary: Create organization
|
|
operationId: createOrganization
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateOrganizationRequest'
|
|
responses:
|
|
201:
|
|
description: Organization created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateOrganizationResponse'
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
|
|
/organizations/expanded:
|
|
get:
|
|
summary: List organizations of the connected user with expanded data
|
|
operationId: listOrganizationsExpanded
|
|
responses:
|
|
200:
|
|
description: List of organizations with expanded data
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListOrganizationExpandedResponse'
|
|
/organizations/{organizationId}:
|
|
get:
|
|
summary: Read organization
|
|
operationId: readOrganization
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
200:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReadOrganizationResponse'
|
|
put:
|
|
summary: Update organization
|
|
operationId: updateOrganization
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/OrganizationData'
|
|
responses:
|
|
200:
|
|
description: Organization updated
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReadOrganizationResponse'
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
delete:
|
|
summary: Delete organization
|
|
operationId: deleteOrganization
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
204:
|
|
description: Organization deleted
|
|
/organizations/{organizationId}/users:
|
|
get:
|
|
summary: List users of organization
|
|
operationId: listUsersOfOrganization
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
200:
|
|
description: List of users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListUsersResponse'
|
|
/organizations/{organizationId}/users/{userId}:
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: userId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
|
|
get:
|
|
summary: Read user of organization
|
|
operationId: readUserOfOrganization
|
|
responses:
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
200:
|
|
description: Read a user
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReadOrganizationUserResponse'
|
|
put:
|
|
summary: Update user role within an organization
|
|
operationId: upsertOrganizationUser
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Role'
|
|
responses:
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
204:
|
|
description: Updated user
|
|
delete:
|
|
summary: delete user from organization
|
|
operationId: deleteUserFromOrganization
|
|
description: |
|
|
The owner of the organization can remove anyone while each user can leave any organization where it is not owner.
|
|
responses:
|
|
204:
|
|
description: User deleted from organization
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks:
|
|
get:
|
|
summary: List stacks
|
|
operationId: listStacks
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: all
|
|
in: query
|
|
description: Include deleted and disabled stacks
|
|
schema:
|
|
type: boolean
|
|
required: false
|
|
- name: deleted
|
|
in: query
|
|
description: Include deleted stacks
|
|
deprecated: true
|
|
schema:
|
|
type: boolean
|
|
required: false
|
|
responses:
|
|
200:
|
|
description: List of stacks
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListStacksResponse'
|
|
post:
|
|
summary: Create stack
|
|
operationId: createStack
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateStackRequest'
|
|
responses:
|
|
200:
|
|
description: Created stack
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateStackResponse'
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks/{stackId}:
|
|
get:
|
|
summary: Find stack
|
|
operationId: getStack
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
200:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReadStackResponse'
|
|
404:
|
|
description: NotFound
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
delete:
|
|
summary: Delete stack
|
|
operationId: deleteStack
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: Stack deleted
|
|
400:
|
|
description: Bad request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks/{stackId}/users:
|
|
get:
|
|
summary: List stack users accesses within an organization
|
|
operationId: listStackUsersAccesses
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
200:
|
|
description: Stack users access role
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/StackUserAccessResponse'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks/{stackId}/users/{userId}:
|
|
delete:
|
|
summary: Delete stack user access role within an organization
|
|
operationId: deleteStackUserAccess
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: userId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
204:
|
|
description: Updated user
|
|
put:
|
|
summary: Update stack user access role within an organization
|
|
operationId: upsertStackUserAccess
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: userId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Role'
|
|
responses:
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
204:
|
|
description: Updated user
|
|
/organizations/{organizationId}/stacks/{stackId}/disable:
|
|
put:
|
|
summary: Disable stack
|
|
operationId: disableStack
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: Stack disabled
|
|
400:
|
|
description: Bad request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks/{stackId}/enable:
|
|
put:
|
|
summary: Enable stack
|
|
operationId: enableStack
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: Stack enabled
|
|
400:
|
|
description: Bad request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks/{stackId}/restore:
|
|
put:
|
|
summary: Restore stack
|
|
operationId: restoreStack
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
200:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReadStackResponse'
|
|
400:
|
|
description: Bad request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks/{stackId}/stargate/enable:
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
put:
|
|
summary: Enable stargate on a stack
|
|
operationId: enableStargate
|
|
responses:
|
|
204:
|
|
description: OK
|
|
400:
|
|
description: Bad request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/stacks/{stackId}/stargate/disable:
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: stackId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
put:
|
|
summary: Disable stargate on a stack
|
|
operationId: disableStargate
|
|
responses:
|
|
204:
|
|
description: OK
|
|
400:
|
|
description: Bad request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/me/invitations:
|
|
get:
|
|
summary: List invitations of the user
|
|
operationId: listInvitations
|
|
parameters:
|
|
- in: query
|
|
name: status
|
|
required: false
|
|
description: Status of organizations
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: organization
|
|
required: false
|
|
description: Status of organizations
|
|
schema:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: List of the invitations for the connected user
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListInvitationsResponse'
|
|
/me/invitations/{invitationId}/accept:
|
|
post:
|
|
summary: Accept invitation
|
|
operationId: acceptInvitation
|
|
parameters:
|
|
- name: invitationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: Invitation accepted
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/me/invitations/{invitationId}/reject:
|
|
post:
|
|
summary: Decline invitation
|
|
operationId: declineInvitation
|
|
parameters:
|
|
- name: invitationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: Invitation declined
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/invitations:
|
|
get:
|
|
summary: List invitations of the organization
|
|
operationId: listOrganizationInvitations
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- in: query
|
|
name: status
|
|
required: false
|
|
description: Status of organizations
|
|
schema:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: List of the invitations for the organization
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListInvitationsResponse'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
post:
|
|
summary: Create invitation
|
|
operationId: createInvitation
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: email
|
|
in: query
|
|
schema:
|
|
type: string
|
|
required: true
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/InvitationClaim'
|
|
responses:
|
|
201:
|
|
description: Invitation created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateInvitationResponse'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/invitations/{invitationId}:
|
|
delete:
|
|
summary: Delete invitation
|
|
operationId: deleteInvitation
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: invitationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: Invitation deleted
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not Authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/organizations/{organizationId}/regions:
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
|
|
get:
|
|
summary: List regions
|
|
operationId: listRegions
|
|
responses:
|
|
200:
|
|
description: List of the regions
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListRegionsResponse'
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
post:
|
|
summary: Create a private region
|
|
operationId: createPrivateRegion
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreatePrivateRegionRequest'
|
|
responses:
|
|
400:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
200:
|
|
description: Created region
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreatedPrivateRegionResponse'
|
|
/organizations/{organizationId}/regions/{regionId}:
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: regionId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
get:
|
|
summary: Get region
|
|
operationId: getRegion
|
|
responses:
|
|
404:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
200:
|
|
description: Get a specific region
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetRegionResponse'
|
|
delete:
|
|
summary: Delete region
|
|
operationId: deleteRegion
|
|
responses:
|
|
204:
|
|
description: Delete a specific region
|
|
404:
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
400:
|
|
description: Bad request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
|
|
/organizations/{organizationId}/regions/{regionId}/versions:
|
|
parameters:
|
|
- name: organizationId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- name: regionId
|
|
in: path
|
|
schema:
|
|
type: string
|
|
required: true
|
|
get:
|
|
summary: Get region versions
|
|
operationId: getRegionVersions
|
|
responses:
|
|
404:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
403:
|
|
description: Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
200:
|
|
description: Get a specific region
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetRegionVersionsResponse'
|
|
|
|
/me:
|
|
get:
|
|
summary: Read user
|
|
operationId: readConnectedUser
|
|
responses:
|
|
200:
|
|
description: Read a user
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReadUserResponse'
|
|
security:
|
|
- oauth2: []
|
|
|
|
components:
|
|
securitySchemes:
|
|
oauth2:
|
|
type: oauth2
|
|
flows:
|
|
authorizationCode:
|
|
authorizationUrl: /authorize
|
|
tokenUrl: /oauth/token
|
|
scopes:
|
|
openid: Enable OIDC
|
|
email: Ask email access
|
|
schemas:
|
|
CreatePrivateRegionRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
required:
|
|
- name
|
|
CreatedPrivateRegionResponse:
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/PrivateRegion'
|
|
required:
|
|
- data
|
|
PrivateRegion:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Region'
|
|
- type: object
|
|
properties:
|
|
organizationID:
|
|
type: string
|
|
creatorID:
|
|
type: string
|
|
secret:
|
|
type: object
|
|
properties:
|
|
lastDigits:
|
|
type: string
|
|
clear:
|
|
type: string
|
|
required:
|
|
- lastDigits
|
|
required:
|
|
- organizationID
|
|
- creatorID
|
|
PublicRegion:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Region'
|
|
- type: object
|
|
properties:
|
|
production:
|
|
type: boolean
|
|
required:
|
|
- production
|
|
AnyRegion:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Region'
|
|
- type: object
|
|
properties:
|
|
clientID:
|
|
type: string
|
|
organizationID:
|
|
type: string
|
|
creator:
|
|
$ref: '#/components/schemas/User'
|
|
production:
|
|
type: boolean
|
|
public:
|
|
type: boolean
|
|
version:
|
|
type: string
|
|
required:
|
|
- public
|
|
OrganizationData:
|
|
type: object
|
|
required:
|
|
- name
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Organization name
|
|
defaultOrganizationAccess:
|
|
$ref: '#/components/schemas/Role'
|
|
defaultStackAccess:
|
|
$ref: '#/components/schemas/Role'
|
|
domain:
|
|
type: string
|
|
description: Organization domain
|
|
Organization:
|
|
allOf:
|
|
- $ref: '#/components/schemas/OrganizationData'
|
|
- type: object
|
|
required:
|
|
- id
|
|
- ownerId
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Organization ID
|
|
ownerId:
|
|
type: string
|
|
description: Owner ID
|
|
availableStacks:
|
|
type: integer
|
|
description: Number of available stacks
|
|
availableSandboxes:
|
|
type: integer
|
|
description: Number of available sandboxes
|
|
StackData:
|
|
type: object
|
|
required:
|
|
- name
|
|
- metadata
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Stack name
|
|
metadata:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
version:
|
|
type: string
|
|
description: Supported only with agent version >= v0.7.0
|
|
StackLifeCycle:
|
|
type: object
|
|
required:
|
|
- status
|
|
- state
|
|
- expectedStatus
|
|
- lastStateUpdate
|
|
- lastExpectedStatusUpdate
|
|
- lastStatusUpdate
|
|
properties:
|
|
status:
|
|
type: string
|
|
enum:
|
|
- UNKNOWN
|
|
- PROGRESSING
|
|
- READY
|
|
- DISABLED
|
|
- DELETED
|
|
state:
|
|
type: string
|
|
enum:
|
|
- ACTIVE
|
|
- DISABLED
|
|
- DELETED
|
|
expectedStatus:
|
|
type: string
|
|
enum:
|
|
- UNKNOWN
|
|
- PROGRESSING
|
|
- READY
|
|
- DISABLED
|
|
- DELETED
|
|
lastStateUpdate:
|
|
type: string
|
|
format: date-time
|
|
lastExpectedStatusUpdate:
|
|
type: string
|
|
format: date-time
|
|
lastStatusUpdate:
|
|
type: string
|
|
format: date-time
|
|
Stack:
|
|
allOf:
|
|
- $ref: '#/components/schemas/StackData'
|
|
- $ref: '#/components/schemas/StackLifeCycle'
|
|
- type: object
|
|
required:
|
|
- id
|
|
- organizationId
|
|
- uri
|
|
- regionID
|
|
- stargateEnabled
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Stack ID
|
|
organizationId:
|
|
type: string
|
|
description: Organization ID
|
|
uri:
|
|
type: string
|
|
description: Base stack uri
|
|
regionID:
|
|
type: string
|
|
description: The region where the stack is installed
|
|
stargateEnabled:
|
|
type: boolean
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
deletedAt:
|
|
type: string
|
|
format: date-time
|
|
disabledAt:
|
|
type: string
|
|
format: date-time
|
|
UserData:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
required:
|
|
- email
|
|
Role:
|
|
type: string
|
|
default: ""
|
|
enum:
|
|
- ""
|
|
- NONE
|
|
- ADMIN
|
|
- GUEST
|
|
User:
|
|
allOf:
|
|
- $ref: '#/components/schemas/UserData'
|
|
- type: object
|
|
required:
|
|
- id
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: User ID
|
|
OrganizationUserArray:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/OrganizationUser'
|
|
ReadOrganizationUserResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/OrganizationUser'
|
|
OrganizationUser:
|
|
allOf:
|
|
- type: object
|
|
required:
|
|
- role
|
|
properties:
|
|
role:
|
|
$ref: '#/components/schemas/Role'
|
|
- $ref: '#/components/schemas/User'
|
|
OrganizationArray:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Organization'
|
|
StackArray:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Stack'
|
|
UserArray:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
StackUserAccess:
|
|
allOf:
|
|
- type: object
|
|
required:
|
|
- stackId
|
|
- userId
|
|
- role
|
|
properties:
|
|
stackId:
|
|
type: string
|
|
description: Stack ID
|
|
userId:
|
|
type: string
|
|
description: User ID
|
|
role:
|
|
$ref: '#/components/schemas/Role'
|
|
StackUserAccessResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/StackUserAccessArray'
|
|
StackUserAccessArray:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/StackUserAccess'
|
|
ListOrganizationResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/OrganizationArray'
|
|
CreateOrganizationRequest:
|
|
$ref: '#/components/schemas/OrganizationData'
|
|
CreateOrganizationResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/Organization'
|
|
ReadOrganizationResponse:
|
|
$ref: '#/components/schemas/CreateOrganizationResponse'
|
|
ListStacksResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/StackArray'
|
|
ListUsersResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/OrganizationUserArray'
|
|
CreateStackRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/StackData'
|
|
- type: object
|
|
properties:
|
|
regionID:
|
|
type: string
|
|
required:
|
|
- regionID
|
|
CreateStackResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/Stack'
|
|
ReadStackResponse:
|
|
$ref: '#/components/schemas/CreateStackResponse'
|
|
ReadUserResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/User'
|
|
ListInvitationsResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Invitation'
|
|
CreateInvitationResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/Invitation'
|
|
Error:
|
|
type: object
|
|
properties:
|
|
errorCode:
|
|
type: string
|
|
errorMessage:
|
|
type: string
|
|
required:
|
|
- errorCode
|
|
Invitation:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
organizationId:
|
|
type: string
|
|
userEmail:
|
|
type: string
|
|
status:
|
|
type: string
|
|
enum:
|
|
- pending
|
|
- accepted
|
|
- rejected
|
|
creationDate:
|
|
type: string
|
|
format: date-time
|
|
updatedAt:
|
|
type: string
|
|
format: date-tim
|
|
role:
|
|
$ref: '#/components/schemas/Role'
|
|
stackClaims:
|
|
$ref: '#/components/schemas/StackClaims'
|
|
userId:
|
|
type: string
|
|
organizationAccess:
|
|
$ref: '#/components/schemas/OrganizationUser'
|
|
required:
|
|
- creationDate
|
|
- status
|
|
- role
|
|
- userEmail
|
|
- organizationId
|
|
- id
|
|
InvitationClaim:
|
|
type: object
|
|
properties:
|
|
role:
|
|
$ref: '#/components/schemas/Role'
|
|
stackClaims:
|
|
$ref: '#/components/schemas/StackClaims'
|
|
required:
|
|
- orgClaim
|
|
- stackClaims
|
|
StackClaims:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/StackClaim'
|
|
StackClaim:
|
|
type: object
|
|
required:
|
|
- id
|
|
- role
|
|
properties:
|
|
id:
|
|
type: string
|
|
role:
|
|
$ref: '#/components/schemas/Role'
|
|
Region:
|
|
type: object
|
|
required:
|
|
- id
|
|
- baseUrl
|
|
- active
|
|
- createdAt
|
|
- name
|
|
properties:
|
|
id:
|
|
type: string
|
|
baseUrl:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
format: datetime
|
|
active:
|
|
type: boolean
|
|
lastPing:
|
|
type: string
|
|
format: date-time
|
|
name:
|
|
type: string
|
|
ListOrganizationExpandedResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Organization'
|
|
- type: object
|
|
properties:
|
|
totalStacks:
|
|
type: integer
|
|
totalUsers:
|
|
type: integer
|
|
owner:
|
|
$ref: '#/components/schemas/User'
|
|
ListRegionsResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AnyRegion'
|
|
required:
|
|
- data
|
|
GetRegionResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
$ref: '#/components/schemas/AnyRegion'
|
|
required:
|
|
- data
|
|
|
|
ServerInfo:
|
|
type: object
|
|
required:
|
|
- version
|
|
properties:
|
|
version:
|
|
type: string
|
|
|
|
Version:
|
|
type: object
|
|
required:
|
|
- name
|
|
- versions
|
|
properties:
|
|
name:
|
|
type: string
|
|
versions:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
|
|
GetRegionVersionsResponse:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Version'
|
|
required:
|
|
- data
|