Newer
Older
#
# API for the Augmented Reality Framework (ARF)
# Working group: ETSI ISG ARF
# STF group: STF620 (validation)
# (C) ETSI - 2022
#
# References:
# - Explaination UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier / https://fr.wikipedia.org/wiki/Universally_unique_identifier
# - UUID formats: 8-4-4-4-12 format string, lower case (but case insensitive on input)
# - UUID RFC4122: https://datatracker.ietf.org/doc/html/rfc4122#section-3
# - online UUID generator: https://www.uuidgenerator.net/
# - Rules for RESTful error code RFC2616: https://datatracker.ietf.org/doc/html/rfc2616#section-10
# - Guide: https://restfulapi.net/http-status-codes/
#
title: World Storage API
description: API ensuring interoperability between an authoring tool and a World Storage service
license:
name: BSD-3-clause
url: https://opensource.org/licenses/BSD-3-Clause
servers:
- url: http://localhost:8080
paths:
/ping:
get:
summary: Test the server availability
Sylvain Renault
committed
summary: Get the state of the server.
operationId: getAdmin
responses:
'200':
description: OK, world storage server ready.
content:
text/plain:
schema:
type: string
/version:
get:
summary: Get the version of the ARF API.
Sylvain Renault
committed
description: Current version.
type: string
##############
# TRACKABLES #
##############
operationId: addTrackable
tags:
- trackables
requestBody:
description: The trackable to be added to the world storage.
required: true
content:
application/json:
schema:
#application/xml:
# schema:
# $ref: '#/components/schemas/Trackable'
description: OK, returns the UUID of the Trackable defined by the world storage.
content:
text/plain:
schema:
type: string
'201':
description: Null response.
'400':
$ref: '#/components/responses/400_BadRequest'
'409':
$ref: '#/components/responses/409_NotEmptyUUID'
'default':
$ref: '#/components/responses/4xx_UnexpectedError'
summary: Returns the list of all trackables defined by the world storage.
operationId: getTrackables
tags:
- trackables
responses:
description: OK, returns all the Trackables defined by the world storage.
content:
application/json:
schema:
type : array
items :
$ref: '#/components/responses/4xx_UnexpectedError'
/trackables/{trackableUUID}:
operationId: getTrackableById
tags:
- trackables
parameters:
description: UUID of the trackable to retrieve.
$ref: '#/components/responses/400_InvalidUUID'
$ref: '#/components/responses/404_NotFoundUUID'
operationId: deleteTrackable
tags:
- trackables
parameters:
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/400_InvalidUUID'
$ref: '#/components/responses/404_NotFoundUUID'
#################
# WORLD ANCHORS #
#################
operationId: addWorldAnchor
tags:
- world anchors
requestBody:
description: The world anchor to be added to the world storage.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorldAnchor'
#application/xml:
# schema:
# $ref: '#/components/schemas/WorldAnchor'
description: OK, returns the UUID of the World Anchor defined by the world storage.
content:
text/plain:
schema:
type: string
'201':
description: Null response.
'400':
$ref: '#/components/responses/400_BadRequest'
'409':
$ref: '#/components/responses/409_NotEmptyUUID'
'default':
$ref: '#/components/responses/4xx_UnexpectedError'
summary: Returns the list of all world anchors defined by the world storage.
operationId: getWorldAnchors
tags:
- world anchors
responses:
'200':
description: OK, returns all the world anchors defined by the world storage.
content:
application/json:
schema:
type : array
items :
$ref: "#/components/schemas/WorldAnchor"
$ref: '#/components/responses/4xx_UnexpectedError'
/worldAnchors/{worldAnchorUUID}:
operationId: getWorldAnchorById
tags:
- world anchors
parameters:
description: UUID of the world anchor to retrieve.
content:
application/json:
schema:
$ref: '#/components/schemas/WorldAnchor'
'400':
$ref: '#/components/responses/400_InvalidUUID'
$ref: '#/components/responses/404_NotFoundUUID'
operationId: deleteWorldAnchor
tags:
- world anchors
parameters:
$ref: '#/components/responses/400_InvalidUUID'
$ref: '#/components/responses/404_NotFoundUUID'
###############
# WORLD LINKS #
###############
summary: Create a link between world anchors and trackables.
operationId: addWorldLink
tags:
- world links
requestBody:
description: The link to be added to the world storage.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorldLink'
#application/xml:
# schema:
# $ref: '#/components/schemas/WorldLink'
description: OK, returns the UUID of the link defined by the world storage.
content:
text/plain:
schema:
type: string
'201':
description: Null response
'400':
$ref: '#/components/responses/400_BadRequest'
'409':
$ref: '#/components/responses/409_NotEmptyUUID'
'default':
$ref: '#/components/responses/4xx_UnexpectedError'
summary: Returns the list of all links defined by the world storage.
operationId: getWorldLinks
tags:
- world links
responses:
description: OK returns all the worldLinks defined by the world storage.
content:
application/json:
schema:
type : array
items :
$ref: "#/components/schemas/WorldLink"
$ref: '#/components/responses/4xx_UnexpectedError'
/worldLinks/{worldLinkUUID}:
operationId: getWorldLinkById
tags:
- world links
parameters:
content:
application/json:
schema:
$ref: '#/components/schemas/WorldLink'
'400':
$ref: '#/components/responses/400_InvalidUUID'
$ref: '#/components/responses/404_NotFoundUUID'
operationId: deleteWorldLink
tags:
- world links
parameters:
in: path
description: link id to delete
required: true
schema:
type: string
$ref: '#/components/responses/400_InvalidUUID'
'404':
$ref: '#/components/responses/404_NotFoundUUID'
# COMPONENTS ###############################################
#-------------------------------
# Reusable operation parameters
#-------------------------------
parameters:
UUIDParams:
name: UUID
in: path
required: true
description: An Universally Unique IDentifier identifying the object (RFC 4122).
schema:
type: string
format: uuid
default: "00000000-0000-0000-0000-000000000000"
#-------------------------------
# Reusable schemas (data models)
#-------------------------------
description: An element representing a trackable object in the real world.
Sylvain Renault
committed
- name
- trackableType
- trackableEncodingInformation
- trackablePayload
- keyvalueTags
description: An Universally Unique IDentifier identifying the trackable (RFC 4122).
type: string
format: uuid
example: fa8bbe40-8052-11ec-a8a3-0242ac120002
Sylvain Renault
committed
name:
description: A human readable name for the trackable.
type: string
description: An Universally Unique IDentifier identifying the creator of the trackable (a person, a team or a company).
description: Extensible list of trackable types possibly handled by complient World Storage implementation.
enum: [FIDUCIAL_MARKER, IMAGE_MARKER, MAP, GEOPOSE, OTHER]
example: FIDUCIAL_MARKER
trackableEncodingInformation:
$ref: '#/components/schemas/EncodingInformationStructure'
trackablePayload:
description: The data provided to create the trackable in a specific format handled by the World Storage service.
type: string
format: byte
example: "10110101"
localCRS:
$ref: '#/components/schemas/Transform3D'
$ref: '#/components/schemas/UnitSystem'
$ref: '#/components/schemas/Size'
description: List of additional parameters to be stored.
$ref: '#/components/schemas/KeyvalueTagList'
description: An element describing a pose in the world graph.
Sylvain Renault
committed
- name
description: An Universally Unique IDentifier identifying the world anchor (RFC 4122).
Sylvain Renault
committed
name:
description: A human readable name for the world anchor.
type: string
description: An Universally Unique IDentifier identifying the creator of the world anchor.
$ref: '#/components/schemas/Transform3D'
$ref: '#/components/schemas/UnitSystem'
$ref: '#/components/schemas/Size'
description: List of additional parameters to be stored.
$ref: '#/components/schemas/KeyvalueTagList'
description: An object holding the info of a transform between two elements.
- creatorUUID
- UUIDFrom
- UUIDTo
- transform
description: An Universally Unique IDentifier identifying the link (RFC 4122).
description: An Universally Unique IDentifier identifying the creator of the link.
description: An Universally Unique IDentifier identifying a world anchor or trackable.
description: An Universally Unique IDentifier identifying a world anchor or trackable.
example: 85eed503-875c-4d3d-9569-06c4859bd4cd
typeFrom:
$ref: '#/components/schemas/ObjectType'
typeTo:
$ref: '#/components/schemas/ObjectType'
$ref: '#/components/schemas/Transform3D'
$ref: '#/components/schemas/UnitSystem'
$ref: '#/components/schemas/Size'
Sylvain Renault
committed
description: List of additional parameters to be stored.
$ref: '#/components/schemas/KeyvalueTagList'
example: { "LinkType" : ["Hierarchy"]}
required:
- dataFormat
- version
properties:
dataFormat:
enum: [HOLOLENS, ARKIT, ARCORE, VUFORIA, ARUCO, OTHER]
example : "HOLOLENS"
version:
description: The version of the format
type: string
example : "1.01"
description: Coordinate reference system of the world anchor, a 4*4 matrix (rowmajor) represented by a float vector.
type: array
minItems: 16
maxItems: 16
items:
type: number
format: float
example: [ 1, 0, 0, 3,
0, 1, 0, 3,
0, 0, 1, 3,
0, 0, 0, 1]
type: string
enum: [MM, CM, DM, M, DAM, HM, KM, INCH, FOOT, YARD, MILE]
type: array
items:
type: number
format: double
minItems: 3
maxItems: 3
Sylvain Renault
committed
description: List of additional parameters to be stored with the object.
type: object
additionalProperties:
type: array
items:
type: string
minItems: 1
example: { "Place" : ["Building 123"], "Room" : ["007"]}
Error:
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
#-------------------------------
# Reusable responses
#-------------------------------
responses:
#######################
# 1xx : Informational #
#######################
#################
# 2xx : Success #
#################
#####################
# 3xx : Redirection #
#####################
#######################
# 4xx : Client Errors #
#######################
400_BadRequest:
description: Bad request.
400_InvalidUUID:
description: Invalid UUID supplied.
404_NotFoundUUID:
description: Not found, could not find UUID in database.
409_NotEmptyUUID:
description: Invalid UUID, id must be a Nil value.
4xx_UnexpectedError: # Can be referenced as '#/components/responses/GenericError'
description: Unexpected error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
########################
# 5xx : Server Errors #
########################
5xx_UnexpectedError:
description: Unexpected server error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'