openapi: 3.0.0
info:
title: '@kumo/api Account Zone Templates API'
contact: {}
servers:
- url: /
tags:
- name: Zone Templates
paths:
/v1/zoneTemplates:
get:
operationId: GetZoneTemplates
responses:
'200':
description: A paginated list of zone templates.
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_ApiZoneTemplate_'
description: 'Get a paginated list of zone templates.
Subsequent pages can be requested with the "next" parameter, which is
returned in the response metadata object if another page exists.'
summary: Get zone templates.
tags:
- Zone Templates
security: []
parameters:
- description: 'Whether to include draft templates in the results.
Defaults to false.'
in: query
name: includeDraft
required: false
schema:
default: false
type: boolean
- description: 'An opaque cursor used to request the next page of results.
It is provided in the previous response from the api.'
in: query
name: next
required: false
schema:
type: string
- description: 'The maximum number of results to return. max: 30'
in: query
name: limit
required: false
schema:
default: 30
format: int32
type: integer
maximum: 30
minimum: 1
post:
operationId: CreateTemplateFromZone
responses:
'201':
description: Created
description: 'Creates a new zone template from existing zones along with the furniture inside.
Also generates a thumbnail for the zone'
summary: Create a new zone template
tags:
- Zone Templates
security:
- firebase: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateTemplateFromZoneRequest'
/v1/zoneTemplates/{id}:
put:
operationId: UpdateTemplateFromZone
responses:
'204':
description: No content
description: 'Updates an existing zone template using existing zones along with the furniture inside.
Can also update title, description, and draft status.'
summary: Updates an existing zone template
tags:
- Zone Templates
security:
- firebase: []
parameters:
- in: path
name: id
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateTemplateFromZoneRequest'
components:
schemas:
ApiZoneTemplateOrientationMap:
properties:
undefined:
$ref: '#/components/schemas/ApiZoneTemplateOrientation'
required:
- null
type: object
ApiZoneTemplate:
properties:
id:
type: string
title:
type: string
description:
type: string
isDraft:
type: boolean
tags:
items:
type: string
type: array
type:
$ref: '#/components/schemas/ZoneType'
orientations:
$ref: '#/components/schemas/ApiZoneTemplateOrientationMap'
required:
- id
- title
- description
- isDraft
- tags
- type
- orientations
type: object
additionalProperties: false
PaginatedResponse_ApiZoneTemplate_:
description: A page of items. Useful for breaking up a large dataset into smaller chunks.
properties:
items:
items:
$ref: '#/components/schemas/ApiZoneTemplate'
type: array
description: The page of items.
metadata:
properties:
count:
type: number
format: double
description: The number of items sent.
next:
type: string
description: 'A pagination cursor. If specified, there is another page of results that
can be requested by appending this value as a query parameter called
"next".'
required:
- count
type: object
description: 'Metadata about the page of items. Contains a pagination cursor called
"next" if there is another page of items.'
required:
- items
- metadata
type: object
additionalProperties: false
ZoneType:
enum:
- office
- conferenceRoom
type: string
ApiZoneTemplateOrientation:
properties:
imageUrl:
type: string
width:
type: number
format: double
height:
type: number
format: double
required:
- imageUrl
- width
- height
type: object
additionalProperties: false
ApiCreateTemplateFromZoneRequest:
properties:
spaceName:
type: string
roomId:
type: string
orientationsToZoneIdMap:
properties:
'0':
type: string
'90':
type: string
'180':
type: string
'270':
type: string
type: object
newTemplateTitle:
type: string
newTemplateDescription:
type: string
isDraft:
type: boolean
type:
$ref: '#/components/schemas/ZoneType'
required:
- spaceName
- roomId
- orientationsToZoneIdMap
- newTemplateTitle
- newTemplateDescription
- isDraft
type: object
additionalProperties: false
ApiUpdateTemplateFromZoneRequest:
properties:
spaceName:
type: string
roomId:
type: string
orientationsToZoneIdMap:
properties:
'0':
type: string
'90':
type: string
'180':
type: string
'270':
type: string
type: object
newTemplateTitle:
type: string
newTemplateDescription:
type: string
isDraft:
type: boolean
type:
$ref: '#/components/schemas/ZoneType'
type: object
additionalProperties: false
securitySchemes:
firebase:
type: http
scheme: bearer
bearerFormat: JWT