diff --git a/API/openapi.yaml b/API/openapi.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7011bd0a3e0557234577988b007e5603e9fa1f2b
--- /dev/null
+++ b/API/openapi.yaml
@@ -0,0 +1,214 @@
+openapi: "3.0.0"
+info:
+ version: 0.0.2
+ 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
+ responses:
+ '200':
+ description: OK
+ /admin:
+ get:
+ summary: Get the version of the API
+ operationId: getVersion
+ responses:
+ '200':
+ description: OK world storage.
+ content:
+ text/plain:
+ schema:
+ type: string
+ /trackables:
+ post:
+ summary: Create a trackable
+ operationId: addTrackable
+ tags:
+ - trackables
+ requestBody:
+ description: the trackable to be added to the world storage
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/trackable'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/trackable'
+ responses:
+ '200':
+ description: OK returns the UUID of the Trackable defined by the world storage.
+ content:
+ text/plain:
+ schema:
+ type: string
+ '201':
+ description: Null response
+ default:
+ description: unexpected error
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ get:
+ summary: returns the list of all trackables defined by the world storage.
+ operationId: getTrackables
+ tags:
+ - trackables
+ responses:
+ 200:
+ description: OK returns all the Trackables defined by the world storage.
+ content:
+ application/json:
+ schema:
+ type : array
+ items :
+ $ref: "#/components/schemas/trackable"
+ 201:
+ description: Null response
+ default:
+ description: unexpected error
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ /trackables/{trackableId}:
+ get:
+ summary: Find a trackable by his ID
+ operationId: getTrackableById
+ tags:
+ - trackables
+ parameters:
+ - name: trackableId
+ in: path
+ description: ID of the trackable to retrieve
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: "successful operation"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/trackable'
+ '400':
+ description: "Invalid ID supplied"
+ '404':
+ description: "Trackable not found"
+ delete:
+ summary: Deletes a trackable
+ operationId: deleteTrackable
+ tags:
+ - trackables
+ parameters:
+ - name: trackableId
+ in: path
+ description: trackable id to delete
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: OK
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: trackable not found
+components:
+ schemas:
+ trackable:
+ type: object
+ required:
+ - creatorUID
+ - trackableType
+ - trackableEncodingInformation
+ - trackablePayload
+ - unitSystem
+ - trackableDimension
+ - keyvalueTagList
+ properties:
+ creatorUID:
+ description: A Universally Unique IDentifier identifying the creator of the trackable
+ 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:
+ description: Identifies targeted framework and version of the format.
+ $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:
+ description: Coordinate reference system of the trackable, 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]
+ unitSystem:
+ description: Unit of length
+ type: string
+ enum: [MM, CM, DM, M, DAM, HM, KM, INCH, FOOT, YARD, MILE]
+ example: M
+ trackableDimension:
+ description: Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables
+ type: array
+ items:
+ type: number
+ format: double
+ minItems: 3
+ maxItems: 3
+ example: [1,5,0]
+ keyvalueTagList:
+ description: List of additional parameters to be stored with the trackable.
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ type: string
+ minItems: 1
+ example: { "author" : ["james","donovan"], "image" : ["skater"]}
+ encodingInformationStructure:
+ required:
+ - dataFormat
+ - version
+ properties:
+ dataFormat:
+ description: Identifier of the target framework
+ type: string
+ enum: [HOLOLENS, ARKIT, ARCORE]
+ example : "HOLOLENS"
+ version:
+ description: The version of the format
+ type: string
+ example : "1.01"
+ Error:
+ required:
+ - code
+ - message
+ properties:
+ code:
+ type: integer
+ format: int32
+ message:
+ type: string
\ No newline at end of file
diff --git a/API/openapitools.json b/API/openapitools.json
new file mode 100644
index 0000000000000000000000000000000000000000..3b40e47a45fd988f38e0b885958ceb2cac4a6201
--- /dev/null
+++ b/API/openapitools.json
@@ -0,0 +1,7 @@
+{
+ "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json",
+ "spaces": 2,
+ "generator-cli": {
+ "version": "5.3.0"
+ }
+}
diff --git a/doc/VSCode.md b/doc/VSCode.md
index b219ce49fc9846989efc64025a91bda48e9ee6da..b419f633ad6c5812e4b66d777de0f6d62ba8862b 100644
--- a/doc/VSCode.md
+++ b/doc/VSCode.md
@@ -17,8 +17,9 @@
- [Markdown Snippets](#markdown-snippets)
- [Snippets ranger](#snippets-ranger)
- [Git Graph](#git-graph)
+ - [Swagger viewer](#swagger-viewer)
-## VSCode vs VSCodium
+## VSCode vs VSCodium
VSCode is nice, but you can also use it's open source counterpart with the same functionalities and without the tracking and telemetry functionalities.
@@ -90,3 +91,7 @@ Note : Call snippets from intelisense with CTRL + SPACE
### Git Graph
+
+### Swagger viewer
+Lets you preview and validate OpenAPI files.
+
\ No newline at end of file
diff --git a/doc/images/branchingPolicy.png b/doc/images/BranchingPolicy.png
similarity index 100%
rename from doc/images/branchingPolicy.png
rename to doc/images/BranchingPolicy.png
diff --git a/doc/images/VSCodeSwaggerViewer.jpg b/doc/images/VSCodeSwaggerViewer.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..dc40334f0b603eaa347c99b3a9f1f8e999189713
Binary files /dev/null and b/doc/images/VSCodeSwaggerViewer.jpg differ