Skip to content
Last updated

Studies

The studies API is responsible for study data within FDPlan.

The key API concepts include:

  • studies: A study covers the allocation of time and resources to gain knowledge of an asset, identify potential opportunities and threats, derive and evaluate candidate development scenarios, and make critical decisions in field-development planning. It can also be referred to as an asset evaluation project or a conceptual field-development planning project. You can have several studies for different stages of field-development planning, such as one study for the appraisal stage and another for the concept selection stage.

  • KPOs: A key performance objective (KPO) is an objective that is critical to the success of the project. Typically, three to five objectives are identified as key objectives.

  • KPIs: A key performance indicator (KPI) represents the performance of the current development scenario compared with the key performance objective, for example, net present value (NPV), internal rate of return (IRR), payback period, date of first oil, maximum exposure, and proven reserves.

  • decisions: A decision must be made or has been made to define the field-development plan. It can contain one or more available choices to select. A decision is made when one of the available choices is selected.

  • choices: A choice is an option you can choose to make a decision. It can also be referred to as a concept. There can be multiple available choices in making a decision. A choice can be available or unavailable, and can be selected or unselected.

  • scenarios: A scenario is a combination of development choices that describes a particular way to develop a field. It can also be referred to as a development scenario, a concept, or a development option.

  • deliverables: A deliverable is a work item in which you can manage the life cycle of the required data or the documents for a study. It holds the information on the status of the domain contribution, the contributors, the approvers, and the due date. A contribution that fulfills a deliverable is referred to as an 'data source'.

Client ID

  • prod-nam-services-fdplan.slbservice.com
  • prod-eu-services-fdplan.slbservice.com
  • prod-au-services-fdplan.slbservice.com
  • prod-id-services-fdplan.slbservice.com
  • production-services-fdplan.slbservice.com

Table of contents

Get the list of Key Performance Indicators (KPIs).

Returns the tenant-wide catalog of Key Performance Indicators (KPIs) - the reusable metrics such as NPV, IRR, payback period, or first-oil date that studies target through their KPOs. The catalog includes both built-in system KPIs and any custom KPIs registered for the partition, and is paginated with the pageNumber and pageSize parameters.

Parameters

  • slb-partition-id Data partition id.

  • pageNumber The number of the page in the list of KPIs

  • pageSize The number of KPIs per page

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/kpis'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "items": [ { "name": "First Year Capex", "isSystem": false, "lastUpdated": { "atDate": "2022-03-08T08:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "description": "Capital Expenditures at first year", "type": "Money", "defaultObjectiveOperator": "Less Than", "unit": "M$", "priority": 11, "archived": false }, { "name": "First Oil", "isSystem": false, "lastUpdated": { "atDate": "2022-03-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "description": "Date of First Oil", "type": "Date", "defaultObjectiveOperator": "Before", "priority": 14, "archived": false } ] }

Back to table of contents

Update an existing Key Performance Indicator (KPI) or create a new one.

Registers a new custom Key Performance Indicator (KPI) or updates an existing one, identified by its immutable kpiName. Use this to extend the partition catalog with metrics beyond the built-in system KPIs. Returns 201 when a KPI is created and 200 when an existing one is updated; built-in system KPIs cannot be modified.

Parameters

  • slb-partition-id Data partition id.

  • kpiName The name of the KPI to update or create.

  • data The KPI details to update or create.

Example

curl -request PUT
--url 'https://api.delfi.slb.com/fdplan/studies/v1/kpis/{kpiName}'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'
--data '{ "description": "Capital Expenditures at first year", "type": "Money", "defaultObjectiveOperator": "Less Than", "unit": "M$", "priority": 11, "archived": false, "measurement": "osdu:reference-data--UnitOfMeasure:1E6%20USD:" }'

Response: 200

Back to table of contents

Get all studies

Returns all studies visible to the caller in the current partition.

Parameters

  • slb-partition-id Data partition id.
Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/studies'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "items": [ { "id": "01CP3E6EJJ25J29YHZ0K4RDZH8", "title": "Robin Field Development", "description": "New development opportunity.", "country": "US", "isArchived": false, "workflowSpec": { "id": "01FDYW0CS3RS1Z9BHE53DATBDE", "version": 1 } }, { "id": "02DSFJLKJL34HGH6DFLKGJJ9L8", "title": "Forties Field Development", "description": "Workover project.", "country": "UK", "isArchived": false, "workflowSpec": { "id": "01FDYW0CS3V4V36DVSTH7BJNBY", "version": 2 } } ] }

Back to table of contents

Create a new study

Creates a new study for an investment opportunity, specifying the evaluation workflow specification and the access control groups that govern it. The returned study ID becomes the correlation key that ties every downstream scenario, deliverable, and result back to this study.

Parameters

  • slb-partition-id Data partition id.

  • study The study that needs to be created.

Example

curl -request POST
--url 'https://api.delfi.slb.com/fdplan/studies/v1/studies'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'
--data '{ "title": "Robin Field Development", "description": "New development opportunity.", "workflowSpecId": "01CP3E6EJJ25J29YHZ0K4RDZH8", "workflowSpecVersion": 1, "legalTags": [ "legal-tag" ], "acl": { "owners": [ "data.default.owners@data-partition-id.enterprisedata.slb.com", "data.team.owners@data-partition-id.enterprisedata.slb.com" ], "viewers": [ "data.default.viewers@data-partition-id.enterprisedata.slb.com", "data.team.viewers@data-partition-id.enterprisedata.slb.com" ] } }'

Response: 201 { "id": "01CP3E6EJJ25J29YHZ0K4RDZH8", "title": "Robin Field Development", "description": "New development opportunity.", "country": "US", "isArchived": false, "noOfRealizations": 10, "uncertaintyMethod": "MonteCarlo", "workflowSpec": { "id": "01FDYW0CS3ZZB1FS2NCK01WVDX", "version": 1 }, "acl": { "owners": [ "data.default.owners@data-partition-id.enterprisedata.slb.com", "data.team.owners@data-partition-id.enterprisedata.slb.com" ], "viewers": [ "data.default.viewers@data-partition-id.enterprisedata.slb.com", "data.team.viewers@data-partition-id.enterprisedata.slb.com" ] } }

Back to table of contents

Get a study

Returns the full detail of a single study identified by its study ID, including its workflow specification, uncertainty settings, legal tags, and audit metadata.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study to get.

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/studies/{studyId}'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "id": "01CP3E6EJJ25J29YHZ0K4RDZH8", "title": "Robin Field Development", "country": "US", "isArchived": false, "noOfRealizations": 10, "uncertaintyMethod": "MonteCarlo", "workflowSpec": { "id": "01FDYW0CS3GYWBH7S080PMJ66F", "version": 1 }, "acl": { "owners": [ "data.default.owners@data-partition-id.enterprisedata.slb.com", "data.team.owners@data-partition-id.enterprisedata.slb.com" ], "viewers": [ "data.default.viewers@data-partition-id.enterprisedata.slb.com", "data.team.viewers@data-partition-id.enterprisedata.slb.com" ] } }

Back to table of contents

Delete a study.

Permanently deletes the study identified by its study ID, along with the scenarios, deliverables, and results correlated with it. This action cannot be undone.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study to delete.

Example

curl -request DELETE
--url 'https://api.delfi.slb.com/fdplan/studies/v1/studies/{studyId}'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 204

Back to table of contents

Update a study.

Applies partial updates to an existing study using JSON-Patch replace operations, for example to change its title, description, or uncertainty configuration.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study to be updated.

  • patches The patches to apply to the study. Only "replace" operation is supported.

Example

curl -request PATCH
--url 'https://api.delfi.slb.com/fdplan/studies/v1/studies/{studyId}'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'
--data '[ { "op": "replace", "path": "title", "value": "title" }, { "op": "replace", "path": "description", "value": "description" } ]'

Response: 200 { "id": "01CP3E6EJJ25J29YHZ0K4RDZH8", "title": "Robin Field Development", "description": "New development opportunity.", "country": "US", "isArchived": false, "noOfRealizations": 10, "uncertaintyMethod": "MonteCarlo", "workflowSpec": { "id": "01FDYW0CS3ZZB1FS2NCK01WVDX", "version": 1 }, "acl": { "owners": [ "data.default.owners@data-partition-id.enterprisedata.slb.com", "data.team.owners@data-partition-id.enterprisedata.slb.com" ], "viewers": [ "data.default.viewers@data-partition-id.enterprisedata.slb.com", "data.team.viewers@data-partition-id.enterprisedata.slb.com" ] } }

Back to table of contents

Get all KPOs

Returns the Key Performance Objectives (KPOs) defined for the given study - the per-study targets that bind a referenced KPI to an objective operator and threshold value used to judge scenario success. Requires the studyId of the study whose objectives are being read.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study which KPOs belongs to.

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/kpos?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "items": [ { "name": "ATMaxEx", "description": "After Tax Maximum Exposure", "objectiveOperator": "Less Than", "objectiveValue": "600", "type": "Money", "unit": "M$" }, { "name": "ATNPV", "description": "After Tax Net Present Value", "objectiveOperator": "More than", "objectiveValue": "500", "type": "Money", "unit": "M$" } ] }

Back to table of contents

Get all scenarios

Returns all scenarios in the given study, each with its answered decisions and the choice selected for that scenario. A scenario represents one candidate development option evaluated against the study's workflow specification. Requires the studyId of the owning study.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study which Scenarios/Decisions/Choices belongs to.

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/scenarios?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "items": [ { "id": "01CP3E6EJJ25J29YHZ0K4RDZH8", "displayID": "S1", "title": "Minimal investment", "description": "Minimal investment development option scenario.", "lastUpdated": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "created": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "isSelected": false, "colour": "#ff0000", "associatedDevelopmentConceptId": "01CP3E6EJJ25J29YHZ0K4ANIH8" }, { "id": "01CP3E6EJJ25J29YHZ0K4RSDFI4", "displayID": "S2", "title": "Maximum investment", "description": "Maximum investment development option scenario.", "lastUpdated": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "created": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "isSelected": false, "colour": "#ff0000", "associatedDevelopmentConceptId": "01CP3E6EJJ25J29YHZ0K4ANIH8" } ] }

Back to table of contents

Create a new scenario

Creates a new scenario in the given study as a candidate development option. An ensemble to hold the scenario's realizations is provisioned automatically; only the scenario title is required.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study in which scenario will be created.

  • scenario The scenario that needs to be created.

Example

curl -request POST
--url 'https://api.delfi.slb.com/fdplan/studies/v1/scenarios?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'
--data '{ "title": "Minimal investment", "colour": "#ff0000", "description": "Minimal investment development option scenario.", "isSelected": false, "associatedOpportunityIDs": [ "01CP3E6EJJ25J29YHZ0K4ANABC", "01CP3E6EJJ25J29YHZ0K4ANDEF" ] }'

Response: 201 { "id": "01CP3E6EJJ25J29YHZ0K4RDZH8", "displayID": "S1", "title": "Minimal investment", "description": "Minimal investment development option scenario.", "lastUpdated": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "created": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "isSelected": false, "colour": "#ff0000", "version": 2, "associatedDevelopmentConceptId": "01CP3E6EJJ25J29YHZ0K4ANIH8", "associatedOpportunityIDs": [ "01CP3E6EJJ25J29YHZ0K4ANABC", "01CP3E6EJJ25J29YHZ0K4ANDEF" ] }

Back to table of contents

Delete a scenario

Deletes the scenario identified by scenarioId from the given study, together with its ensemble and the results associated with it.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study to which the scenario belongs.

  • scenarioId The id of the scenario to delete.

Example

curl -request DELETE
--url 'https://api.delfi.slb.com/fdplan/studies/v1/scenarios?scenarioId=value&studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 204

Back to table of contents

Update a scenario

Applies partial updates to an existing scenario using JSON-Patch replace operations. The title, description, displayID, colour, and isSelected fields can be updated; set isSelected to feature a scenario above the others in the same study.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study id which the scenario belong to.

  • scenarioId The id of the scenario to update.

  • patches The patches to apply to the scenario. Only "replace" operation is supported.

Example

curl -request PATCH
--url 'https://api.delfi.slb.com/fdplan/studies/v1/scenarios?scenarioId=value&studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'
--data '[ { "op": "replace", "path": "title", "value": "title" }, { "op": "replace", "path": "description", "value": "description" } ]'

Response: 200 { "id": "01CP3E6EJJ25J29YHZ0K4RDZH8", "displayID": "S1", "title": "Minimal investment", "description": "Minimal investment development option scenario.", "lastUpdated": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "created": { "atDate": "2020-09-08T09:53:36.000Z", "byEvent": "01EHPJ54HEA77K95T5KPH5JSW9", "byUser": "user@slb.com" }, "isSelected": false, "colour": "#ff0000", "version": 2, "associatedDevelopmentConceptId": "01CP3E6EJJ25J29YHZ0K4ANIH8", "associatedOpportunityIDs": [ "01CP3E6EJJ25J29YHZ0K4ANABC", "01CP3E6EJJ25J29YHZ0K4ANDEF" ] }

Back to table of contents

Get scenario results state

Returns the computed run state of a scenario - the data source processing and results publishing status of its ensemble, broken down per realization. Use this to track evaluation progress for the given studyId and scenarioId.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study from which to get the results state.

  • scenarioId The scenario from which to get the results state.

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/scenarios/results-state?scenarioId=value&studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "dataSource": { "id": "01EY46YV3JXND9NM0T70HABRXF", "version": 1 }, "dataSourceProcessingErrors": [ ], "dataSourceProcessingState": "CompletedSuccessfully", "lastUpdated": "2021-02-09T20:56:46.000Z", "realizationStates": [ { "uri": "01HGWMW4HWETWWFZCA1Z0C453Z/realizations/01HGWQMY95XHSCDKSBYRZ8P67M", "computationStates": [ { "address": { "computationIndex": 0, "dataTypeIndex": 0, "type": "Computation" }, "runState": "CompletedSuccessfully" }, { "address": { "computationIndex": 1, "dataTypeIndex": 0, "type": "Computation" }, "runState": "CompletedSuccessfully" } ], "lastUpdatedAt": "2021-02-09T20:53:55.000Z", "resultsErrors": [ ], "state": "CompletedSuccessfully", "version": 11 } ], "resultsPublishingErrors": [ ], "resultsPublishingState": "CompletedSuccessfully" }

Back to table of contents

Get all deliverables

Returns the deliverables for the given study - the required input slots that must be fulfilled with data sources before a scenario can be evaluated. Optionally filter to a single scenario with scenarioId; otherwise all deliverables for the study are returned.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study which the deliverables belong to.

  • scenarioId The optional scenario which the deliverables belong to. If not specified all deliverables for given study will be returned.

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/deliverables?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "items": [ { "id": "01CKXHZPAEERP06F3CNKBAPE0F", "title": "Decline Curves", "description": "Decline curves for Robin field.", "status": "Requested", "attachmentType": "decline-curves", "attachmentTypeVersion": 1 }, { "id": "01CKXHZPAEERP06F3SDFKJ567F", "title": "Facility Constraints", "description": "Facility Constraints for Robin field.", "status": "Requested", "attachmentType": "facility-constraints", "attachmentTypeVersion": 1 } ] }

Back to table of contents

Get a deliverable

Returns the full detail of a single deliverable, including its assigned data source, status, contributors, approvers, and due date. Requires the owning studyId alongside the deliverableId.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study which the deliverable belongs to.

  • deliverableId The ID of the deliverable to get.

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/deliverables/{deliverableId}?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200 { "id": "01CKXHZPAEERP06F3CNKBAPE0F", "title": "title", "description": "Decline curves for Robin field.", "status": "Requested", "attachmentType": "decline-curves", "attachmentTypeVersion": 1 }

Back to table of contents

Update a deliverable

Applies partial updates to an existing deliverable using JSON-Patch replace and remove operations, for example to assign a data source or advance its approval status. The title, description, owner, contributors, approvers, due date, status, comments, and data source fields can be updated; the remove operation is only supported for the dataSource path.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study which the deliverable belong to.

  • deliverableId The ID of the deliverable to update.

  • patches The patches to apply to the deliverable. Only "replace" and "remove" operations are supported. The "remove" operation is only supported for the "dataSource" path.

Example

curl -request PATCH
--url 'https://api.delfi.slb.com/fdplan/studies/v1/deliverables/{deliverableId}?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'
--data '[ { "op": "replace", "path": "title", "value": "title" }, { "op": "replace", "path": "description", "value": "description" } ]'

Response: 200 { "id": "01CKXHZPAEERP06F3CNKBAPE0F", "title": "title", "description": "description", "status": "Requested", "attachmentType": "decline-curves", "attachmentTypeVersion": 1 }

Back to table of contents

Get the list of opportunities for the given study.

Returns the opportunities registered for the given study. Requires the studyId and is paginated with the pageNumber and pageSize parameters.

Parameters

  • slb-partition-id Data partition id.

  • studyId The study

  • pageNumber The number of the page in the list of Opportunities

  • pageSize The number of Opportunities per page

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/opportunities?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200

Back to table of contents

Get ranking scores for the scenarios in the given study ID.

Returns the ranking scores computed for the scenarios in the given study, used to compare and rank candidate development options. Set includeCriteriaScores to also return the per-criterion score breakdown; results are paginated with the pageNumber and pageSize parameters.

Parameters

  • slb-partition-id Data partition id.

  • studyId The ID of the study for which to get the scenario ranking scores

  • pageNumber The number of the page in the list of ranking scores.

  • pageSize The number of ranking scores per page.

  • includeCriteriaScores Whether to include criteria scores break-down in the response

Example

curl -request GET
--url 'https://api.delfi.slb.com/fdplan/studies/v1/scenario-ranking-scores?studyId=value'
--header 'Authorization: value'
--header 'appkey: value'
--header 'content-type: application/json'
--header 'slb-partition-id: header'

Response: 200

Back to table of contents