external_metadata_fetch_openapi.yml 13 KB
Newer Older
Charles Onojeghuo's avatar
Charles Onojeghuo committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
openapi: "3.0.3"

info:
  title: OSDU External Data Fetch Service
  description: | 
    The OSDU External Data Fetch Service enables you to modulate the metaddata fetch process from external Suppliers. 
  termsOfService: ''
  contact:
    name: OSDU External Data Services team
    url: https://community.opengroup.org/osdu/platform/data-flow/ingestion/external-data-sources/external-data-framework/-/wikis/home#team-members
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 0.1.0
servers:
  - url: https://{awsDevServerUrl}/api/external-metadata-fetch/{version}
    description: AWS Development server
    variables:
      awsDevServerUrl:
        default: demo-aws-dev.osdu.org
        description: Base URL of the AWS OSDU development environment.
      version:
        default: v1
        description: Version of the API
  - url: https://{awsTestServerUrl}/api/external-metadata-fetch/{version}
    description: AWS Test server
    variables:
      awsTestServerUrl:
        default: demo-aws-test.osdu.org
        description: Base URL of the AWS OSDU test environment.
      version:
        default: v1
        description: Version of the API
  - url: https://{azureDevServerUrl}/api/external-metadata-fetch/{version}
    description: Azure Development server
    variables:
      azureDevServerUrl:
        default: demo-azure-dev.osdu.org
        description: Base URL of the Azure OSDU development environment.
      version:
        default: v1
        description: Version of the API
  - url: https://{azureTestServerUrl}/api/external-metadata-fetch/{version}
    description: Azure Test server
    variables:
      azureTestServerUrl:
        default: demo-azure-test.osdu.org
        description: Base URL of the Azure OSDU test environment.
      version:
        default: v1
        description: Version of the API
  - url: https://{gcpDevServerUrl}/api/external-metadata-fetch/{version}
    description: GCP Development server
    variables:
      gcpDevServerUrl:
        default: demo-gcp-dev.osdu.org
        description: Base URL of the GCP OSDU development environment.
      version:
        default: v1
        description: Version of the API
  - url: https://{gcpTestServerUrl}/api/external-metadata-fetch/{version}
    description: GCP Test server
    variables:
      gcpTestServerUrl:
        default: demo-gcp-test.osdu.org
        description: Base URL of the GCP OSDU test environment.
      version:
        default: v1
        description: Version of the API
  - url: https://{ibmDevServerUrl}/api/external-metadata-fetch/{version}
    description: IBM Development server
    variables:
      azureDevServerUrl:
        default: demo-azure-dev.osdu.org
        description: Base URL of the IBM OSDU development environment.
      version:
        default: v1
        description: Version of the API
  - url: https://{ibmTestServerUrl}/api/external-metadata-fetch/{version}
    description: IBM Test server
    variables:
      azureTestServerUrl:
        default: demo-ibm-test.osdu.org
        description: Base URL of the IBM OSDU test environment.
      version:
        default: v1
        description: Version of the API
tags:
  - name: externalmetadata
    description: External MetaData
paths:
  /query:
    get:
      operationId: getExternalMetaDataRequests
      description:  |
        Returns an array of submitted external data job requests from Operator.
      tags:
        - externalmetadata
      responses:
        '200':
          description: |
            200 Ok - returns an array of submitted external data job requests from Operator
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/externalMetaDataRequest'
        '400':
          $ref: "#/components/responses/badRequest"
        '401':
          $ref: "#/components/responses/unauthorized"
        '404':
          $ref: "#/components/responses/notFound"
        '500':
          $ref: "#/components/responses/serverError"
      security:
      - security_auth:
        - externalmetadata.read
  
    post:
      operationId: createExternalMetaDataRequest
      description:  | 
       Creates an external data job requests from Operator.
      tags:
        - externalmetadata
      requestBody:
        description: |
          External Data Request object.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/externalMetaDataRequest'
      responses:
        '201':
          description: | 
            201 OK - record created.
        '204':
          description: | 
            204 No Content - success with no content returned. 
        '400':
          $ref: "#/components/responses/badRequest"
        '401':
          $ref: "#/components/responses/unauthorized"
        '404':
          $ref: "#/components/responses/notFound"
        '500':
          $ref: "#/components/responses/serverError"
      security:
      - security_auth:
        - externalmetadata.write
  
  /query/{connectedSourceDataJobInstanceID}:
    get:
      operationId: getExternalMetaDataRequest
      description:  |
        Returns a submitted external data job request from Operator using an instance guid.
      tags:
        - externalmetadata
      parameters:
        - name: connectedSourceDataJobInstanceID
          description: GUID for a single external data request.
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: |
            200 Ok - returns a submitted external data job request from Operator using an instance guid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/externalMetaDataRequest'
        '400':
          $ref: "#/components/responses/badRequest"
        '401':
          $ref: "#/components/responses/unauthorized"
        '404':
          $ref: "#/components/responses/notFound"
        '500':
          $ref: "#/components/responses/serverError"
      security:
      - security_auth:
        - externalmetadata.read

  /status:
    get:
      operationId: getExternalMetaDataRequestsStatus
      description:  |
        Returns an array of job status information from Supplier for submitted external data job requests from Operator.
      tags:
        - externalmetadata
      responses:
        '200':
          description: |
            200 Ok - returns an array of job status information from Supplier for submitted external data job requests from Operator.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/externalMetaDataRequestStatus'
        '400':
          $ref: "#/components/responses/badRequest"
        '401':
          $ref: "#/components/responses/unauthorized"
        '404':
          $ref: "#/components/responses/notFound"
        '500':
          $ref: "#/components/responses/serverError"
      security:
      - security_auth:
        - externalmetadata.read

  /status/{connectedSourceDataJobInstanceID}:
    get:
      operationId: getExternalMetaDataRequestStatus
      description:  |
        Returns the job status information from a Supplier for of a single submitted external data job request from Operator using an instance guid.
      tags:
        - externalmetadata
      parameters:
        - name: connectedSourceDataJobInstanceID
          description: GUID for a single external data request.
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: |
            200 Ok - returns the job status information from a Supplier for of a single submitted external data job request from Operator using an instance guid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/externalMetaDataRequestStatus'
        '400':
          $ref: "#/components/responses/badRequest"
        '401':
          $ref: "#/components/responses/unauthorized"
        '404':
          $ref: "#/components/responses/notFound"
        '500':
          $ref: "#/components/responses/serverError"
      security:
      - security_auth:
        - externalmetadata.read

  /records/{connectedSourceDataJobInstanceID}:
    get:
      operationId: getExternalDataResponse
      description:  |
        Returns the processe response from the Supplier corresponding to a single job request from an Operator
      tags:
        - externalmetadata
      parameters:
        - name: connectedSourceDataJobInstanceID
          description: GUID for a single external data request.
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: |
            200 Ok - returns the processed response from the Supplier corresponding to a single job request from an Operator
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/externalMetaDataResponse'
        '400':
          $ref: "#/components/responses/badRequest"
        '401':
          $ref: "#/components/responses/unauthorized"
        '404':
          $ref: "#/components/responses/notFound"
        '500':
          $ref: "#/components/responses/serverError"
      security:
      - security_auth:
        - externalmetadata.read
 
components:
  schemas:
    externalMetaDataRequest:
      type: object
      properties:
        connectedSourceDataJobInstanceID:
          type: string
        connectedSourceDataJobFilter:
          $ref: "#/components/schemas/connectedSourceDataJobFilter"
        createTime:
          type: string
          format: date-time
    connectedSourceDataJobFilter:
      type: object
      properties:
        kind:
          type: string
          example: "osdu:wks:master-data--WellLog:1.0.1"
        limit:
          type: integer
        query:
          type: string
        queryAsOwner:
          type: boolean
        returnedFields:
          type: array
          items:
            type: string
        offset:
          type: integer
    externalMetaDataRequestStatus:
      type: object
      properties:
        connectedSourceDataJobInstanceID:
          type: string
        status:
          type: string
          enum:
            - "NOT_STARTED"
            - "IN_PROGRESS"
            - "COMPLETED"
        createTime:
          type: string
          format: date-time
        modifyTime:
          type: string
          format: date-time

    externalMetaDataResponse:
      type: object
      properties:
        connectedSourceDataJobInstanceID:
          type: string
        results:
          type: array
          items:
             $ref: "#/components/schemas/searchResults"
    searchResults:
      type: object
      properties:
        data:
          type: object
        kind:
          type: string
        namespace:
          type: string
        legal:
          type: object
        id:
          type: string
        acl:
          type: object
        version:
          type: integer
          format: int64
        type:
          type: string
        tags:
          type: object
        createTime:
          type: string
        createUser:
          type: string
        modifyTime:
          type: string
        modifyUser:
          type: string
        ancestry:
          type: object
        meta: 
          type: object
    AppError:
      type: object
      properties:
        code:
          type: integer
        reason:
          type: string
        message:
          type: string  
  responses:
    badRequest:
      description:
        400 Bad Request - invalid parameters were given on the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppError'
    unauthorized:
      description: |
        401 Unauthorized - the call lacks proper authentication credentials 
        for the resource requested when authentication is possible. 
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppError'
    notFound:
      description: |
        404 Not Found - the requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppError'
    serverError:
      description: |
        500 Internal Server Error - an internal server error occurred.
      content:
        application/json:
          schema:
             $ref: '#/components/schemas/AppError'
  securitySchemes:
    security_auth:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: /oauth/authorize
          tokenUrl: /oauth/token
          refreshUrl: /oauth/token
          scopes:
            externalmetadata.read: Read
            externalmetadata.write: Create
        clientCredentials:
          tokenUrl: /oauth/token
          refreshUrl: /oauth/token
          scopes:
            externalmetadata.read: Read
            externalmetadata.write: Create