From 2ae1ba5583a0e3ae90f7d59507b8dbbc6da11f25 Mon Sep 17 00:00:00 2001 From: Sylvain Renault Date: Wed, 27 Apr 2022 10:42:14 +0200 Subject: [PATCH 1/6] Trackables and anchors now have a name param (naming the elements are crucial to understand the graph and useful for the GUI). New ObjectType (NotIdentified) for to/from of a WorldLink when element is deleted from the graph. New encoding types: vuforia, aruco. --- API/openapi.yaml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/API/openapi.yaml b/API/openapi.yaml index eef5f94..438e177 100644 --- a/API/openapi.yaml +++ b/API/openapi.yaml @@ -389,6 +389,7 @@ components: Trackable: type: object required: + - name - creatorUUID - trackableType - trackableEncodingInformation @@ -403,6 +404,10 @@ components: type: string format: uuid example: fa8bbe40-8052-11ec-a8a3-0242ac120002 + name: + description: A human readable name for the trackable. + type: string + example: newTrackableXYZ creatorUUID: description: A Universally Unique IDentifier identifying the creator of the trackable (a person, a team or a company). type: string @@ -432,6 +437,7 @@ components: WorldAnchor: type: object required: + - name - creatorUUID - localCRS - unit @@ -443,6 +449,10 @@ components: type: string format: uuid example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002 + name: + description: A human readable name for the world anchor. + type: string + example: newWorldAnchorXYZ creatorUUID: description: A Universally Unique IDentifier identifying the creator of the world anchor. type: string @@ -536,7 +546,7 @@ components: dataFormat: description: Identifier of the target framework type: string - enum: [HOLOLENS, ARKIT, ARCORE] + enum: [HOLOLENS, ARKIT, ARCORE, VUFORIA, ARUCO] example : "HOLOLENS" version: description: The version of the format @@ -559,7 +569,7 @@ components: ObjectType: description: Type of an world representaion object. type: string - enum: [Trackable, WorldAnchor, WorldLink] + enum: [Trackable, WorldAnchor, WorldLink, NotIdentified] example: Trackable UnitSystem: -- GitLab From 8b7f93276f0f211ca38917ee3ccca490bb40a990 Mon Sep 17 00:00:00 2001 From: Sylvain Renault Date: Fri, 29 Apr 2022 10:58:35 +0200 Subject: [PATCH 2/6] Minor changes in the yaml file (format) --- API/openapi.yaml | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/API/openapi.yaml b/API/openapi.yaml index 438e177..75e7b74 100644 --- a/API/openapi.yaml +++ b/API/openapi.yaml @@ -15,7 +15,7 @@ openapi: "3.0.0" # Last Version: 04.03.2022 # info: - version: 0.0.4 + version: 0.0.5 title: World Storage API description: API ensuring interoperability between an authoring tool and a World Storage service license: @@ -376,7 +376,7 @@ components: name: UUID in: path required: true - description: A Universally Unique IDentifier identifying the object + description: A Universally Unique IDentifier identifying the object (RFC 4122). schema: type: string format: uuid @@ -407,7 +407,7 @@ components: name: description: A human readable name for the trackable. type: string - example: newTrackableXYZ + example: myTrackableXYZ creatorUUID: description: A Universally Unique IDentifier identifying the creator of the trackable (a person, a team or a company). type: string @@ -426,13 +426,13 @@ components: format: byte example: "10110101" localCRS: - $ref: '#/components/schemas/Transform3D' + $ref: '#/components/schemas/Transform3D' unit: - $ref: '#/components/schemas/UnitSystem' + $ref: '#/components/schemas/UnitSystem' trackableSize: - $ref: '#/components/schemas/Size' + $ref: '#/components/schemas/Size' keyvalueTags: - $ref: '#/components/schemas/KeyvalueTagList' + $ref: '#/components/schemas/KeyvalueTagList' WorldAnchor: type: object @@ -452,20 +452,20 @@ components: name: description: A human readable name for the world anchor. type: string - example: newWorldAnchorXYZ + example: myWorldAnchorXYZ creatorUUID: 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/Transform3D' unit: - $ref: '#/components/schemas/UnitSystem' + $ref: '#/components/schemas/UnitSystem' worldAnchorSize: - $ref: '#/components/schemas/Size' + $ref: '#/components/schemas/Size' keyvalueTags: - $ref: '#/components/schemas/KeyvalueTagList' + $ref: '#/components/schemas/KeyvalueTagList' WorldLink: type: object @@ -499,15 +499,15 @@ components: format: uuid example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002 transform: - $ref: '#/components/schemas/Transform3D' + $ref: '#/components/schemas/Transform3D' unit: - $ref: '#/components/schemas/UnitSystem' + $ref: '#/components/schemas/UnitSystem' linkSize: - $ref: '#/components/schemas/Size' + $ref: '#/components/schemas/Size' keyvalueTags: - description: List of additional parameters to be stored - $ref: '#/components/schemas/KeyvalueTagList' - example: { "LinkType" : ["Hierarchy"]} + description: List of additional parameters to be stored + $ref: '#/components/schemas/KeyvalueTagList' + example: { "LinkType" : ["Hierarchy"]} AttachedObjects: type: object @@ -546,7 +546,7 @@ components: dataFormat: description: Identifier of the target framework type: string - enum: [HOLOLENS, ARKIT, ARCORE, VUFORIA, ARUCO] + enum: [HOLOLENS, ARKIT, ARCORE, VUFORIA, ARUCO, OTHER] example : "HOLOLENS" version: description: The version of the format @@ -559,8 +559,8 @@ components: minItems: 16 maxItems: 16 items: - type: number - format: float + type: number + format: float example: [-2, 1,-3, 4, 4, 4, 4, 2, 1, 0,-2, 1, -- GitLab From c8802a3a9846a3b82f9e88cf002d01c324c91b13 Mon Sep 17 00:00:00 2001 From: Sylvain Renault Date: Fri, 29 Apr 2022 11:27:21 +0200 Subject: [PATCH 3/6] New admin operation "getVersion" to receive the current version number of the API. --- API/openapi.yaml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/API/openapi.yaml b/API/openapi.yaml index 75e7b74..b5e8da9 100644 --- a/API/openapi.yaml +++ b/API/openapi.yaml @@ -33,11 +33,22 @@ paths: description: OK, world storage alive. /admin: get: - summary: Get the version of the API. + 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. operationId: getVersion responses: '200': - description: OK, world storage ready. + description: Current version. content: text/plain: schema: @@ -505,7 +516,7 @@ components: linkSize: $ref: '#/components/schemas/Size' keyvalueTags: - description: List of additional parameters to be stored + description: List of additional parameters to be stored. $ref: '#/components/schemas/KeyvalueTagList' example: { "LinkType" : ["Hierarchy"]} @@ -589,7 +600,7 @@ components: example: [1,5,0] KeyvalueTagList: - description: List of additional parameters to be stored with the trackable. + description: List of additional parameters to be stored with the object. type: object additionalProperties: type: array -- GitLab From f5d83e4018c51b6221adc06e4bcec48a980f7eae Mon Sep 17 00:00:00 2001 From: Sylvain Renault Date: Tue, 17 May 2022 16:15:39 +0200 Subject: [PATCH 4/6] New draft version - deleted AttachedObjects (action + schema) - new version number - some new descriptions - new default matrix - new default UUID (all are now differents) --- API/openapi.yaml | 125 ++++++++++++++++------------------------------- 1 file changed, 41 insertions(+), 84 deletions(-) diff --git a/API/openapi.yaml b/API/openapi.yaml index b5e8da9..7414cee 100644 --- a/API/openapi.yaml +++ b/API/openapi.yaml @@ -9,13 +9,14 @@ openapi: "3.0.0" # - 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/ # -# Last Version: 04.03.2022 +# Last Version: 17.05.2022 # info: - version: 0.0.5 + version: 0.0.6 title: World Storage API description: API ensuring interoperability between an authoring tool and a World Storage service license: @@ -351,32 +352,6 @@ paths: '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' - '404': - $ref: '#/components/responses/404_NotFoundUUID' - # COMPONENTS ############################################### components: #------------------------------- @@ -387,7 +362,7 @@ components: name: UUID in: path required: true - description: A Universally Unique IDentifier identifying the object (RFC 4122). + description: An Universally Unique IDentifier identifying the object (RFC 4122). schema: type: string format: uuid @@ -398,6 +373,7 @@ components: #------------------------------- schemas: Trackable: + description: An element representing a trackable object in the real world. type: object required: - name @@ -411,7 +387,7 @@ components: - keyvalueTags properties: UUID: - description: A Universally Unique IDentifier identifying the trackable (RFC 4122). + description: An Universally Unique IDentifier identifying the trackable (RFC 4122). type: string format: uuid example: fa8bbe40-8052-11ec-a8a3-0242ac120002 @@ -420,14 +396,14 @@ components: type: string example: myTrackableXYZ creatorUUID: - description: A Universally Unique IDentifier identifying the creator of the trackable (a person, a team or a company). + description: An 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 + example: bd6ce7ce-7fe8-487d-a179-fddfe914f293 trackableType: description: Extensible list of trackable types possibly handled by complient World Storage implementation. type: string - enum: [FIDUCIAL_MARKER, IMAGE_MARKER, MAP, OTHER] + enum: [FIDUCIAL_MARKER, IMAGE_MARKER, MAP, GEOPOSITION, OTHER] example: FIDUCIAL_MARKER trackableEncodingInformation: $ref: '#/components/schemas/EncodingInformationStructure' @@ -443,9 +419,12 @@ components: trackableSize: $ref: '#/components/schemas/Size' keyvalueTags: + description: List of additional parameters to be stored. $ref: '#/components/schemas/KeyvalueTagList' + example: { "TrackableType" : ["Standard"]} WorldAnchor: + description: An element describing a pose in the world graph. type: object required: - name @@ -456,19 +435,19 @@ components: - keyvalueTags properties: UUID: - description: A Universally Unique IDentifier identifying the world anchor (RFC 4122). + description: An Universally Unique IDentifier identifying the world anchor (RFC 4122). type: string format: uuid - example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002 + example: 49d18ab3-1bf8-481d-919b-cd062a2fd428 name: description: A human readable name for the world anchor. type: string example: myWorldAnchorXYZ creatorUUID: - description: A Universally Unique IDentifier identifying the creator of the world anchor. + description: An Universally Unique IDentifier identifying the creator of the world anchor. type: string format: uuid - example: c75f6324-77a0-11ec-90d6-0242ac120003 + example: 6ddeb59e-7740-42f7-b329-1374b92e7fc2 localCRS: $ref: '#/components/schemas/Transform3D' unit: @@ -476,9 +455,12 @@ components: worldAnchorSize: $ref: '#/components/schemas/Size' keyvalueTags: + description: List of additional parameters to be stored. $ref: '#/components/schemas/KeyvalueTagList' + example: { "AnchorType" : ["Static"]} WorldLink: + description: An object holding the info of a transform between two elements. type: object required: - creatorUUID @@ -490,25 +472,29 @@ components: - keyvalueTags properties: UUID: - description: A Universally Unique IDentifier identifying the link (RFC 4122). + description: An Universally Unique IDentifier identifying the link (RFC 4122). type: string format: uuid - example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002 + example: c6998f4f-1b8d-460b-9de8-4793b92fae2a creatorUUID: - description: A Universally Unique IDentifier identifying the creator of the link. + description: An Universally Unique IDentifier identifying the creator of the link. type: string format: uuid - example: c75f6324-77a0-11ec-90d6-0242ac120003 + example: 7506001c-9c00-4f84-ae2e-e4dfcb77d36a UUIDFrom: - description: A Universally Unique IDentifier identifying a world anchor or trackable. + description: An Universally Unique IDentifier identifying a world anchor or trackable. type: string format: uuid - example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002 + example: 60e11d81-1230-4588-be4c-93520a275012 UUIDTo: - description: A Universally Unique IDentifier identifying a world anchor or trackable. + description: An Universally Unique IDentifier identifying a world anchor or trackable. type: string format: uuid - example: ce8ccd80-56ee-2a5c-a8a3-0242ac150d002 + example: 85eed503-875c-4d3d-9569-06c4859bd4cd + typeFrom: + $ref: '#/components/schemas/ObjectType' + typeTo: + $ref: '#/components/schemas/ObjectType' transform: $ref: '#/components/schemas/Transform3D' unit: @@ -520,42 +506,13 @@ components: $ref: '#/components/schemas/KeyvalueTagList' example: { "LinkType" : ["Hierarchy"]} - 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' - EncodingInformationStructure: required: - dataFormat - version properties: dataFormat: - description: Identifier of the target framework + description: Identifier of the target framework. type: string enum: [HOLOLENS, ARKIT, ARCORE, VUFORIA, ARUCO, OTHER] example : "HOLOLENS" @@ -565,22 +522,22 @@ components: example : "1.01" Transform3D: - description: Coordinate reference system of the world anchor, a 4*4 matrix (rowmajor) represented by a float vector + 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] + example: [ 1, 0, 0, 3, + 0, 1, 0, 3, + 0, 0, 1, 3, + 0, 0, 0, 1] ObjectType: - description: Type of an world representaion object. + description: Type of a world representaion object. type: string - enum: [Trackable, WorldAnchor, WorldLink, NotIdentified] + enum: [Trackable, WorldAnchor, NotIdentified] example: Trackable UnitSystem: @@ -597,7 +554,7 @@ components: format: double minItems: 3 maxItems: 3 - example: [1,5,0] + example: [1.0,1.0,1.5] KeyvalueTagList: description: List of additional parameters to be stored with the object. @@ -607,7 +564,7 @@ components: items: type: string minItems: 1 - example: { "Place" : ["Museum 1"], "room" : ["B4"]} + example: { "Place" : ["Building 123"], "Room" : ["007"]} Error: required: -- GitLab From 8b13db35ec8349a8bf513f9ad1d35d6a24699a00 Mon Sep 17 00:00:00 2001 From: Sylvain Renault Date: Tue, 17 May 2022 16:30:19 +0200 Subject: [PATCH 5/6] Some changes in the md file. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1012339..6c0c54f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ # Objectives -Project dedicated to the development of an API standardizing the exchanges with a World Storage Representation service. +This repository is dedicated to the development of the augmented reality framework (ARF) API (ETSI-ISG) for standardizing the exchanges with a World Storage. service. The API contains all the accees actions (REST) data (elements) needed to implement a World Representation with a World Graph. # Associated workspaces -- GitLab From 32912d4d7613c10a4577144361291f65fdd15ebb Mon Sep 17 00:00:00 2001 From: Jerome Royan Date: Tue, 24 May 2022 12:35:15 +0000 Subject: [PATCH 6/6] Yes, you are right, the position is to less. GEOPOSE is better. --- API/openapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/openapi.yaml b/API/openapi.yaml index 7414cee..d8ea76e 100644 --- a/API/openapi.yaml +++ b/API/openapi.yaml @@ -403,7 +403,7 @@ components: trackableType: description: Extensible list of trackable types possibly handled by complient World Storage implementation. type: string - enum: [FIDUCIAL_MARKER, IMAGE_MARKER, MAP, GEOPOSITION, OTHER] + enum: [FIDUCIAL_MARKER, IMAGE_MARKER, MAP, GEOPOSE, OTHER] example: FIDUCIAL_MARKER trackableEncodingInformation: $ref: '#/components/schemas/EncodingInformationStructure' -- GitLab