-
David Diederich authoredDavid Diederich authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
api.yaml 12.04 KiB
openapi: "3.0.1"
info:
description: "This is a set of APIs that are provided for Domain Data Management Service (DDMS) developers."
version: "1.0.0"
title: "DELFI Data Ecosystem Domain Extensions Services"
termsOfService: "http://osdu.opengroup.org/terms/"
contact:
email: "osdu-sre@opengroup.org"
servers:
- url: https://api.{environment}.csp.opengroup.org/dataecosystem
variables:
environment:
default: p4d
enum:
- evd
- evt
- p4d
tags:
- name: "registration"
description: "APIs for registration"
externalDocs:
description: "Find out more"
url: "https://test.devportal.apigee.io/solutions/dataecosystem/tutorials"
security:
- Bearer: []
paths:
"/registration/v1/ddms":
post:
tags:
- "registration"
summary: "Add a new DDMS to the Data Ecosystem"
description: "Create a DDMS registration."
operationId: "postDMS"
parameters:
- $ref: "#/components/parameters/correlation-id"
- $ref: "#/components/parameters/data-partition-id"
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/DMSOpenAPISpec'
- $ref: '#/components/schemas/DMSBasicSpec'
example:
name: logDMS
description: "This DDMS is used to manage log data."
contact:
email: "osdu-sre@opengroup.org"
servers:
- url: "https://logstore/v1"
spec: "REST"
description: "Global logstore deployment"
isMultiDataPartition: true
responses:
'200':
description: "Given DDMS has been registered."
headers:
"correlation-id":
$ref: "#/components/headers/correlation-id"
content:
application/json:
schema:
$ref: '#/components/schemas/DMSId'
default:
description: "Unexpected error"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
get:
tags:
- "registration"
summary: "List DMSs registered in the Data Ecosystem"
description: "List DMSs registrations."
operationId: "listDMS"
parameters:
- $ref: "#/components/parameters/correlation-id"
- $ref: "#/components/parameters/data-partition-id"
responses:
'200':
description: "List of registered DMSs."
headers:
"correlation-id":
$ref: "#/components/headers/correlation-id"
content:
application/json:
schema:
$ref: '#/components/schemas/DMSList'
default:
description: "Unexpected error"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"/registration/v1/ddms/{id}":
get:
tags:
- "registration"
summary: "Get DMSs registered in the Data Ecosystem"
description: "Get DDMS registration."
operationId: "getDMS"
parameters:
- $ref: "#/components/parameters/correlation-id"
- $ref: "#/components/parameters/data-partition-id"
- name: id
in: path
required: true
description: The id of the DDMS to retrieve
schema:
type: string
responses:
'200':
description: "Registered DDMS."
headers:
"correlation-id":
$ref: "#/components/headers/correlation-id"
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/DMSOpenAPISpec'
- $ref: '#/components/schemas/DMSBasicSpec'
default:
description: "Unexpected error"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"/registration/v1/types":
get:
tags:
- "registration"
summary: "List types registered in the Data Ecosystem"
description: "List types registrations."
operationId: "listTypes"
parameters:
- $ref: "#/components/parameters/correlation-id"
- $ref: "#/components/parameters/data-partition-id"
- name: dmsId
in: query
description: The id of the DDMS to filter the types on
schema:
type: string
responses:
'200':
description: "List of registered types."
headers:
"correlation-id":
$ref: "#/components/headers/correlation-id"
content:
application/json:
schema:
$ref: '#/components/schemas/TypeList'
default:
description: "Unexpected error"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"/registration/v1/types/{id}":
get:
tags:
- "registration"
summary: "Get type registered in the Data Ecosystem"
description: "Get type registration."
operationId: "getType"
parameters:
- $ref: "#/components/parameters/correlation-id"
- $ref: "#/components/parameters/data-partition-id"
- name: id
in: path
required: true
description: The id of the type to retrieve
schema:
type: string
responses:
'200':
description: "Registered type."
headers:
"correlation-id":
$ref: "#/components/headers/correlation-id"
content:
application/json:
schema:
$ref: '#/components/schemas/Type'
default:
description: "Unexpected error"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
components:
headers:
correlation-id:
description: "Shared DELFI correlation id. Same as input one if provided, a new one otherwise."
required: true
schema:
type: string
examples:
basic:
value: "123456789"
parameters:
correlation-id:
name: "correlation-id"
in: "header"
description: "Shared DELFI correlation id"
schema:
type: string
examples:
basic:
value: "123456789"
data-partition-id:
name: "data-partition-id"
in: "header"
description: "DELFI data partition id"
required: true
schema:
type: string
examples:
osdu:
value: "opendes"
customer:
value: "my-NAM"
Osdu-Data-Legal:
name: "Osdu-Data-Legal"
in: "header"
description: "Stringified json of legal object associated with this wellbore"
schema:
type: string
examples:
basic:
value: "{\"tag\":\"osdu-default\"}"
summary: "Basic legal information"
withAncestry: # Distinct name
value: "{\"tag\":\"osdu-default\",\"ancestry\":{}}"
summary: "Legal information containing ancestry applicable to derived data"
Osdu-Data-Acl:
name: "Osdu-Data-Acl"
in: "header"
schema:
description: "Stringified json of access control list associated with this wellbore"
type: string
examples:
basic:
value: "[{\"role\":\"viewer\", \"members\":[\"data.default.viewers@my-company-nam.osdu.opengroup.org\"]}]"
summary: "Basic legal information"
schemas:
DMSOpenAPISpec:
description: "OpenAPI specification for a DDMS. Root level annotation with x-osdu-data-ddms-name and x-osdu-data-isMultiDataPartition is required. x-osdu-data-ddms-name must match the name parameter."
title: "DMSOpenAPISpec"
type: object
properties:
id:
type: string
example: "logDMS"
name:
type: string
example: "logDMS"
openAPI:
type: object
example:
{}
DMSBasicSpec:
description: "Basic registration details for a DDMS."
title: "DMSBasicSpec"
type: object
properties:
id:
type: string
example: "logDMS"
name:
type: string
example: "logDMS"
description:
type: string
example: "This DDMS is used to manage log data."
contact:
type: object
properties:
email:
type: string
example: "osdu-sre@opengroup.org"
servers:
type: array
items:
properties:
url:
type: string
description: "A URL to the target host."
example: "https://logstore/v1"
type:
type: string
description: "Type of the endpoints server is providing."
enum:
- REST
- gRPC
example: REST
description:
type: string
description: "An optional string describing the host designated by the URL."
example: "Global logstore endpoint"
isMultiDataPartition:
type: boolean
description: "Indicating if DDMS is single or multitenant. Set to true if it is multitenant."
example: false
apiKey:
type: string
description: "An optional apiKey for the DDMS."
example: "12345678"
required:
- url
- type
- isMultiDataPartition
DMSId:
description: "Id of the registered DDMS"
properties:
id:
type: string
example: "logDMS1"
DMSList:
type: array
items:
anyOf:
- $ref: "#/components/schemas/DMSOpenAPISpec"
- $ref: "#/components/schemas/DMSBasicSpec"
Type:
description: "OpenAPI specification for a DDMS. Root level annotation with x-osdu-data-ddms-name is required and it must match name parameter."
title: "DMSOpenAPISpec"
type: object
properties:
id:
type: string
example: "logDMS:log"
name:
type: string
example: "log"
server:
type: string
example: "https://logstore/v1"
operations:
type: object
properties:
get:
type: object
properties:
path:
type: string
example: "/logs/{id}"
parameters:
type: array
items:
$ref: "#/components/schemas/Parameter"
example:
- name: "data-partition-id"
in: "header"
- name: "id"
in: "path"
TypeList:
type: array
items:
$ref: "#/components/schemas/Type"
Parameter:
required:
- name
- in
properties:
name:
type: string
example: "id"
in:
type: string
enum:
- header
- path
- query
example: "path"
Error:
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
securitySchemes:
# This section configures basic authentication with an API key.
Bearer:
type: apiKey
name: "Authorization"
in: "header"
googleIdToken:
description: "This API uses OAuth2 Google Id Token implicit grant flow."
type: oauth2
flows:
implicit:
authorizationUrl: ""
x-google-issuer: "https://accounts.google.com"
x-google-jwks_uri: "https://www.googleapis.com/oauth2/v3/certs"
x-google-audiences: "245464679631-ktfdfpl147m1mjpbutl00b3cmffissgq.apps.googleusercontent.com"
scopes: {}