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
# - Rules for RESTful error code RFC2616: https://datatracker.ietf.org/doc/html/rfc2616#section-10
# - Guide: https://restfulapi.net/http-status-codes/
#
# Last Version: 04.03.2022
#
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
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
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
$ref: '#/components/responses/400_InvalidUUID'
'404':
$ref: '#/components/responses/404_NotFoundUUID'
/worldLinks/attached/{worldLinkUUID}:
get:
summary: Retrieve end objects connected to this world link by its UUID.
operationId: getAttachedObjectsFromUUID
tags:
- world links
parameters:
- name: worldLinkUUID
in: path
description: UUID of the link from which you will retrieve the end objects.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful operation.
content:
application/json:
schema:
$ref: '#/components/schemas/AttachedObjects'
'400':
$ref: '#/components/responses/400_InvalidUUID'
$ref: '#/components/responses/404_NotFoundUUID'
# COMPONENTS ###############################################
#-------------------------------
# Reusable operation parameters
#-------------------------------
parameters:
UUIDParams:
name: UUID
in: path
required: true
description: A Universally Unique IDentifier identifying the object (RFC 4122).
schema:
type: string
format: uuid
default: "00000000-0000-0000-0000-000000000000"
#-------------------------------
# Reusable schemas (data models)
#-------------------------------
Sylvain Renault
committed
- name
- trackableType
- trackableEncodingInformation
- trackablePayload
- keyvalueTags
description: A 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: A Universally Unique IDentifier identifying the creator of the trackable (a person, a team or a company).
type: string
format: uuid
example: c75f6324-77a0-11ec-90d6-0242ac120003
trackableType:
description: Extensible list of trackable types possibly handled by complient World Storage implementation.
type: string
enum: [FIDUCIAL_MARKER, IMAGE_MARKER, MAP, 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'
$ref: '#/components/schemas/KeyvalueTagList'
Sylvain Renault
committed
- name
description: A Universally Unique IDentifier identifying the world anchor (RFC 4122).
type: string
format: uuid
example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002
Sylvain Renault
committed
name:
description: A human readable name for the world anchor.
type: string
description: A Universally Unique IDentifier identifying the creator of the world anchor.
type: string
format: uuid
example: c75f6324-77a0-11ec-90d6-0242ac120003
localCRS:
$ref: '#/components/schemas/Transform3D'
$ref: '#/components/schemas/UnitSystem'
$ref: '#/components/schemas/Size'
$ref: '#/components/schemas/KeyvalueTagList'
- creatorUUID
- UUIDFrom
- UUIDTo
- transform
description: A Universally Unique IDentifier identifying the link (RFC 4122).
type: string
format: uuid
example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002
description: A Universally Unique IDentifier identifying the creator of the link.
type: string
format: uuid
example: c75f6324-77a0-11ec-90d6-0242ac120003
description: A Universally Unique IDentifier identifying a world anchor or trackable.
type: string
format: uuid
example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002
description: A Universally Unique IDentifier identifying a world anchor or trackable.
type: string
format: uuid
example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002
$ref: '#/components/schemas/Transform3D'
$ref: '#/components/schemas/UnitSystem'
$ref: '#/components/schemas/Size'
description: List of additional parameters to be stored
$ref: '#/components/schemas/KeyvalueTagList'
example: { "LinkType" : ["Hierarchy"]}
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
AttachedObjects:
type: object
required:
- UUID
- UUIDFrom
- UUIDTo
- TypeFrom
- TypeTo
properties:
UUID:
description: A Universally Unique IDentifier identifying the link.
type: string
format: uuid
example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002
UUIDFrom:
description: A Universally Unique IDentifier identifying a world anchor or trackable.
type: string
format: uuid
example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002
UUIDTo:
description: A Universally Unique IDentifier identifying a world anchor or trackable.
type: string
format: uuid
example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002
TypeFrom:
$ref: '#/components/schemas/ObjectType'
TypeTo:
$ref: '#/components/schemas/ObjectType'
required:
- dataFormat
- version
properties:
dataFormat:
description: Identifier of the target framework
type: string
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: [-2, 1,-3, 4,
4, 4, 4, 2,
1, 0,-2, 1,
-1,-2, 0, 0]
ObjectType:
description: Type of an world representaion object.
type: string
Sylvain Renault
committed
enum: [Trackable, WorldAnchor, WorldLink, NotIdentified]
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
KeyvalueTagList:
description: List of additional parameters to be stored with the trackable.
type: object
additionalProperties:
type: array
items:
type: string
minItems: 1
example: { "Place" : ["Museum 1"], "room" : ["B4"]}
Error:
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
#-------------------------------
# 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'