From 522e5dfc69ca1c5e3a09838e83dcb918031fe6a4 Mon Sep 17 00:00:00 2001
From: Erwan Rouchet <rouchet@teklia.com>
Date: Mon, 1 Jul 2019 14:33:13 +0000
Subject: [PATCH] Update OpenAPI schema

---
 arkindex/schema.yml | 822 ++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 785 insertions(+), 37 deletions(-)

diff --git a/arkindex/schema.yml b/arkindex/schema.yml
index bc48dba..9419a4c 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.5
+  version: 0.9.6-dev
 openapi: 3.0.2
 paths:
   /api/v1/act/{id}/:
@@ -100,6 +100,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -219,12 +225,12 @@ paths:
                 classifications:
                   items:
                     properties:
-                      class_name:
-                        type: string
                       confidence:
                         type: number
+                      ml_class:
+                        type: string
                     required:
-                    - class_name
+                    - ml_class
                     - confidence
                   type: array
                 classifier:
@@ -245,12 +251,12 @@ paths:
                   classifications:
                     items:
                       properties:
-                        class_name:
-                          type: string
                         confidence:
                           type: number
+                        ml_class:
+                          type: string
                       required:
-                      - class_name
+                      - ml_class
                       - confidence
                     type: array
                   classifier:
@@ -263,6 +269,256 @@ paths:
                 - classifications
       tags:
       - ml
+  /api/v1/classifications/:
+    post:
+      operationId: CreateClassification
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                ml_class:
+                  type: string
+                page:
+                  type: string
+              required:
+              - page
+              - ml_class
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  ml_class:
+                    type: string
+                  page:
+                    type: string
+                required:
+                - page
+                - ml_class
+  /api/v1/classifications/{id}/reject/:
+    put:
+      operationId: RejectClassification
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                confidence:
+                  nullable: true
+                  type: number
+                id:
+                  type: string
+                ml_class:
+                  properties:
+                    id:
+                      type: string
+                    name:
+                      type: string
+                  required:
+                  - name
+                  type: object
+                source:
+                  properties:
+                    id:
+                      type: string
+                    internal:
+                      type: boolean
+                    revision:
+                      type: string
+                    slug:
+                      type: string
+                    type:
+                      enum:
+                      - classifier
+                      - recognizer
+                      - ner
+                  required:
+                  - type
+                  - slug
+                  - revision
+                  - internal
+                  type: object
+                state:
+                  enum:
+                  - pending
+                  - validated
+                  - rejected
+              required:
+              - source
+              - ml_class
+              - state
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  confidence:
+                    nullable: true
+                    type: number
+                  id:
+                    type: string
+                  ml_class:
+                    properties:
+                      id:
+                        type: string
+                      name:
+                        type: string
+                    required:
+                    - name
+                    type: object
+                  source:
+                    properties:
+                      id:
+                        type: string
+                      internal:
+                        type: boolean
+                      revision:
+                        type: string
+                      slug:
+                        type: string
+                      type:
+                        enum:
+                        - classifier
+                        - recognizer
+                        - ner
+                    required:
+                    - type
+                    - slug
+                    - revision
+                    - internal
+                    type: object
+                  state:
+                    enum:
+                    - pending
+                    - validated
+                    - rejected
+                required:
+                - source
+                - ml_class
+                - state
+  /api/v1/classifications/{id}/validate/:
+    put:
+      operationId: ValidateClassification
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                confidence:
+                  nullable: true
+                  type: number
+                id:
+                  type: string
+                ml_class:
+                  properties:
+                    id:
+                      type: string
+                    name:
+                      type: string
+                  required:
+                  - name
+                  type: object
+                source:
+                  properties:
+                    id:
+                      type: string
+                    internal:
+                      type: boolean
+                    revision:
+                      type: string
+                    slug:
+                      type: string
+                    type:
+                      enum:
+                      - classifier
+                      - recognizer
+                      - ner
+                  required:
+                  - type
+                  - slug
+                  - revision
+                  - internal
+                  type: object
+                state:
+                  enum:
+                  - pending
+                  - validated
+                  - rejected
+              required:
+              - source
+              - ml_class
+              - state
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  confidence:
+                    nullable: true
+                    type: number
+                  id:
+                    type: string
+                  ml_class:
+                    properties:
+                      id:
+                        type: string
+                      name:
+                        type: string
+                    required:
+                    - name
+                    type: object
+                  source:
+                    properties:
+                      id:
+                        type: string
+                      internal:
+                        type: boolean
+                      revision:
+                        type: string
+                      slug:
+                        type: string
+                      type:
+                        enum:
+                        - classifier
+                        - recognizer
+                        - ner
+                    required:
+                    - type
+                    - slug
+                    - revision
+                    - internal
+                    type: object
+                  state:
+                    enum:
+                    - pending
+                    - validated
+                    - rejected
+                required:
+                - source
+                - ml_class
+                - state
   /api/v1/corpus/:
     get:
       description: List corpora with their access rights
@@ -490,6 +746,28 @@ paths:
                 - name
       tags:
       - corpora
+  /api/v1/corpus/{id}/classes/:
+    get:
+      operationId: ListCorpusMLClass
+      parameters:
+      - description: ''
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  id:
+                    type: string
+                  name:
+                    type: string
+                required:
+                - name
   /api/v1/corpus/{id}/pages/:
     get:
       description: List all pages in all volumes of a corpus
@@ -507,20 +785,47 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
+      - description: Class
+        in: query
+        name: ml_class
+        required: false
+        schema:
+          type: string
+      - description: ml_class_unvalidated
+        in: query
+        name: ml_class_unvalidated
+        required: false
+        schema:
+          type: string
       responses:
         '200':
           content:
             application/json:
               schema:
                 properties:
-                  best_classes:
+                  classifications:
                     items:
                       properties:
-                        class_name:
-                          type: string
                         confidence:
                           nullable: true
                           type: number
+                        id:
+                          type: string
+                        ml_class:
+                          properties:
+                            id:
+                              type: string
+                            name:
+                              type: string
+                          required:
+                          - name
+                          type: object
                         source:
                           properties:
                             id:
@@ -542,9 +847,15 @@ paths:
                           - revision
                           - internal
                           type: object
+                        state:
+                          enum:
+                          - pending
+                          - validated
+                          - rejected
                       required:
                       - source
-                      - class_name
+                      - ml_class
+                      - state
                     type: array
                   direction:
                     enum:
@@ -599,7 +910,7 @@ paths:
                 - page_type
                 - direction
                 - image
-                - best_classes
+                - classifications
       security: []
       tags:
       - elements
@@ -620,6 +931,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -1358,6 +1675,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -1516,6 +1839,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -1636,6 +1965,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -1691,21 +2026,36 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
             application/json:
               schema:
                 properties:
-                  best_classes:
+                  classifications:
                     items:
                       properties:
-                        class_name:
-                          type: string
                         confidence:
                           nullable: true
                           type: number
-                        source:
+                        id:
+                          type: string
+                        ml_class:
+                          properties:
+                            id:
+                              type: string
+                            name:
+                              type: string
+                          required:
+                          - name
+                          type: object
+                        source:
                           properties:
                             id:
                               type: string
@@ -1726,9 +2076,15 @@ paths:
                           - revision
                           - internal
                           type: object
+                        state:
+                          enum:
+                          - pending
+                          - validated
+                          - rejected
                       required:
                       - source
-                      - class_name
+                      - ml_class
+                      - state
                     type: array
                   direction:
                     enum:
@@ -1783,7 +2139,7 @@ paths:
                 - page_type
                 - direction
                 - image
-                - best_classes
+                - classifications
       security: []
       tags:
       - elements
@@ -1804,6 +2160,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -2099,6 +2461,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -2338,6 +2706,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -2729,6 +3103,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -3333,6 +3713,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -3576,6 +3962,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -3989,6 +4381,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -4266,6 +4664,34 @@ paths:
       security: []
       tags:
       - iiif
+  /api/v1/ml-classes/:
+    get:
+      operationId: ListMLClass
+      parameters:
+      - description: A page number within the paginated result set.
+        in: query
+        name: page
+        required: false
+        schema:
+          type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  id:
+                    type: string
+                  name:
+                    type: string
+                required:
+                - name
   /api/v1/oauth/credentials/:
     get:
       description: List all OAuth credentials for the authenticated user
@@ -4277,6 +4703,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -4472,11 +4904,20 @@ paths:
                   classifications:
                     items:
                       properties:
-                        class_name:
-                          type: string
                         confidence:
                           nullable: true
                           type: number
+                        id:
+                          type: string
+                        ml_class:
+                          properties:
+                            id:
+                              type: string
+                            name:
+                              type: string
+                          required:
+                          - name
+                          type: object
                         source:
                           properties:
                             id:
@@ -4498,9 +4939,15 @@ paths:
                           - revision
                           - internal
                           type: object
+                        state:
+                          enum:
+                          - pending
+                          - validated
+                          - rejected
                       required:
                       - source
-                      - class_name
+                      - ml_class
+                      - state
                     type: array
                   corpus:
                     properties:
@@ -4678,6 +5125,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -4806,11 +5259,20 @@ paths:
                       classifications:
                         items:
                           properties:
-                            class_name:
-                              type: string
                             confidence:
                               nullable: true
                               type: number
+                            id:
+                              type: string
+                            ml_class:
+                              properties:
+                                id:
+                                  type: string
+                                name:
+                                  type: string
+                              required:
+                              - name
+                              type: object
                             source:
                               properties:
                                 id:
@@ -4832,9 +5294,15 @@ paths:
                               - revision
                               - internal
                               type: object
+                            state:
+                              enum:
+                              - pending
+                              - validated
+                              - rejected
                           required:
                           - source
-                          - class_name
+                          - ml_class
+                          - state
                         type: array
                       corpus:
                         properties:
@@ -5237,6 +5705,12 @@ paths:
         required: false
         schema:
           type: integer
+      - description: Number of results to return per page.
+        in: query
+        name: page_size
+        required: false
+        schema:
+          type: integer
       responses:
         '200':
           content:
@@ -5560,6 +6034,88 @@ paths:
       security: []
       tags:
       - users
+  /ponos/v1/agent/:
+    post:
+      operationId: CreateAgent
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                cpu_cores:
+                  type: integer
+                cpu_frequency:
+                  type: integer
+                gpu_count:
+                  type: integer
+                gpu_names:
+                  type: string
+                hostname:
+                  type: string
+                token:
+                  type: string
+              required:
+              - token
+              - hostname
+              - cpu_cores
+              - cpu_frequency
+              - gpu_names
+              - gpu_count
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  cpu_cores:
+                    type: integer
+                  cpu_frequency:
+                    type: integer
+                  gpu_count:
+                    type: integer
+                  gpu_names:
+                    type: string
+                  hostname:
+                    type: string
+                  id:
+                    readOnly: true
+                    type: string
+                  token:
+                    type: string
+                required:
+                - token
+                - hostname
+                - cpu_cores
+                - cpu_frequency
+                - gpu_names
+                - gpu_count
+  /ponos/v1/agent/actions/:
+    get:
+      operationId: RetrieveAgentActions
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  actions:
+                    items:
+                      properties:
+                        action:
+                          enum:
+                          - start_task
+                          - kill
+                        task_id:
+                          readOnly: true
+                          type: string
+                      required:
+                      - action
+                    type: array
+                required:
+                - actions
   /ponos/v1/task/{id}/:
     get:
       description: Retrieve a Ponos task status
@@ -5578,20 +6134,23 @@ paths:
               schema:
                 properties:
                   depth:
+                    readOnly: true
                     type: integer
                   full_log:
-                    readOnly: true
                     type: string
                   id:
+                    readOnly: true
                     type: string
                   logs:
                     type: string
                   parent:
-                    nullable: true
+                    readOnly: true
                     type: string
                   run:
+                    readOnly: true
                     type: integer
                   slug:
+                    readOnly: true
                     type: string
                   state:
                     enum:
@@ -5605,18 +6164,153 @@ paths:
                     readOnly: true
                     type: string
                 required:
-                - run
-                - depth
-                - slug
                 - state
                 - logs
+                - full_log
       security: []
       tags:
       - ponos
-  /ponos/v1/task/{id}/log/:
+    patch:
+      operationId: PartialUpdateTask
+      parameters:
+      - description: A UUID string identifying this task.
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                full_log:
+                  type: string
+                logs:
+                  type: string
+                state:
+                  enum:
+                  - unscheduled
+                  - pending
+                  - running
+                  - completed
+                  - failed
+                  - error
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  depth:
+                    readOnly: true
+                    type: integer
+                  full_log:
+                    type: string
+                  id:
+                    readOnly: true
+                    type: string
+                  logs:
+                    type: string
+                  parent:
+                    readOnly: true
+                    type: string
+                  run:
+                    readOnly: true
+                    type: integer
+                  slug:
+                    readOnly: true
+                    type: string
+                  state:
+                    enum:
+                    - unscheduled
+                    - pending
+                    - running
+                    - completed
+                    - failed
+                    - error
+                  url:
+                    readOnly: true
+                    type: string
+                required:
+                - state
+                - logs
+                - full_log
+    put:
+      operationId: UpdateTask
+      parameters:
+      - description: A UUID string identifying this task.
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                full_log:
+                  type: string
+                logs:
+                  type: string
+                state:
+                  enum:
+                  - unscheduled
+                  - pending
+                  - running
+                  - completed
+                  - failed
+                  - error
+              required:
+              - state
+              - logs
+              - full_log
+        x-name: body
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  depth:
+                    readOnly: true
+                    type: integer
+                  full_log:
+                    type: string
+                  id:
+                    readOnly: true
+                    type: string
+                  logs:
+                    type: string
+                  parent:
+                    readOnly: true
+                    type: string
+                  run:
+                    readOnly: true
+                    type: integer
+                  slug:
+                    readOnly: true
+                    type: string
+                  state:
+                    enum:
+                    - unscheduled
+                    - pending
+                    - running
+                    - completed
+                    - failed
+                    - error
+                  url:
+                    readOnly: true
+                    type: string
+                required:
+                - state
+                - logs
+                - full_log
+  /ponos/v1/task/{id}/artifacts/:
     get:
-      description: Retrieve the full task log as plain text
-      operationId: RetrieveTaskLog
+      operationId: ListTaskArtifacts
       parameters:
       - description: ''
         in: path
@@ -5628,7 +6322,60 @@ paths:
         '200':
           content:
             application/json:
-              schema: {}
+              schema:
+                properties:
+                  s3_url:
+                    type: string
+                  slug:
+                    readOnly: true
+                    type: string
+                  task_id:
+                    type: string
+                required:
+                - task_id
+                - s3_url
+  /ponos/v1/task/{id}/definition/:
+    get:
+      operationId: RetrieveTask
+      parameters:
+      - description: A UUID string identifying this task.
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  command:
+                    type: string
+                  env:
+                    type: object
+                  id:
+                    readOnly: true
+                    type: string
+                  image:
+                    type: string
+                  s3_artifacts_put_url:
+                    readOnly: true
+                    type: string
+                  s3_logs_put_url:
+                    readOnly: true
+                    type: string
+                  slug:
+                    readOnly: true
+                    type: string
+                required:
+                - image
+                - command
+                - env
+  /ponos/v1/task/{id}/log/:
+    get:
+      description: Retrieve the full task log as plain text
+      operationId: RetrieveTaskLog
       security: []
       tags:
       - ponos
@@ -5667,15 +6414,19 @@ paths:
                     items:
                       properties:
                         depth:
+                          readOnly: true
                           type: integer
                         id:
+                          readOnly: true
                           type: string
                         parent:
-                          nullable: true
+                          readOnly: true
                           type: string
                         run:
+                          readOnly: true
                           type: integer
                         slug:
+                          readOnly: true
                           type: string
                         state:
                           enum:
@@ -5689,9 +6440,6 @@ paths:
                           readOnly: true
                           type: string
                       required:
-                      - run
-                      - depth
-                      - slug
                       - state
                     type: array
                 required:
-- 
GitLab