[0.16.1] - 2022-11-11


  • Fix API inconsistency: added wellboreAssetExternalId to WellTops.

[0.16.0] - 2022-11-02



  • Removed is_definitive from TrajectoryIngestion. Setting this value will not cause an error, but it will not have any effect. Trying to _read_ is_definitive on a TrajectoryIngestion will be an error, though.

  • Removed is_definitive from HoleSectionGroupIngestion.

  • Removed the recursive option from WellsClient.sources.delete(). Please delete all the well sources in that source first, and then delete the source.


  • bugfix: Removed the maxItems and minItems constraints on DepthMeasurementRow values. In some cases, the WDL will return no values, for example if you there is a measurement_types filter that is not matching any of the columns. The minItems constraint turned that into an error.

[0.15.12] - 2022-01-24

  • Renamed CogniteWellsClient.rigoperations to CogniteWellsClient.rig_operations

[0.15.11] - 2022-10-21

[0.15.10] - 2022-10-20

[0.15.9] - 2022-10-13

[0.15.8] - 2022-10-10

[0.15.7] - 2022-10-04

  • Added is_definitive and phase to well tops group data frame.

  • Added measurement_types and column_external_ids filters to the function. See the last example in WellsClient.depth_measurements.list_data()

  • Improved depth measurement plotting

    • Show the unit on each curve.

    • Show the name of the depth index.

    • Show the measurement type only if it isn’t "unknown".

    • Fix bug that would draw the plot upside down if the depth was decreasing instead of increasing.

[0.15.6] - 2022-09-21


  • Added phase to hole sections.

  • Added phase to trajectories.

  • Meaning of phase in casings changed to be in line with trajectories, hole sections and well tops.

  • Setting isDefinitive for trajectories, hole sections and casings based on merge rules.

[0.15.5] - 2022-09-12


[0.15.4] - 2022-09-12


  • Improved and detailed data model documentation.

  • Added phase to well tops and set isDefinitive based on merge rules.

[0.15.3] - 2022-09-05


  • Added automatic request chunking, similar to Cognite Python SDK, for ingest(), delete() and retrieve_multiple() functions.

  • Updated data model documentation.

[0.15.2] - 2022-08-17


[0.15.1] - 2022-08-02


  • Added containsAny property to dataAvailability filter for wells.

[0.15.0] - 2022-07-29


  • Removed support for python 3.7. It now requires python >= 3.8

  • Remove unused dependencies

    • cognite-logger

    • numpy

    • nulltype

    • msal

[0.14.9] - 2022-07-27


[0.14.8] - 2022-07-05


  • Added option to filter wells and wellbores based on existance of casing schematics. Please see WellsClient.wells.list().

[0.14.7] - 2022-06-28


[0.14.6] - 2022-06-22


  • WellsClient.sources.list() will no longer throws an exception if the number of sources is 0. This bug was introduced in version 0.13.2.


[0.14.5] - 2022-06-21


  • Added new capabilities to well tops:

    • Added new optional chronostratigraphic property. For chronostratigraphic, you can set one of era, period, epoch, or age to a value in the international chronostratigraphic chart. The chronostratigraphic units that can be inferred will be automatically populated by the api. Eg. if you set period to jurassic, then era will be automatically set to mesozoic. Please see WellsClient.well_tops.ingest() for more information.

    • Added new optional lithostratigraphic property with a level that can be set to either bed, member, formation or group.

    • The validation rules have been relaxed. Well top surface names are no longer required to be unique.


  • For well top surfaces, base is no longer automatically set to the subsequent surface’s top.

[0.14.4] - 2022-06-09


Updated descriptions in hole section models.


Removed deprecated contains_all parameter from ContainsAllOrAnyMeasurementType used for WellsClient.wells.list()

[0.14.3] - 2022-05-18

NDS hole start/end were renamed to hole top/base

  • Deprecated hole_start parameter in favor of hole_top

  • Deprecated hole_end parameter in favor of hole_base

This affects WellsClient.nds.list() and the ingestion model NdsIngestion in WellsClient.nds.ingest()

[0.14.2] - 2022-05-13

[0.14.1] - 2022-05-11


[0.14.0] - 2022-05-09


[0.13.5] - 2022-05-03

This patch only affects the well-structured-file-extractor client.


  • New function for sending larger batches of jobs to the well-structured-file-extractor: <cognite.well_model.wsfe.WellLogExtractorClient.submit_multiple>().

[0.13.4] - 2022-04-27


[0.13.3] - 2022-04-27


  • Fix serialization format for NPT aggregates.

[0.13.2] - 2022-04-25


[0.13.1] - 2022-04-04


  • Added maxDoglegSeverity to Trajectory.

  • If you try to ingest zero elements, the SDK will return an empty list instead of going to the API.

  • Allow users to filter on definitive trajectories in WellsClient.trajectories.list()

[0.13.0] - 2022-03-25


  • Changed the columns for most pandas dataframes to make them more consistent.

    • All .to_pandas() functions take an optional camel_case parameter that by default is set to True to make all columns have camelCase. If camel_case is set to False, columns will be in snake_case.

    • Some data frame values were not serialized correctly. Running to_pandas().to_sql(...) on most data frames would fail because they contained pydantic models. Now all values are either strings, floats, integers, or dates. Complex objects have either been converted into multiple columns (eg. source) or converted to json (eg. list of sources).

    • Please check the example notebook to see how they look.

[0.12.1] - 2022-03-24


[0.12.0] - 2022-03-17


  • The following properties on NPT events are now optional: start_time, end_time.

  • Well.water_depth is now optional. Note that WellIngestion.water_depth has always been optional. This change is effectively removing water_depth from the wells completeness criteria.


[0.11.3] - 2022-03-15


  • The following properties on NDS are now optional: hole_start, hole_end, severity, probability.

[0.11.2] - 2022-03-09


Method to list measurement types details WellsClient.measurement_types.list()

[0.11.1] - 2022-02-24

Only README. No code changes.

[0.11.0] - 2022-02-22


Breaking changes!

[0.10.7] - 2022-02-21


  • New properties on DepthMeasurement: run, producer, startTime, endTime, depthRange.

[0.10.6] - 2022-02-01


[0.10.5] - 2022-02-01


[0.10.4] - 2022-01-31


[0.10.3] - 2022-01-28



  • Added support for experimental Time Series functionality, enable_time_series: bool

  • Added new overwrite: bool to be use instead of deprecated overwrite_sequences: bool

[0.10.2] - 2022-01-28


[0.10.1] - 2022-01-24


[0.10.0] - 2022-01-24


  • Support for Depth Measurements with TVD index.

  • Support for delete sources. To delete a source with existing resources a recursive: bool flag has to be set, then the source and all related resources are deleted.

  • Add datum field on Depth Measurements. If Datum is not set on a Depth Measurement, then the Wellbore datum is used.

  • Extend Trajectory() with max values: maxMeasuredDepth, maxTrueVerticalDepth, maxInclination

  • Added a new well view: WellWellheadView(). This enables a more efficient way to retrieve all the wellheads without any other metadata. It is available on WellsClient.wells.wellheads()


Depth Measurements with TVD index:

NB! breaking change!

To support Depth Measurements with MD and TVD index, a breaking change to DepthMeasurementIngestion model was introduced. measured_depth was changed to depth_column. DepthIndexTypeEnum is used to differentiate between TVD- and MD-indexed measurements.

>>> from cognite.well_model import CogniteWellsClient
>>> wc = CogniteWellsClient()
>>> dm = DepthMeasurementIngestion(
...     wellbore_asset_external_id="assetId",
...     source=SequenceSource(sequence_external_id="VOLVE:seq1", source_name="Volve"),
...     depth_column=DepthIndexColumn(
...         column_external_id="DEPT",
...         unit=DistanceUnit(unit="foot"),
...         type=DepthIndexTypeEnum.true_vertical_depth
...     ),
...     columns=[
...         DepthMeasurementColumn(
...             measurement_type=MeasurementTypes.gamma_ray,
...             column_external_id="GR",
...             unit="gAPI"
...         ),
...     ],
... )
>>> wc.depth_measurements.ingest([dm])

WellsClient.wells.list() supports filtering on Depth Measurements with MD and TVD index.

[0.9.0] - 2022-01-04


Deleting a well with client.wells.delete() has a new recursive: bool parameter. If you want to delete a well that has wellbores attached to it, you need to set the the recursive flag to true, like this:

>>> from cognite.well_model import CogniteWellsClient
>>> c = CogniteWellsClient()
>>> asset_source = AssetSource(asset_external_id="my-well", source_name="A")
>>> c.wells.delete([asset_source], recursive=True)

See delete() for more info.

[0.8.14] - 2021-12-16


Exposed merge_details for wells and wellbores.

>>> from cognite.well_model import CogniteWellsClient
>>> c = CogniteWellsClient()
>>> details_single = c.wells.merge_details(matching_id="15/9-F-15")
>>> details_multiple = c.wells.merge_details(matching_ids=["15/9-F-15"])

It’s also possible to use the .merge_details() function on wells.

>>> from cognite.well_model import CogniteWellsClient
>>> c = CogniteWellsClient()
>>> details_single = c.wells.retrieve(matching_id="15/9-F-15").merge_details()

The API is similar for wellbores.

[0.8.13] - 2021-12-15


  • Set default base_url for the well-structured-file-extractor to production: