{
  "openapi": "3.0.3",
  "info": {
    "title": "Dataset Service Api",
    "contact": {
      "name": "SLB Customer Support for Digital",
      "url": "https://customersupport.digital.slb.com"
    },
    "description": "The Dataset service provides API endpoints to allow an application or user to register datasets in Data Platform.<br>\nThe service has been delivered by the OSDU community to register instructions to enable Dataset upload. Dataset could be a single file, collection of files, seismic datasets etc.\n\nDataset service today is similar to File service in the context of data flow services, i.e it supports creating file metadata records to upload a file.<br>\nBut the File service doesn't support metadata creation for file collections. So, If client wants to register File collection they can use Dataset Service to register a single/collection of files.\n\n**Note** that the existing metadata, upload and download endpoints of the File service will be deprecated. The scope of the File service will be limited to storage of files without association of any metadata, upload or download..<br>\nIt is recommended that all new applications who are getting onboarded on OSDU use Dataset Service instead of directly interacting with File Service.\n\n```plain {% title=\"Client ID\" %}\n963f2cc6915e479fa0fcb73ec2ec90e7\n```\n",
    "version": "1.0",
    "x-product-id": "OSDU-Dataset-Service"
  },
  "servers": [
    {
      "url": "https://as5.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (SGP)"
    },
    {
      "url": "https://br5.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB SaaS OSDU (BRS)"
    },
    {
      "url": "https://eu5.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (WEU)"
    },
    {
      "url": "https://eu6.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB SaaS OSDU (EUT)"
    },
    {
      "url": "https://eu7.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (MDE)"
    },
    {
      "url": "https://us5.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (PSC)"
    },
    {
      "url": "https://us7.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (USC)"
    },
    {
      "url": "https://us8.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (WUS)"
    },
    {
      "url": "https://as6.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (SAS)"
    },
    {
      "url": "https://eu8.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (SWC)"
    },
    {
      "url": "https://as7.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (MYW)"
    },
    {
      "url": "https://za1.api.enterprisedata.slb.com/api/dataset/v1",
      "description": "SLB Saas OSDU (ZAN)"
    }
  ],
  "tags": [
    {
      "name": "dataset-dms-api",
      "description": "Dataset Dms Api"
    },
    {
      "name": "dataset-registry-api",
      "description": "Dataset Registry Api"
    },
    {
      "name": "Info",
      "description": "Build and git information"
    }
  ],
  "paths": {
    "/retrievalInstructions": {
      "get": {
        "tags": [
          "dataset-dms-api"
        ],
        "summary": "retrievalInstructions",
        "description": "Gets a signed URL for downloading a single file associated with the unique `id` of the file. (similar to /downloadURL in File Service).\n\n **Required roles**: 'users.datalake.viewers or users.datalake.editors or users.datalake.ops or users.datalake.admin'",
        "operationId": "retrievalInstructionsUsingGET",
        "parameters": [
          {
            "name": "data-partition-id",
            "in": "header",
            "description": "tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "id",
            "required": true,
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expiryTime",
            "in": "query",
            "description": "The duration for which the signed URL remains valid. Accepted Regex patterns are \\\"^[0-9]+M$\\\", \\\"^[0-9]+H$\\\", \\\"^[0-9]+D$\\\" denoting Integer values in Minutes, Hours, Days respectively. In absence of this parameter the URL would be valid for 1 Hour.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "5M"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetrievalInstructionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "dataset-dms-api"
        ],
        "summary": "retrievalInstructions",
        "description": "Gets a list of signed URLs to download multiple files by providing a list of file ids.\n\n**Required roles**: 'users.datalake.viewers or users.datalake.editors or users.datalake.ops or users.datalake.admin'",
        "operationId": "retrievalInstructionsUsingPOST",
        "parameters": [
          {
            "name": "data-partition-id",
            "in": "header",
            "description": "tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expiryTime",
            "in": "query",
            "description": "The duration for which the Signed URL remains valid. Accepted Regex patterns are \\\"^[0-9]+M$\\\", \\\"^[0-9]+H$\\\", \\\"^[0-9]+D$\\\" denoting Integer values in Minutes, Hours, Days respectively. In absence of this parameter the URL would be valid for 1 Hour.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "5M"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDatasetRegistryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetrievalInstructionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/storageInstructions": {
      "post": {
        "tags": [
          "dataset-dms-api"
        ],
        "summary": "storageInstructions",
        "description": "Gets a temporary signed URL to upload a dataset (File or collection of files. Service does not upload the file by itself, User needs to use this URL to upload the file). The generated URL is time bound and by default expires by 7 days maximum.\n\nUser will receive a FileSource in the response. This is the relative path where the uploaded file will persist. Once the file is uploaded, FileSource can then be used to register the dataset.\n\n**Required roles**: 'users.datalake.editors or users.datalake.admin'",
        "operationId": "storageInstructionsUsingPOST",
        "parameters": [
          {
            "name": "data-partition-id",
            "in": "header",
            "description": "tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kindSubType",
            "in": "query",
            "description": "Specify the dataset that will be uploaded:\n  - dataset--File - signed URL to upload a single file\n  - dataset--FileCollection - signed URL to upload a collection of files",
            "required": true,
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expiryTime",
            "in": "query",
            "description": "The Time for which Signed URL to be valid. Accepted Regex patterns are \\\"^[0-9]+M$\\\", \\\"^[0-9]+H$\\\", \\\"^[0-9]+D$\\\" denoting Integer values in Minutes, Hours, Days respectively. In absence of this parameter the URL would be valid for 1 Hour.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "5M"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDatasetStorageInstructionsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/getDatasetRegistry": {
      "get": {
        "tags": [
          "dataset-registry-api"
        ],
        "summary": "getDatasetRegistry",
        "description": "Gets the latest version of Dataset Registry record identified by the given id (similar to GET /{id}/metadata in File Service).\n\n**Required roles**: 'service.storage.creator or service.storage.admin or service.storage.viewer'",
        "operationId": "getDatasetRegistryUsingGET",
        "parameters": [
          {
            "name": "data-partition-id",
            "in": "header",
            "description": "tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "id",
            "required": true,
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCreateUpdateDatasetRegistryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "dataset-registry-api"
        ],
        "summary": "getDatasetRegistry",
        "description": "Gets list of Dataset Registy records identified by a list of IDs.\n\n**Required roles**: 'service.storage.creator or service.storage.admin or service.storage.viewer'",
        "operationId": "getDatasetRegistryUsingPOST",
        "parameters": [
          {
            "name": "data-partition-id",
            "in": "header",
            "description": "tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDatasetRegistryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCreateUpdateDatasetRegistryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/registerDataset": {
      "put": {
        "tags": [
          "dataset-registry-api"
        ],
        "summary": "createOrUpdateDatasetRegistry",
        "description": "This API registers dataset metadata record for a file that is already uploaded. The Metadata is linked to the file via `FileSource` provided in the request body.\n\nIf `FileSource` attribute is missing in the request body or there is no file present, then the request fails with an error.\n\nWhen metadata is successfully updated in the system, it returns the `Id` of the file metadata record.\n\n(Simillar to POST /metadata endpoint in File service).\n\n**Required roles**: 'service.storage.creator or service.storage.admin'",
        "operationId": "createOrUpdateDatasetRegistryUsingPUT",
        "parameters": [
          {
            "name": "data-partition-id",
            "in": "header",
            "description": "tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDatasetRegistryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCreateUpdateDatasetRegistryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/revokeURL": {
      "post": {
        "tags": [
          "dataset-dms-api"
        ],
        "summary": "Revoke previously generated URLs for Dataset",
        "description": "Revoke previously generated URLs associated with a specific dataset kind subtype (Eg - dataset--File.Generic).\n\n**Required roles**: 'users.datalake.admin'",
        "operationId": "revokePreviouslyGeneratedURLsUsingPOST",
        "parameters": [
          {
            "name": "data-partition-id",
            "in": "header",
            "description": "tenant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kindSubType",
            "in": "query",
            "description": "subType of the kind (partition:wks:kindSubType:version)\nexample = \"dataset--File.Generic\"",
            "required": true,
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Revoked URLs successfully"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "403": {
            "description": "User not authorized to perform the action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/info": {
      "get": {
        "tags": [
          "Info"
        ],
        "summary": "Version info",
        "description": "For deployment available public `/info` endpoint,  which provides build and git related information.",
        "operationId": "Version info",
        "responses": {
          "200": {
            "description": "Version info.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VersionInfo"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Acl": {
        "title": "Acl",
        "type": "object",
        "properties": {
          "owners": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "viewers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CreateDatasetRegistryRequest": {
        "title": "CreateDatasetRegistryRequest",
        "type": "object",
        "properties": {
          "datasetRegistries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Record"
            }
          }
        }
      },
      "GetCreateUpdateDatasetRegistryResponse": {
        "title": "GetCreateUpdateDatasetRegistryResponse",
        "type": "object",
        "properties": {
          "datasetRegistries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Record"
            }
          }
        }
      },
      "GetDatasetRegistryRequest": {
        "title": "GetDatasetRegistryRequest",
        "type": "object",
        "properties": {
          "datasetRegistryIds": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "slb-osdu-prod-des-prod-testing:dataset--File.Generic:64090fbfbd974cfdb9d329f22315071e"
            }
          }
        }
      },
      "GetDatasetStorageInstructionsResponse": {
        "title": "GetDatasetStorageInstructionsResponse",
        "type": "object",
        "properties": {
          "providerKey": {
            "type": "string",
            "example": "AZURE"
          },
          "storageLocation": {
            "type": "object",
            "properties": {
              "signedUrl": {
                "type": "string",
                "example": "https://osdur3mvpdp1de077ydata.blob.core.windows.net/file-staging-area/osdu-user%2F1649762844211-2022-04-12-11-27-24-211%2F0d133009928c46fb89d3dddcac2be1a4?sv=2020-08-04&se=2022-04-19T11%3A27%3A24Z&sr=b&sp=cw&sig=O6Brob670mmggFt3zu742sCiw89LzBIREVv1lD%2FoXEY%3D\","
              },
              "fileSource": {
                "type": "string",
                "example": "/osdu-user/1649762844211-2022-04-12-11-27-24-211/0d133009928c46fb89d3dddcac2be1a4"
              },
              "createdBy": {
                "type": "string",
                "example": "osdu-user"
              }
            }
          }
        }
      },
      "Legal": {
        "title": "Legal",
        "type": "object",
        "properties": {
          "legaltags": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "otherRelevantDataCountries": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "compliant",
              "incompliant"
            ]
          }
        }
      },
      "Record": {
        "title": "Record",
        "required": [
          "acl",
          "id",
          "kind"
        ],
        "type": "object",
        "properties": {
          "acl": {
            "$ref": "#/components/schemas/Acl"
          },
          "ancestry": {
            "$ref": "#/components/schemas/RecordAncestry"
          },
          "data": {
            "$ref": "#/components/schemas/files"
          },
          "id": {
            "pattern": "^[\\w\\-\\.]+:[\\w-\\.]+:[\\w\\-\\.\\:\\%]+$",
            "type": "string",
            "description": "Unique identifier in whole Data Ecosystem. When not provided, Data Ecosystem will create and assign an id to the record. Must follow the naming convention: {Data-Partition-Id}:{object-type}:{uuid}.",
            "example": "common:work-product-component--wellLog:123456"
          },
          "kind": {
            "type": "string",
            "description": "Record kind for which the schema information is applied to.",
            "example": "common:wks:work-product-component--wellLog:1.0.0"
          },
          "legal": {
            "$ref": "#/components/schemas/Legal"
          },
          "meta": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "tags": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "version": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "RecordAncestry": {
        "title": "RecordAncestry",
        "type": "object",
        "properties": {
          "parents": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "RetrievalInstructionResponse": {
        "title": "RetrievalInstructionResponse",
        "type": "object",
        "properties": {
          "providerKey": {
            "type": "string",
            "example": "AZURE"
          },
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "datasetRegistryId": {
                  "type": "string",
                  "example": "slb-osdu-prod-des-prod-testing:dataset--File.Generic:64090fbfbd974cfdb9d329f22315071e"
                },
                "retrievalProperties": {
                  "type": "object",
                  "properties": {
                    "signedUrl": {
                      "type": "string",
                      "example": "https://osdur3mvpdp1de077ydata.blob.core.windows.net/file-persistent-area/osdu-user%2F1649749998819-2022-04-12-07-53-18-819%2F58022e86b5f141ec82ff9ae6ddbd96b6?sv=2020-08-04&se=2022-04-19T10%3A47%3A44Z&sr=b&sp=r&sig=MKRWLr9weeZGPtUTcd8iiWfOlnm1KTuHtZoxJOnFOGA%3D"
                    },
                    "createdBy": {
                      "type": "string",
                      "example": "osdu-user"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "files": {
        "title": "File Metadata",
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/AbstractDataset"
          },
          {
            "$ref": "#/components/schemas/AbstractFile"
          },
          {
            "$ref": "#/components/schemas/AbstractCommonResources"
          }
        ],
        "properties": {
          "ExtensionProperties": {
            "title": "File DMS Extension Properties",
            "type": "object",
            "properties": {
              "Name": {
                "description": "The name of the file. Note- this is an additional property, which is not part of OSDU File.1.0.0",
                "example": "File",
                "title": "File Name",
                "type": "string"
              },
              "Classification": {
                "description": "The well-known entity classification code.",
                "example": "Raw File",
                "title": "File Classification",
                "type": "string"
              },
              "Description": {
                "description": "A text describing the entity.",
                "example": "An text further describing this file example.",
                "title": "Entity Description",
                "type": "string"
              },
              "ExternalIds": {
                "description": "An array of identities (e.g. some kind if URL to be resolved in an external data store) which links to external realizations of the same entity.",
                "format": "link",
                "items": {
                  "type": "string"
                },
                "title": "Array of External IDs",
                "type": "array"
              },
              "FileDateCreated": {
                "description": "The UTC date time of the file creation",
                "example": "2013-03-22 11:16:03+00:00",
                "format": "date-time",
                "title": "Creation Date and Time",
                "type": "string"
              },
              "FileDateModified": {
                "description": "The UTC date time of the last file modification",
                "example": "2013-03-22 11:16:03+00:00",
                "format": "date-time",
                "title": "Last Modification Date and Time",
                "type": "string"
              },
              "FileContentsDetails": {
                "$ref": "#/components/schemas/fileDetails"
              }
            }
          }
        },
        "description": "The file data container containing all necessary details of the file record"
      },
      "AbstractCommonResources": {
        "title": "OSDU AbstractCommonResources",
        "type": "object",
        "properties": {
          "ResourceHomeRegionID": {
            "type": "string",
            "description": "The name of the home [cloud environment] region for this OSDU resource object.",
            "pattern": "^[\\\\w\\\\-\\\\.]+:reference-data\\\\-\\\\-OSDURegion:[\\\\w\\\\-\\\\.\\\\:\\\\%]+:[0-9]*$"
          },
          "ResourceHostRegionIDs": {
            "type": "array",
            "description": "The name of the host [cloud environment] region(s) for this OSDU resource object.",
            "items": {
              "type": "string",
              "pattern": "^[\\\\w\\\\-\\\\.]+:reference-data\\\\-\\\\-OSDURegion:[\\\\w\\\\-\\\\.\\\\:\\\\%]+:[0-9]*$"
            }
          },
          "ResourceCurationStatus": {
            "type": "string",
            "description": "Describes the current Curation status.",
            "pattern": "^[\\\\w\\\\-\\\\.]+:reference-data\\\\-\\\\-ResourceCurationStatus:[\\\\w\\\\-\\\\.\\\\:\\\\%]+:[0-9]*$"
          },
          "ResourceLifecycleStatus": {
            "type": "string",
            "description": "Describes the current Resource Lifecycle status.",
            "pattern": "^[\\\\w\\\\-\\\\.]+:reference-data\\\\-\\\\-ResourceLifecycleStatus:[\\\\w\\\\-\\\\.\\\\:\\\\%]+:[0-9]*$"
          },
          "ResourceSecurityClassification": {
            "type": "string",
            "description": "Classifies the security level of the resource.",
            "pattern": "^[\\\\w\\\\-\\\\.]+:reference-data\\\\-\\\\-ResourceSecurityClassification:[\\\\w\\\\-\\\\.\\\\:\\\\%]+:[0-9]*$"
          },
          "Source": {
            "type": "string",
            "description": "The entity that produced the record, or from which it is received; could be an organization, agency, system, internal team, or individual. For informational purposes only, the list of sources is not governed."
          },
          "ExistenceKind": {
            "type": "string",
            "description": "Where does this data resource sit in the cradle-to-grave span of its existence?",
            "pattern": "^[\\\\w\\\\-\\\\.]+:reference-data\\\\-\\\\-ExistenceKind:[\\\\w\\\\-\\\\.\\\\:\\\\%]+:[0-9]*$"
          }
        }
      },
      "AbstractDataset": {
        "title": "OSDU AbstractDataset",
        "type": "object",
        "required": [
          "DatasetProperties"
        ],
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name of dataset, e.g. a user friendly file or file collection name."
          },
          "Description": {
            "type": "string",
            "description": "An optional, textual description of the dataset."
          },
          "TotalSize": {
            "type": "string",
            "description": "Total size of the dataset in bytes; for files it is the same as declared in FileSourceInfo.FileSize or the sum of all individual files. Implemented as string. The value must be convertible to a long integer (sizes can become very large).",
            "pattern": "^[0-9]+$"
          },
          "EncodingFormatTypeID": {
            "type": "string",
            "description": "EncodingFormatType ID reference value relationship. It can be of mime-type or media-type.",
            "pattern": "^srn:<namespace>:reference-data\\\\/EncodingFormatType:[^:]+:[0-9]*$"
          },
          "SchemaFormatTypeID": {
            "type": "string",
            "description": "Schema Format Type ID reference value relationship.",
            "pattern": "^srn:<namespace>:reference-data\\\\/SchemaFormatType:[^:]+:[0-9]*$"
          },
          "Endian": {
            "description": "Endianness of binary value. Enumeration- \\BIG\\ \\LITTLE\\.  If absent applications will need to interpret from context indicators.",
            "type": "string",
            "enum": [
              "BIG",
              "LITTLE"
            ],
            "example": "BIG"
          },
          "DatasetProperties": {
            "type": "object",
            "description": "Dataset Properties"
          }
        }
      },
      "AbstractFile": {
        "title": "OSDU AbstractFile",
        "type": "object",
        "required": [
          "DatasetProperties"
        ],
        "properties": {
          "DatasetProperties": {
            "type": "object",
            "description": "The dataset properties for a single file.",
            "properties": {
              "FileSourceInfo": {
                "$ref": "#/components/schemas/AbstractFileSourceInfo"
              }
            }
          },
          "Checksum": {
            "description": "MD5 checksum of file bytes - a 32 byte hexadecimal number",
            "type": "string",
            "pattern": "^[0-9a-fA-F]32}$"
          }
        }
      },
      "AbstractFileSourceInfo": {
        "title": "OSDU AbstractFileSourceInfo",
        "required": [
          "FileSource"
        ],
        "properties": {
          "Name": {
            "type": "string",
            "description": "user-friendly file name. if provided then the user can download file with the same name and content type using downloadURL API."
          },
          "FileSource": {
            "type": "string",
            "description": "Relative file path for the data in the file"
          },
          "PreloadFileCreateUser": {
            "type": "string",
            "description": "Optional user name or reference, who created the file prior to up-loading to the platform."
          },
          "PreloadFileCreateDate": {
            "type": "string",
            "description": "Optional create date and time of the file prior to uploading to the platform."
          },
          "PreloadFileModifyUser": {
            "type": "string",
            "description": "Optional user name or reference, who last modified the file prior to up-loading to the platform."
          },
          "PreloadFileModifyDate": {
            "type": "string",
            "description": "Optional last modified date and time of the file prior to up-loading to the platform."
          },
          "FileSize": {
            "type": "string",
            "description": "Length of file in bytes. Implemented as string. The value must be convertible to a long integer (sizes can become very large)."
          },
          "EncodingFormatTypeID": {
            "type": "string",
            "description": "Encoding Format Type ID",
            "pattern": "^srn:<namespace>:reference-data\\\\/EncodingFormatType:[^:]+:[0-9]*$"
          },
          "Checksum": {
            "type": "string",
            "description": "Checksum of file bytes - a hexadecimal number with even number of bytes.",
            "pattern": "^([0-9a-fA-F]{2})+$"
          },
          "ChecksumAlgorithm": {
            "type": "string",
            "description": "The name of the checksum algorithm e.g. MD5, SHA-256."
          }
        }
      },
      "fileDetails": {
        "title": "Opaque/Generic File Content Details",
        "type": "object",
        "properties": {
          "TargetKind": {
            "title": "Target Schema ID",
            "type": "string",
            "description": "The target kind or schema ID which is to be used by the parser.",
            "example": "os:npd:wellbore:1:*.*"
          },
          "FileType": {
            "title": "File Type",
            "type": "string",
            "description": "Type of File to decide what kind of ingestion to be triggered",
            "example": "csv"
          },
          "FrameOfReference": {
            "title": "Frame of Reference for data present in file.",
            "type": "array",
            "description": "The list metaItem definitions which maps a named frame of reference symbol or name to the self-contained persistableReference.",
            "items": {
              "$ref": "#/components/schemas/metaItem"
            }
          },
          "ParentReference": {
            "title": "Parent Reference",
            "type": "string",
            "description": "The parent reference for this file.",
            "example": "CSBE0417"
          }
        },
        "description": "Further information about File being uploaded."
      },
      "metaItem": {
        "title": "Frame of Reference Meta Data Item (FoR of File)",
        "required": [
          "kind",
          "persistableReference"
        ],
        "type": "object",
        "additionalProperties": {
          "type": "object"
        },
        "properties": {
          "kind": {
            "title": "Reference Kind",
            "type": "string",
            "description": "The kind of reference, unit, measurement, CRS or azimuth reference.",
            "enum": [
              "CRS",
              "Unit",
              "Measurement",
              "AzimuthReference",
              "DateTime"
            ]
          },
          "name": {
            "title": "Name or Symbol",
            "type": "string",
            "description": "The name of the CRS or the symbol/name of the unit",
            "example": "[\"NAD27 * OGP-Usa Conus / North Dakota South [32021,15851]\",\"ft\"]"
          },
          "persistableReference": {
            "title": "Persistable Reference",
            "type": "string",
            "description": "The persistable reference string uniquely identifying the CRS or Unit",
            "example": "{\"scaleOffset\":{\"scale\":0.3048006096012192,\"offset\":0.0},\"symbol\":\"ftUS\",\"baseMeasurement\":{\"ancestry\":\"Length\",\"type\":\"UM\"},\"type\":\"USO\"}"
          },
          "propertyNames": {
            "title": "Attribute Names",
            "type": "array",
            "description": "The list of property names, to which this meta data item provides Unit/CRS context to. Data structures, which come in a single frame of reference, can register the property name, others require a full path like \"data.structureA.propertyB\" to define a unique context.",
            "example": [
              "elevationFromMsl",
              "\"totalDepthMdDriller",
              "wellHeadProjected"
            ],
            "items": {
              "type": "string"
            }
          },
          "propertyValues": {
            "title": "Attribute Names",
            "type": "array",
            "description": "The list of property values, to which this meta data item provides Unit/CRS context to. Typically a unit symbol is a value to a data structure; this symbol is then registered in this propertyValues array and the persistableReference provides the absolute reference.",
            "example": [
              "F",
              "ftUS",
              "deg"
            ],
            "items": {
              "type": "string"
            }
          },
          "uncertainty": {
            "title": "Uncertainty",
            "type": "number",
            "description": "The uncertainty of the values measured given the unit or CRS unit."
          }
        },
        "description": "A meta data item, which allows the association of named properties or property values to a Unit/Measurement/CRS/Azimuth/Time context."
      },
      "ApplicationError": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorModel"
          }
        },
        "description": "An error that occurs during normal application logic."
      },
      "ErrorModel": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          },
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          }
        }
      },
      "VersionInfo": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "description": "Maven artifact group ID."
          },
          "actifactId": {
            "type": "string",
            "description": "Maven artifact ID."
          },
          "version": {
            "type": "string",
            "description": "Maven artifact version"
          },
          "buildTime": {
            "type": "string",
            "description": "Maven artifact build time"
          },
          "branch": {
            "type": "string",
            "description": "Current git branch"
          },
          "commitId": {
            "type": "string",
            "description": "Latest commit hash"
          },
          "commitMessage": {
            "type": "string",
            "description": "Latest commit message"
          },
          "connectedOuterServices": {
            "type": "array",
            "description": "Connected outer services information",
            "items": {
              "$ref": "#/components/schemas/ConnectedOuterService"
            }
          }
        },
        "description": "Version info."
      },
      "ConnectedOuterService": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Connected outer service name."
          },
          "version": {
            "type": "string",
            "description": "Connected outer service version."
          }
        },
        "description": "Connected outer service information."
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "User Token from SLB Authenticator Service"
      }
    }
  }
}