From 86304d31783c43a8715a35f9aafb15f39de81436 Mon Sep 17 00:00:00 2001
From: Erwan Rouchet <rouchet@teklia.com>
Date: Mon, 13 May 2019 07:42:01 +0000
Subject: [PATCH] Arkindex 0.9.4

---
 .gitlab-ci.yml      |    2 +-
 VERSION             |    2 +-
 arkindex/schema.yml | 1555 +++++++++++++++++++++++++++++++++++++------
 3 files changed, 1341 insertions(+), 218 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2275b4d..4e3b6e6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -64,7 +64,7 @@ client-deploy-testpypi:
 pages:
   stage: deploy
   only:
-    - master
+    - tags
   artifacts:
     paths:
       - public
diff --git a/VERSION b/VERSION
index 0c62199..a602fc9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.2.1
+0.9.4
diff --git a/arkindex/schema.yml b/arkindex/schema.yml
index 3041fee..8be83d2 100644
--- a/arkindex/schema.yml
+++ b/arkindex/schema.yml
@@ -13,7 +13,7 @@ info:
     name: Teklia
     url: https://www.teklia.com/
   title: Arkindex API
-  version: 0.9.3
+  version: 0.9.4
 openapi: 3.0.2
 paths:
   /api/v1/act/{id}/:
@@ -44,6 +44,7 @@ paths:
                               type: string
                             public:
                               type: boolean
+                          readOnly: true
                           required:
                           - name
                           type: object
@@ -116,6 +117,10 @@ paths:
                     required:
                     - name
                     type: object
+                  date_from:
+                    type: string
+                  date_to:
+                    type: string
                   id:
                     type: string
                   name:
@@ -166,26 +171,17 @@ paths:
                           - character
                         zone:
                           properties:
-                            height:
-                              type: integer
                             id:
                               type: string
                             image_url:
                               type: string
+                            polygon:
+                              type: array
                             url:
                               readOnly: true
                               type: string
-                            width:
-                              type: integer
-                            x:
-                              type: integer
-                            y:
-                              type: integer
                           required:
-                          - x
-                          - y
-                          - width
-                          - height
+                          - polygon
                           - image_url
                           type: object
                       required:
@@ -200,6 +196,8 @@ paths:
                 - total_transcriptions
                 - parent_paths
                 - corpus
+                - date_from
+                - date_to
       security: []
       tags:
       - search
@@ -555,18 +553,27 @@ paths:
                   image:
                     properties:
                       height:
+                        readOnly: true
                         type: integer
                       id:
+                        readOnly: true
                         type: string
                       path:
+                        readOnly: true
                         type: string
+                      status:
+                        enum:
+                        - checked
+                        - unchecked
+                        - error
                       url:
                         readOnly: true
                         type: string
                       width:
+                        readOnly: true
                         type: integer
                     required:
-                    - path
+                    - status
                     type: object
                   nb:
                     nullable: true
@@ -613,6 +620,7 @@ paths:
                         type: string
                       public:
                         type: boolean
+                    readOnly: true
                     required:
                     - name
                     type: object
@@ -673,6 +681,7 @@ paths:
                         type: string
                       public:
                         type: boolean
+                    readOnly: true
                     required:
                     - name
                     type: object
@@ -734,6 +743,7 @@ paths:
                         type: string
                       public:
                         type: boolean
+                    readOnly: true
                     required:
                     - name
                     type: object
@@ -825,6 +835,86 @@ paths:
       security: []
       tags:
       - elements
+  /api/v1/element/{id}/transcriptions/:
+    get:
+      description: List all transcriptions for an element, filtered by type
+      operationId: ListTranscriptions
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      - description: A page number within the paginated result set.
+        in: query
+        name: page
+        required: false
+        schema:
+          type: integer
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  id:
+                    type: string
+                  score:
+                    nullable: true
+                    type: number
+                  source:
+                    properties:
+                      id:
+                        type: string
+                      internal:
+                        type: boolean
+                      revision:
+                        type: string
+                      slug:
+                        type: string
+                      type:
+                        enum:
+                        - classifier
+                        - recognizer
+                    required:
+                    - type
+                    - slug
+                    - revision
+                    - internal
+                    type: object
+                  text:
+                    nullable: true
+                    type: string
+                  type:
+                    enum:
+                    - page
+                    - paragraph
+                    - line
+                    - word
+                    - character
+                  zone:
+                    properties:
+                      id:
+                        type: string
+                      image_url:
+                        type: string
+                      polygon:
+                        type: array
+                      url:
+                        readOnly: true
+                        type: string
+                    required:
+                    - polygon
+                    - image_url
+                    type: object
+                required:
+                - type
+                - zone
+                - source
+      security: []
+      tags:
+      - elements
   /api/v1/elements/:
     get:
       description: List all elements, filtered by type
@@ -850,6 +940,7 @@ paths:
                         type: string
                       public:
                         type: boolean
+                    readOnly: true
                     required:
                     - name
                     type: object
@@ -873,6 +964,71 @@ paths:
       security: []
       tags:
       - elements
+  /api/v1/elements/create/:
+    post:
+      description: Create a new element
+      operationId: CreateElement
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                corpus:
+                  type: string
+                id:
+                  type: string
+                image:
+                  type: string
+                metadata:
+                  type: object
+                name:
+                  type: string
+                parent:
+                  type: string
+                type:
+                  enum:
+                  - volume
+                  - register
+                  - act
+                  - page
+                  - surface
+              required:
+              - type
+              - name
+              - corpus
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  corpus:
+                    type: string
+                  id:
+                    type: string
+                  image:
+                    type: string
+                  metadata:
+                    type: object
+                  name:
+                    type: string
+                  parent:
+                    type: string
+                  type:
+                    enum:
+                    - volume
+                    - register
+                    - act
+                    - page
+                    - surface
+                required:
+                - type
+                - name
+                - corpus
+      tags:
+      - elements
   /api/v1/elements/{id}/:
     get:
       description: List all parents and children of a single element
@@ -884,6 +1040,12 @@ paths:
         required: true
         schema:
           type: string
+      - description: A page number within the paginated result set.
+        in: query
+        name: page
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -898,6 +1060,7 @@ paths:
                         type: string
                       public:
                         type: boolean
+                    readOnly: true
                     required:
                     - name
                     type: object
@@ -988,18 +1151,27 @@ paths:
                   image:
                     properties:
                       height:
+                        readOnly: true
                         type: integer
                       id:
+                        readOnly: true
                         type: string
                       path:
+                        readOnly: true
                         type: string
+                      status:
+                        enum:
+                        - checked
+                        - unchecked
+                        - error
                       url:
                         readOnly: true
                         type: string
                       width:
+                        readOnly: true
                         type: integer
                     required:
-                    - path
+                    - status
                     type: object
                   nb:
                     nullable: true
@@ -1052,6 +1224,7 @@ paths:
                         type: string
                       public:
                         type: boolean
+                    readOnly: true
                     required:
                     - name
                     type: object
@@ -1075,54 +1248,10 @@ paths:
       security: []
       tags:
       - elements
-  /api/v1/imports/:
+  /api/v1/entity/{id}/:
     get:
-      description: List all data imports
-      operationId: ListDataImports
-      parameters:
-      - description: A page number within the paginated result set.
-        in: query
-        name: page
-        required: false
-        schema:
-          type: integer
-      responses:
-        '200':
-          content:
-            application/json:
-              schema:
-                properties:
-                  corpus:
-                    type: string
-                  has_failures:
-                    readOnly: true
-                    type: string
-                  id:
-                    readOnly: true
-                    type: string
-                  mode:
-                    enum:
-                    - images
-                    - pdf
-                    - repository
-                  state:
-                    enum:
-                    - unscheduled
-                    - pending
-                    - running
-                    - completed
-                    - failed
-                    - error
-                required:
-                - state
-                - mode
-                - corpus
-      tags:
-      - imports
-  /api/v1/imports/demo/{id}/:
-    post:
-      description: Run a data import with reduced access for demo users
-      operationId: CreateDataImport
+      description: Get all information about entity
+      operationId: RetrieveEntity
       parameters:
       - description: ''
         in: path
@@ -1130,71 +1259,601 @@ paths:
         required: true
         schema:
           type: string
-      requestBody:
-        content:
-          application/json:
-            schema:
-              properties:
-                corpus:
-                  type: string
-                files:
-                  items:
-                    type: string
-                  type: array
-                mode:
-                  enum:
-                  - images
-                  - pdf
-                  - repository
-                payload:
-                  type: object
-                state:
-                  enum:
-                  - unscheduled
-                  - pending
-                  - running
-                  - completed
-                  - failed
-                  - error
-              required:
-              - state
-              - mode
-              - corpus
-              - payload
-              - files
-        x-name: body
       responses:
         '200':
           content:
             application/json:
               schema:
                 properties:
-                  corpus:
-                    type: string
-                  files:
+                  children:
                     items:
-                      type: string
-                    type: array
-                  has_failures:
-                    readOnly: true
-                    type: string
-                  id:
-                    readOnly: true
-                    type: string
-                  mode:
-                    enum:
-                    - images
-                    - pdf
-                    - repository
-                  payload:
-                    type: object
-                  revision:
-                    properties:
-                      author:
-                        type: string
-                      commit_url:
-                        readOnly: true
-                        type: string
+                      properties:
+                        child:
+                          properties:
+                            id:
+                              type: string
+                            name:
+                              type: string
+                            type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                          required:
+                          - name
+                          - type
+                          type: object
+                        id:
+                          type: string
+                        parent:
+                          properties:
+                            id:
+                              type: string
+                            name:
+                              type: string
+                            type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                          required:
+                          - name
+                          - type
+                          type: object
+                        role:
+                          properties:
+                            child_name:
+                              type: string
+                            child_type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                            parent_name:
+                              type: string
+                            parent_type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                          required:
+                          - parent_name
+                          - child_name
+                          - parent_type
+                          - child_type
+                          type: object
+                      required:
+                      - parent
+                      - child
+                      - role
+                    type: array
+                  corpus:
+                    properties:
+                      id:
+                        type: string
+                      name:
+                        type: string
+                      public:
+                        type: boolean
+                    required:
+                    - name
+                    type: object
+                  id:
+                    type: string
+                  metas:
+                    nullable: true
+                    type: string
+                  name:
+                    type: string
+                  parents:
+                    items:
+                      properties:
+                        child:
+                          properties:
+                            id:
+                              type: string
+                            name:
+                              type: string
+                            type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                          required:
+                          - name
+                          - type
+                          type: object
+                        id:
+                          type: string
+                        parent:
+                          properties:
+                            id:
+                              type: string
+                            name:
+                              type: string
+                            type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                          required:
+                          - name
+                          - type
+                          type: object
+                        role:
+                          properties:
+                            child_name:
+                              type: string
+                            child_type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                            parent_name:
+                              type: string
+                            parent_type:
+                              enum:
+                              - person
+                              - location
+                              - subject
+                              - organization
+                              - misc
+                          required:
+                          - parent_name
+                          - child_name
+                          - parent_type
+                          - child_type
+                          type: object
+                      required:
+                      - parent
+                      - child
+                      - role
+                    type: array
+                  type:
+                    enum:
+                    - person
+                    - location
+                    - subject
+                    - organization
+                    - misc
+                required:
+                - name
+                - type
+                - corpus
+                - children
+                - parents
+      tags:
+      - elements
+  /api/v1/entity/{id}/elements/:
+    get:
+      description: Get all elements that have a link with the entity
+      operationId: ListEntityElements
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      - description: A page number within the paginated result set.
+        in: query
+        name: page
+        required: false
+        schema:
+          type: integer
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  corpus:
+                    properties:
+                      id:
+                        type: string
+                      name:
+                        type: string
+                      public:
+                        type: boolean
+                    readOnly: true
+                    required:
+                    - name
+                    type: object
+                  id:
+                    type: string
+                  metadata:
+                    readOnly: true
+                    type: string
+                  name:
+                    type: string
+                  thumbnail_url:
+                    readOnly: true
+                    type: string
+                  type:
+                    enum:
+                    - volume
+                    - register
+                    - act
+                    - page
+                    - surface
+                    readOnly: true
+                required:
+                - name
+      tags:
+      - elements
+  /api/v1/image/:
+    post:
+      description: Create an image on the Arkindex image server, ready for upload
+        to Amazon S3. The response includes an Amazon S3 URL that you can use to upload
+        an image via HTTP PUT. Update the image's status to "checked" to confirm your
+        image is successfully uploaded and visible to Arkindex.
+      operationId: CreateImage
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                datafile:
+                  nullable: true
+                  type: string
+                hash:
+                  type: string
+              required:
+              - hash
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  datafile:
+                    nullable: true
+                    type: string
+                  hash:
+                    type: string
+                  height:
+                    readOnly: true
+                    type: integer
+                  id:
+                    readOnly: true
+                    type: string
+                  path:
+                    readOnly: true
+                    type: string
+                  s3_put_url:
+                    readOnly: true
+                    type: string
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
+                    readOnly: true
+                  url:
+                    readOnly: true
+                    type: string
+                  width:
+                    readOnly: true
+                    type: integer
+                required:
+                - hash
+        '400':
+          content:
+            application/json:
+              examples:
+                image-exists:
+                  summary: An error where an image with this hash already exists,
+                    including the existing image's UUID.
+                  value:
+                    hash:
+                    - Image with this hash already exists
+                    id: 3cc2e9e0-4172-44b1-8d65-bc3fffd076dc
+              schema:
+                properties:
+                  datafile:
+                    description: One or more error messages for errors when validating
+                      the optional DataFile link.
+                    readOnly: true
+                    type: array
+                  detail:
+                    description: A generic error message when an error occurs outside
+                      of a specific field.
+                    readOnly: true
+                    type: string
+                  hash:
+                    description: One or more error messages for errors when validating
+                      the image hash.
+                    readOnly: true
+                    type: array
+                  id:
+                    description: UUID of an existing image, if the error comes from
+                      a duplicate hash.
+                    readOnly: true
+                    type: string
+          description: An error occured while validating the image.
+      tags:
+      - images
+  /api/v1/image/{id}/:
+    get:
+      description: Retrieve an image
+      operationId: RetrieveImage
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  height:
+                    readOnly: true
+                    type: integer
+                  id:
+                    readOnly: true
+                    type: string
+                  path:
+                    readOnly: true
+                    type: string
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
+                  url:
+                    readOnly: true
+                    type: string
+                  width:
+                    readOnly: true
+                    type: integer
+                required:
+                - status
+      tags:
+      - images
+    patch:
+      description: Update an image's status
+      operationId: PartialUpdateImage
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                status:
+                  enum:
+                  - checked
+                  - unchecked
+                  - error
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  height:
+                    readOnly: true
+                    type: integer
+                  id:
+                    readOnly: true
+                    type: string
+                  path:
+                    readOnly: true
+                    type: string
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
+                  url:
+                    readOnly: true
+                    type: string
+                  width:
+                    readOnly: true
+                    type: integer
+                required:
+                - status
+      tags:
+      - images
+    put:
+      description: Update an image's status
+      operationId: UpdateImage
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                status:
+                  enum:
+                  - checked
+                  - unchecked
+                  - error
+              required:
+              - status
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  height:
+                    readOnly: true
+                    type: integer
+                  id:
+                    readOnly: true
+                    type: string
+                  path:
+                    readOnly: true
+                    type: string
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
+                  url:
+                    readOnly: true
+                    type: string
+                  width:
+                    readOnly: true
+                    type: integer
+                required:
+                - status
+      tags:
+      - images
+  /api/v1/imports/:
+    get:
+      description: List all data imports
+      operationId: ListDataImports
+      parameters:
+      - description: A page number within the paginated result set.
+        in: query
+        name: page
+        required: false
+        schema:
+          type: integer
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  corpus:
+                    type: string
+                  has_failures:
+                    readOnly: true
+                    type: string
+                  id:
+                    readOnly: true
+                    type: string
+                  mode:
+                    enum:
+                    - images
+                    - pdf
+                    - repository
+                  state:
+                    enum:
+                    - unscheduled
+                    - pending
+                    - running
+                    - completed
+                    - failed
+                    - error
+                required:
+                - state
+                - mode
+                - corpus
+      tags:
+      - imports
+  /api/v1/imports/demo/{id}/:
+    post:
+      description: Run a data import with reduced access for demo users
+      operationId: CreateDataImport
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                corpus:
+                  type: string
+                files:
+                  items:
+                    type: string
+                  type: array
+                mode:
+                  enum:
+                  - images
+                  - pdf
+                  - repository
+                payload:
+                  type: object
+                state:
+                  enum:
+                  - unscheduled
+                  - pending
+                  - running
+                  - completed
+                  - failed
+                  - error
+              required:
+              - state
+              - mode
+              - corpus
+              - payload
+              - files
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  corpus:
+                    type: string
+                  files:
+                    items:
+                      type: string
+                    type: array
+                  has_failures:
+                    readOnly: true
+                    type: string
+                  id:
+                    readOnly: true
+                    type: string
+                  mode:
+                    enum:
+                    - images
+                    - pdf
+                    - repository
+                  payload:
+                    type: object
+                  revision:
+                    properties:
+                      author:
+                        type: string
+                      commit_url:
+                        readOnly: true
+                        type: string
                       date:
                         type: date-time
                       hash:
@@ -1208,6 +1867,7 @@ paths:
                       repo_id:
                         readOnly: true
                         type: string
+                    readOnly: true
                     required:
                     - date
                     - hash
@@ -1255,16 +1915,52 @@ paths:
                   content_type:
                     readOnly: true
                     type: string
+                  hash:
+                    readOnly: true
+                    type: string
                   id:
                     readOnly: true
                     type: string
+                  images:
+                    items:
+                      properties:
+                        height:
+                          readOnly: true
+                          type: integer
+                        id:
+                          readOnly: true
+                          type: string
+                        path:
+                          readOnly: true
+                          type: string
+                        status:
+                          enum:
+                          - checked
+                          - unchecked
+                          - error
+                        url:
+                          readOnly: true
+                          type: string
+                        width:
+                          readOnly: true
+                          type: integer
+                      required:
+                      - status
+                    readOnly: true
+                    type: array
                   name:
+                    readOnly: true
                     type: string
                   size:
                     readOnly: true
                     type: integer
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
                 required:
-                - name
+                - status
       tags:
       - files
     get:
@@ -1286,35 +1982,236 @@ paths:
                   content_type:
                     readOnly: true
                     type: string
+                  hash:
+                    readOnly: true
+                    type: string
+                  id:
+                    readOnly: true
+                    type: string
+                  images:
+                    items:
+                      properties:
+                        height:
+                          readOnly: true
+                          type: integer
+                        id:
+                          readOnly: true
+                          type: string
+                        path:
+                          readOnly: true
+                          type: string
+                        status:
+                          enum:
+                          - checked
+                          - unchecked
+                          - error
+                        url:
+                          readOnly: true
+                          type: string
+                        width:
+                          readOnly: true
+                          type: integer
+                      required:
+                      - status
+                    readOnly: true
+                    type: array
+                  name:
+                    readOnly: true
+                    type: string
+                  size:
+                    readOnly: true
+                    type: integer
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
+                required:
+                - status
+      tags:
+      - files
+    patch:
+      description: Update a datafile's status
+      operationId: PartialUpdateDataFile
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                status:
+                  enum:
+                  - checked
+                  - unchecked
+                  - error
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  content_type:
+                    readOnly: true
+                    type: string
+                  hash:
+                    readOnly: true
+                    type: string
+                  id:
+                    readOnly: true
+                    type: string
+                  images:
+                    items:
+                      properties:
+                        height:
+                          readOnly: true
+                          type: integer
+                        id:
+                          readOnly: true
+                          type: string
+                        path:
+                          readOnly: true
+                          type: string
+                        status:
+                          enum:
+                          - checked
+                          - unchecked
+                          - error
+                        url:
+                          readOnly: true
+                          type: string
+                        width:
+                          readOnly: true
+                          type: integer
+                      required:
+                      - status
+                    readOnly: true
+                    type: array
+                  name:
+                    readOnly: true
+                    type: string
+                  size:
+                    readOnly: true
+                    type: integer
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
+                required:
+                - status
+      tags:
+      - files
+    put:
+      description: Update a datafile's status
+      operationId: UpdateDataFile
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                status:
+                  enum:
+                  - checked
+                  - unchecked
+                  - error
+              required:
+              - status
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  content_type:
+                    readOnly: true
+                    type: string
+                  hash:
+                    readOnly: true
+                    type: string
                   id:
                     readOnly: true
                     type: string
+                  images:
+                    items:
+                      properties:
+                        height:
+                          readOnly: true
+                          type: integer
+                        id:
+                          readOnly: true
+                          type: string
+                        path:
+                          readOnly: true
+                          type: string
+                        status:
+                          enum:
+                          - checked
+                          - unchecked
+                          - error
+                        url:
+                          readOnly: true
+                          type: string
+                        width:
+                          readOnly: true
+                          type: integer
+                      required:
+                      - status
+                    readOnly: true
+                    type: array
                   name:
+                    readOnly: true
                     type: string
                   size:
                     readOnly: true
                     type: integer
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
                 required:
-                - name
+                - status
       tags:
       - files
-    patch:
-      description: Rename an uploaded file
-      operationId: PartialUpdateDataFile
-      parameters:
-      - description: ''
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
+  /api/v1/imports/files/create/:
+    post:
+      description: Create a Datafile. In case of success, a signed uri is returned
+        to upload file content directly to remote server.
+      operationId: CreateDataFile
+      parameters: []
       requestBody:
         content:
           application/json:
             schema:
               properties:
+                corpus:
+                  type: string
+                hash:
+                  type: string
                 name:
                   type: string
+                size:
+                  type: integer
+              required:
+              - name
+              - hash
+              - size
+              - corpus
         x-name: body
       responses:
         '200':
@@ -1322,60 +2219,92 @@ paths:
             application/json:
               schema:
                 properties:
-                  content_type:
-                    readOnly: true
+                  corpus:
+                    type: string
+                  hash:
                     type: string
                   id:
                     readOnly: true
                     type: string
                   name:
                     type: string
-                  size:
+                  s3_put_url:
+                    readOnly: true
+                    type: string
+                  s3_url:
                     readOnly: true
+                    type: string
+                  size:
                     type: integer
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
+                    readOnly: true
                 required:
                 - name
-      tags:
-      - files
-    put:
-      description: Rename an uploaded file
-      operationId: UpdateDataFile
-      parameters:
-      - description: ''
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-      requestBody:
-        content:
-          application/json:
-            schema:
-              properties:
-                name:
-                  type: string
-              required:
-              - name
-        x-name: body
-      responses:
-        '200':
+                - hash
+                - size
+                - corpus
+        '400':
           content:
             application/json:
+              examples:
+                file-exists:
+                  summary: Data file already exists. Response include existing file's
+                    UUID, status and remote server PUT url to upload file content.
+                  value:
+                    hash:
+                    - DataFile with this hash already exists
+                    id: 55cd009d-cd4b-4ec2-a475-b060f98f9138
+                    s3_put_url: https://remote-server.net/staging/55cd009d-cd4b-4ec2-a475-b060f98f9138?Credential=mycredential&Signature=mysignature
+                    status: unchecked
               schema:
                 properties:
-                  content_type:
+                  corpus:
+                    description: Errors that occured during corpus ID field validation.
+                    readOnly: true
+                    type: array
+                  detail:
+                    description: A generic error message when an error occurs outside
+                      of a specific field.
                     readOnly: true
                     type: string
+                  hash:
+                    description: Errors that occured during hash field validation.
+                    readOnly: true
+                    type: array
                   id:
+                    description: UUID of existing DataFile, if the error comes from
+                      a duplicated creation.
                     readOnly: true
                     type: string
                   name:
+                    description: Errors that occured during name field validation.
+                    readOnly: true
+                    type: array
+                  s3_put_url:
+                    description: Signed url used to upload file content to remote
+                      server, if the error comes from a duplicated creation and file
+                      status is not checked.
+                    readOnly: true
+                    type: string
+                  s3_url:
+                    description: Remote file url, if the error comes from a duplicated
+                      creation and file status is checked.
+                    readOnly: true
                     type: string
                   size:
+                    description: Errors that occured during size field validation.
                     readOnly: true
-                    type: integer
-                required:
-                - name
+                    type: array
+                  status:
+                    description: Status of existing DataFile, if the error comes from
+                      a duplicated creation.
+                    readOnly: true
+                    type: string
+          description: An error occured while creating the data file.
       tags:
       - files
   /api/v1/imports/files/{id}/:
@@ -1389,6 +2318,12 @@ paths:
         required: true
         schema:
           type: string
+      - description: A page number within the paginated result set.
+        in: query
+        name: page
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -1398,16 +2333,52 @@ paths:
                   content_type:
                     readOnly: true
                     type: string
+                  hash:
+                    readOnly: true
+                    type: string
                   id:
                     readOnly: true
                     type: string
+                  images:
+                    items:
+                      properties:
+                        height:
+                          readOnly: true
+                          type: integer
+                        id:
+                          readOnly: true
+                          type: string
+                        path:
+                          readOnly: true
+                          type: string
+                        status:
+                          enum:
+                          - checked
+                          - unchecked
+                          - error
+                        url:
+                          readOnly: true
+                          type: string
+                        width:
+                          readOnly: true
+                          type: integer
+                      required:
+                      - status
+                    readOnly: true
+                    type: array
                   name:
+                    readOnly: true
                     type: string
                   size:
                     readOnly: true
                     type: integer
+                  status:
+                    enum:
+                    - checked
+                    - unchecked
+                    - error
                 required:
-                - name
+                - status
       tags:
       - files
   /api/v1/imports/fromfiles/:
@@ -1420,6 +2391,9 @@ paths:
           application/json:
             schema:
               properties:
+                classifier:
+                  nullable: true
+                  type: string
                 files:
                   items:
                     type: string
@@ -1429,6 +2403,13 @@ paths:
                   - images
                   - pdf
                   - repository
+                pdf_engine:
+                  enum:
+                  - convert
+                  - poppler
+                recognizer:
+                  nullable: true
+                  type: string
                 volume_id:
                   nullable: true
                   type: string
@@ -1444,6 +2425,9 @@ paths:
             application/json:
               schema:
                 properties:
+                  classifier:
+                    nullable: true
+                    type: string
                   files:
                     items:
                       type: string
@@ -1453,6 +2437,13 @@ paths:
                     - images
                     - pdf
                     - repository
+                  pdf_engine:
+                    enum:
+                    - convert
+                    - poppler
+                  recognizer:
+                    nullable: true
+                    type: string
                   volume_id:
                     nullable: true
                     type: string
@@ -1715,6 +2706,40 @@ paths:
           content:
             application/json:
               schema: {}
+        '400':
+          content:
+            application/json:
+              examples:
+                file-exists:
+                  summary: An error where the data file already exists, including
+                    the existing file's UUID.
+                  value:
+                    file:
+                    - File already exists
+                    id: 3cc2e9e0-4172-44b1-8d65-bc3fffd076dc
+              schema:
+                properties:
+                  corpus:
+                    description: One or more error messages for errors when validating
+                      the destination corpus ID.
+                    readOnly: true
+                    type: array
+                  detail:
+                    description: A generic error message when an error occurs outside
+                      of a specific field.
+                    readOnly: true
+                    type: string
+                  file:
+                    description: One or more error messages for errors when validating
+                      the file itself.
+                    readOnly: true
+                    type: array
+                  id:
+                    description: UUID of an existing DataFile, if the error  comes
+                      from a duplicated upload.
+                    readOnly: true
+                    type: string
+          description: An error occured while validating the file.
       tags:
       - files
   /api/v1/imports/{id}/:
@@ -1774,6 +2799,7 @@ paths:
                       repo_id:
                         readOnly: true
                         type: string
+                    readOnly: true
                     required:
                     - date
                     - hash
@@ -1855,6 +2881,7 @@ paths:
                       repo_id:
                         readOnly: true
                         type: string
+                    readOnly: true
                     required:
                     - date
                     - hash
@@ -2032,6 +3059,7 @@ paths:
                       repo_id:
                         readOnly: true
                         type: string
+                    readOnly: true
                     required:
                     - date
                     - hash
@@ -2431,18 +3459,27 @@ paths:
                   image:
                     properties:
                       height:
+                        readOnly: true
                         type: integer
                       id:
+                        readOnly: true
                         type: string
                       path:
+                        readOnly: true
                         type: string
+                      status:
+                        enum:
+                        - checked
+                        - unchecked
+                        - error
                       url:
                         readOnly: true
                         type: string
                       width:
+                        readOnly: true
                         type: integer
                     required:
-                    - path
+                    - status
                     type: object
                   nb:
                     nullable: true
@@ -2499,26 +3536,17 @@ paths:
                           - character
                         zone:
                           properties:
-                            height:
-                              type: integer
                             id:
                               type: string
                             image_url:
                               type: string
+                            polygon:
+                              type: array
                             url:
                               readOnly: true
                               type: string
-                            width:
-                              type: integer
-                            x:
-                              type: integer
-                            y:
-                              type: integer
                           required:
-                          - x
-                          - y
-                          - width
-                          - height
+                          - polygon
                           - image_url
                           type: object
                       required:
@@ -2536,6 +3564,33 @@ paths:
       security: []
       tags:
       - elements
+  /api/v1/page/{id}/transcriptions/xml/:
+    post:
+      description: Import transcriptions into Arkindex from region data in the PAGE
+        XML format.
+      operationId: ImportPageXmlTranscriptions
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/xml:
+            schema: {}
+        description: A PAGE XML document. TextRegion tags will be imported as Paragraph
+          transcriptions and TextLine tags will become Line transcriptions. See https://github.com/PRImA-Research-Lab/PAGE-XML
+          for more info about the PAGE XML format.
+        required: true
+      responses:
+        '200':
+          content:
+            application/json:
+              schema: {}
+      tags:
+      - ml
   /api/v1/pages/:
     get:
       description: Get a list of pages with their parent registers or volumes, the
@@ -2567,6 +3622,10 @@ paths:
                     required:
                     - name
                     type: object
+                  date_from:
+                    type: string
+                  date_to:
+                    type: string
                   id:
                     type: string
                   name:
@@ -2615,26 +3674,17 @@ paths:
                           - character
                         zone:
                           properties:
-                            height:
-                              type: integer
                             id:
                               type: string
                             image_url:
                               type: string
+                            polygon:
+                              type: array
                             url:
                               readOnly: true
                               type: string
-                            width:
-                              type: integer
-                            x:
-                              type: integer
-                            y:
-                              type: integer
                           required:
-                          - x
-                          - y
-                          - width
-                          - height
+                          - polygon
                           - image_url
                           type: object
                       required:
@@ -2648,6 +3698,8 @@ paths:
                 - total_transcriptions
                 - parent_paths
                 - corpus
+                - date_from
+                - date_to
       security: []
       tags:
       - search
@@ -2729,18 +3781,27 @@ paths:
                       image:
                         properties:
                           height:
+                            readOnly: true
                             type: integer
                           id:
+                            readOnly: true
                             type: string
                           path:
+                            readOnly: true
                             type: string
+                          status:
+                            enum:
+                            - checked
+                            - unchecked
+                            - error
                           url:
                             readOnly: true
                             type: string
                           width:
+                            readOnly: true
                             type: integer
                         required:
-                        - path
+                        - status
                         type: object
                       nb:
                         nullable: true
@@ -2797,26 +3858,17 @@ paths:
                               - character
                             zone:
                               properties:
-                                height:
-                                  type: integer
                                 id:
                                   type: string
                                 image_url:
                                   type: string
+                                polygon:
+                                  type: array
                                 url:
                                   readOnly: true
                                   type: string
-                                width:
-                                  type: integer
-                                x:
-                                  type: integer
-                                y:
-                                  type: integer
                               required:
-                              - x
-                              - y
-                              - width
-                              - height
+                              - polygon
                               - image_url
                               type: object
                           required:
@@ -2834,26 +3886,17 @@ paths:
                     type: object
                   zone:
                     properties:
-                      height:
-                        type: integer
                       id:
                         type: string
                       image_url:
                         type: string
+                      polygon:
+                        type: array
                       url:
                         readOnly: true
                         type: string
-                      width:
-                        type: integer
-                      x:
-                        type: integer
-                      y:
-                        type: integer
                     required:
-                    - x
-                    - y
-                    - width
-                    - height
+                    - polygon
                     - image_url
                     type: object
                 required:
@@ -2933,7 +3976,7 @@ paths:
   /api/v1/transcription/bulk/:
     post:
       description: Create multiple transcriptions at once, all linked to the same
-        page and to the same classifier.
+        page and to the same recognizer.
       operationId: CreateTranscriptions
       parameters: []
       requestBody:
@@ -3010,6 +4053,85 @@ paths:
                 - transcriptions
       tags:
       - ml
+    put:
+      description: Replace all existing transcriptions from a given recognizer on
+        a page with other transcriptions.
+      operationId: UpdateTranscriptions
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                parent:
+                  type: string
+                recognizer:
+                  type: string
+                transcriptions:
+                  items:
+                    properties:
+                      polygon:
+                        type: array
+                      score:
+                        type: number
+                      text:
+                        type: string
+                      type:
+                        enum:
+                        - page
+                        - paragraph
+                        - line
+                        - word
+                        - character
+                    required:
+                    - polygon
+                    - text
+                    - score
+                    - type
+                  type: array
+              required:
+              - parent
+              - recognizer
+              - transcriptions
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  parent:
+                    type: string
+                  recognizer:
+                    type: string
+                  transcriptions:
+                    items:
+                      properties:
+                        polygon:
+                          type: array
+                        score:
+                          type: number
+                        text:
+                          type: string
+                        type:
+                          enum:
+                          - page
+                          - paragraph
+                          - line
+                          - word
+                          - character
+                      required:
+                      - polygon
+                      - text
+                      - score
+                      - type
+                    type: array
+                required:
+                - parent
+                - recognizer
+                - transcriptions
+      tags:
+      - ml
   /api/v1/user/:
     delete:
       description: Log out from the API
@@ -3313,7 +4435,7 @@ paths:
       description: Retrieve the full task log as plain text
       operationId: RetrieveTaskLog
       parameters:
-      - description: A UUID string identifying this task.
+      - description: ''
         in: path
         name: id
         required: true
@@ -3409,6 +4531,7 @@ tags:
 - name: oauth
 - name: imports
 - name: files
+- name: images
 - name: ponos
 - description: IIIF manifests, annotation lists and services
   name: iiif
-- 
GitLab