Tutorial: Work with seismic data by using Seismic DDMS APIs
This tutorial demonstrates how to utilize Seismic Domain Data Management Services (DDMS) APIs with cURL to manage seismic data within an Azure Data Manager for Energy instance.
In this tutorial, you learn how to:
- Register a data partition for seismic data.
- Utilize Seismic DDMS APIs to store and retrieve seismic data.
For more information about DDMS, see DDMS concepts.
Prerequisites
- An Azure subscription
- An instance of Azure Data Manager for Energy created in your Azure subscription
- cURL command-line tool installed on your machine
- Generate the service principal access token to call the Seismic APIs. See How to generate auth token.
Get your Azure Data Manager for Energy instance details
To proceed, gather the following details from your Azure Data Manager for Energy instance via the Azure portal:
Parameter | Description | Example | Where to find this value |
---|---|---|---|
client_id |
Application (client) ID | 00001111-aaaa-2222-bbbb-3333cccc4444 |
You use this app or client ID when registering the application with the Microsoft identity platform. See Register an application |
client_secret |
Client secret | _fl****************** |
Sometimes called an application password, a client secret is a string value that your app can use in place of a certificate to identity itself. See Add a client secret. |
tenant_id |
Directory (tenant) ID | 72f988bf-86f1-41af-91ab-xxxxxxxxxxxx |
Hover over your account name in the Azure portal to get the directory or tenant ID. Alternatively, search for and select Microsoft Entra ID > Properties > Tenant ID in the Azure portal. |
base_url |
Instance URL | https://<instance>.energy.azure.com |
Find this value on the overview page of the Azure Data Manager for Energy instance. |
data_partition_id |
Data partition name | opendes |
Find this value on the overview page of the Azure Data Manager for Energy instance. |
access_token |
Access token value | 0.ATcA01-XWHdJ0ES-qDevC6r........... |
Follow How to generate auth token to create an access token and save it. |
Use Seismic DDMS APIs to store and retrieve seismic data
Create a legal tag
Create a legal tag that is automatically added to the Seismic DDMS environment for data compliance.
API: Setup > Create Legal Tag for SDMS
curl --request POST \
--url https://{base_url}/api/legal/v1/legaltags \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--header 'Data-Partition-Id: {data_partition_id}' \
--data '{
"name": "{tag_name}",
"description": "Legal Tag added for Seismic",
"properties": {
"countryOfOrigin": [
"US"
],
"contractId": "No Contract Related",
"expirationDate": "2099-01-01",
"dataType": "Public Domain Data",
"originator": "OSDU",
"securityClassification": "Public",
"exportClassification": "EAR99",
"personalData": "No Personal Data"
}
}'
Sample Response:
{
"name": "opendes-Seismic-Legal-Tag-Test999588567444",
"description": "Legal Tag added for Seismic",
"properties": {
"countryOfOrigin": [
"US"
],
"contractId": "No Contract Related",
"expirationDate": "2099-01-01",
"originator": "OSDU",
"dataType": "Public Domain Data",
"securityClassification": "Public",
"personalData": "No Personal Data",
"exportClassification": "EAR99"
}
}
For more information, see Manage legal tags.
Verify the service
Run basic service connection and status tests in your Azure Data Manager for Energy instance.
API: Service Verification > Check Status
curl --request GET \
--url http://{base_url}/seistore-svc/api/v3/svcstatus \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--header 'data-partition-id: {data_partition_id}'
Sample Response:
service OK
Tenant
Create a tenant in your Azure Data Manager for Energy instance.
Note
You must register a data partition as a tenant before using it with the Seismic DDMS.
API: Tenant > Register a seismic-dms tenant
curl --request POST \
--url https://{base_url}/seistore-svc/api/v3/tenant/{data_partition_id} \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--data '{
"gcpid": "{data_partition_id}",
"esd": "{data_partition_id}.dataservices.energy",
"default_acl": "users.datalake.admins@opendes.dataservices.energy"
}'
Sample Response:
{
"name": "opendes",
"esd": "opendes.dataservices.energy",
"gcpid": "opendes",
"default_acls": "users.datalake.admins@opendes.dataservices.energy,users.datalake.ops@opendes.dataservices.energy",
"Symbol(id)": {
"partitionKey": "tn-opendes",
"name": "opendes"
}
}
Create a subproject
Create a subproject in your Azure Data Manager for Energy instance.
API: Subproject > Create a new subproject
curl --request POST \
--url https://{base_url}/seistore-svc/api/v3/subproject/tenant/{data_partition_id}/subproject/{sesimic_subproject} \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--header 'ltag: opendes-Seismic-Legal-Tag-Test999943387766' \
--data '{
"admin": "client_id",
"access_policy": "dataset"
}'
Sample Response:
{
"name": "test999384006",
"tenant": "opendes",
"ltag": "",
"acls": {
"admins": [
"data.sdms.opendes.test999384006.3a114f91-d79f-489e-b9f0-3a4ac6643924.admin@opendes.dataservices.energy"
],
"viewers": [
"data.sdms.opendes.test999384006.3bbce754-bdfa-4fad-9672-cc9a49231058.viewer@opendes.dataservices.energy"
]
},
"access_policy": "dataset",
"enforce_key": true,
"gcs_bucket": "ss-cloud-lr8faf2xnup9yxd",
"Symbol(id)": {
"partitionKey": "sp-test999384006",
"name": "test999384006"
}
}
Register a dataset
Register a dataset in your Azure Data Manager for Energy instance.
API: Dataset > Register a new dataset
curl --request POST \
--url https://{base_url}/seistore-svc/api/v3/dataset/tenant/{data_partition_id}/subproject/{seismic_subproject}/dataset/{dataset_name} \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--header 'ltag: {legal_tag}' \
--data '{
"admin": "client_id",
"storage_class": "MULTI_REGIONAL",
"storage_location": "US",
"access_policy": "dataset",
"acls": {
"admins": [
"data.default.owners@opendes.dataservices.energy"
],
"viewers": [
"data.default.viewers@opendes.dataservices.energy"
]
}
}'
Sample Response:
{
"name": "test.sgy",
"tenant": "opendes",
"subproject": "test999384006",
"path": "/",
"ltag": "opendes-Seismic-Legal-Tag-Test999943387766",
"created_by": "faK96PJHh5W-AzMK_dERdxkBBssUYVuqDjzYJcw9Al0",
"last_modified_date": "Mon Mar 17 2025 12:43:38 GMT+0000 (Coordinated Universal Time)",
"created_date": "Mon Mar 17 2025 12:43:38 GMT+0000 (Coordinated Universal Time)",
"acls": {
"admins": [
"data.default.owners@opendes.dataservices.energy"
],
"viewers": [
"data.default.viewers@opendes.dataservices.energy"
]
},
"gcsurl": "ss-cloud-sfibby9ril9i755-915f80ed-4804-448a-bfa5-2e70934a97a2",
"ctag": "TQsxLjyufohTOFvfopendes;opendes",
"Symbol(id)": {
"partitionKey": "ds-opendes-test999384006-3fdd95ea0c79eb59dcb2acc48ed1d1eb057a5f94debacffac4d8e88410c5cb2804d9ba68473ea20d2d91d143b64b755e4627ad87e89530ade1cd9614a8a53545",
"name": "test.sgy"
},
"access_policy": "dataset",
"sbit": "WSUmTxkL20jQSlKW",
"sbit_count": 1
}
Register applications
Register applications in your Azure Data Manager for Energy instance.
API: Applications > Register a new application
curl --request POST \
--url 'https://{base_url}/seistore-svc/api/v3/app?email={email}&sdpath={sdpath}' \
--header 'Authorization: Bearer {access_token}'
Sample Response:
Status Code: 200
Next step
As an alternative user experience to Postman, you can use the sdutil command-line Python tool to directly interact with Seismic Store. Use the following tutorial to get started:
For more information on the Seismic REST APIs in Azure Data Manager for Energy, see the OpenAPI specifications available in the adme-samples GitHub repository.