Skip to content

Scientific exchange profiles and catalog API

Status: version 1 pilot profiles for the native backend. Not OSDU certification or a stable general-purpose SDK. Conformance is a representation check, not geological truth, native application editing or approval for engineering use.

POST /api/v1/projects/{project}/catalog/describe accepts:

{"reference":{"project_id":"my-project","asset_id":"my-asset","revision":"13"}}

Use a project-scoped read delegate from the Developer page in an independent API client, with Authorization: Bearer …, no browser cookies or Origin header. Credentials are short-lived and depend on the issuing browser session. The project in the body must match the path and credential. Native permissions are rechecked. The browser uses /api/catalog/describe with its session and CSRF protection.

Results include exact reference, native authority, profile status, scientific/source metadata, units, sample/null counts, finite range and available representations. Unsupported kinds return unsupported; malformed representations report nonconformant. Neither result silently substitutes a newer revision. Revisions remain decimal strings, including values beyond JavaScript’s safe integer range.

A curve contains 1–100,000 values and the same number of finite, strictly increasing measured depths in metres. Well identity, depth reference, mnemonic and value units are explicit. Missing values use protobuf JSON "NaN"; infinity is rejected. An explicitly unknown depth reference is permitted but cannot justify conversion to true vertical depth. LAS ingestion normalizes declared feet to metres and retains the original bytes when publication is approved. No horizontal location is inferred.

A regular row-major grid contains width×height values, up to 100,000 cells. Its origin identifies sample centers; positive x step advances columns, positive y step is the magnitude of descending row coordinates. Values and coordinate units are distinct. Metadata value units must match payload units.

Metadata declares CRS status (unknown/local/source-declared/verified), a CRS for source-declared/verified status, coordinate units and a vertical-reference object. This validator checks the representation, not the truth of a claimed CRS verification. Connector spatial validation remains required. Horizontal CRS does not establish vertical datum, elevation meaning or a safe vertical conversion.

The retained original is identified by SHA-256. Verify it after downloading. Normalized data carries scientific samples and metadata; rendered images are previews. A recorded derivation retains declared exact inputs and operations but does not alone prove that the full execution environment was captured. Metadata includes declared conversion losses; styles and native edit histories are not implied.

Platform ships contracts/scientific/v1/ with synthetic curve/map fixtures and:

Terminal window
PYTHONPATH=services python -m project_gateway.validate_exchange snapshot.json

Run from the Platform checkout with Pydantic 2 installed. No running Ophiolite server, database, identity provider or UI is required. A passing check prints profile, sample/null counts and finite range; failure exits nonzero. These are repository tools; component source distribution and a public stable SDK remain separate decisions.

Breaking scientific meaning requires a new profile version and migration guidance. An OSDU adapter must independently qualify its service/payload mappings, permissions, exact reads and recovery against these contracts.

Synthetic fixtures: well curve and scalar map. The curve has three samples, one null and finite range 10–30. The map has four samples, one null and finite range 1–4. Coordinates and datum are deliberately unknown; these are not field data.