Introduction

The Project Plan API facilitates system integration, providing a mechanism to get versioned data from DrillPlan.

The collection of APIs is used to list the available projects on a data-partition, the plans within a given project, the artifacts within a given plan and finally a specific artifact.

As the data models change over time, new versions may be introduced, hence some artifacts will be available in multiple versions. It is recommended to use the latest version of each artifact type, and to adopt the latest version when this becomes available. Superseded versions are only guaranteed support for 6 months, although we often maintain support for longer.

Glossary:

It is recommended that the users of this API have some familiarity with the DrillPlan Application. A useful resource would be the DrillPlan Help Documentation. The following items are summarized below:

  • Data-partition: A data-partition is layer for data separation. There can be multiple data-partitions within a DELFI Account and Contract.

  • Project: Within a data-partition there are multiple projects. A project is used to manage the planning of a particular well and contains:

    • Well header information such as Name, UWI (unique well identifier), Operator, Country, Elevation, CRS, Corporate Profile (rule-sets used for governance), unit system selection etc.
    • Tasks and project management
    • Team management: A list of users known as team members who have access to the project
    • Reports
    • Plans
  • Plan: A project can contain multiple plans. One plan is always designated as the "master" plan and other plans can be used to evaluate competing design concepts, contingencies etc. A plan is a fundamental layer in the DrillPlan collaboration model and contains all the elements of the well design e.g. Surface Locations, Wellbores, Trajectories, Target, Formation Tops, Temperature Curves, Pressure Windows, Wellbore Geometries, Sections, Drilling Fluid Programs, Drilling Runs and Activities, Risks, BHAs, Operating Parameters, Cement Programs, Detailed Casing/Liner/Tieback string design, AFE (Costs) etc.

How to get DrillPlan Data

  1. Find the DrillPlan project

    Caller can query DrillPlan projects using one of the following APIs:

    1. Query all DrillPlan projects:

    By calling the GET /projects/pages API,​ the paginated project list will be returned according to the following schema. This API is accessible with either user identity or service identity. However, please note that a user is only allowed to fetch data from projects they have joined.

    Example response body(click to open)
    {
      "projects": [
        {
          "project_id": "string",
          "project_name": "string",
          "well_name": "string",
          "country": "string",
          "created_by": "string",
          "create_date": "string",
          "is_invitation_only": true,
          "joined": true
        }
      ],
      "page_index": 1,
      "total_pages": 1,
      "total_items": 1
    }
    1. Get user joined project list:

    Users can also retrieve all project that they have joined in DrillPlan. To do this, call the GET /projects/joined API,​ the user joined project list will be returned according to the following schema. This API is only accessible by user identity and will return empty list when called by a service identity.

    Example response body(click to open)
    [
      {
        "project_id": "string",
        "project_name": "string",
        "well_name": "string",
        "country": "string",
        "created_by": "string",
        "create_date": "string",
      }
    ]
  2. Get plan list by Project Id:

The list of plans within a specific project can be retrieved using the **GET /plans/by-project/{projectId}**​ endpoint. It will return a plan list according to the following schema.

Example response body(click to open)
[
  {
    "id": "string",
    "name": "string",
    "isMaster": true,
    "status": 0,
    "shareTime": "2022-09-06T01:41:50.717Z",
    "shareBy": "string"
  }
]

User can find the master plan by filtering on the isMaster boolean property.

  1. Get artifact index for a given plan:

Call GET /plans/{planId}/artifact-index​ to get the plan data structure (well, wellbores, sections, runs) and available artifact list. The corresponding artifact links can then be used to fetch the corresponding data.

Example response body(click to open)
[
  {
    "planName": "string",
    "planStatus": 0,
    "dataPartitionId": "string",
    "lastUpdateTime": "2022-09-06T03:19:45.828Z",
    "well": {
      "name": "string",
      "id": "string"
    },
    "wellbores": [
      {
        "name": "string",
        "id": "string",
        "parentWellbore": "string"
      }
    ],
    "sections": [
      {
        "name": "string",
        "id": "string",
        "wellboreId": "string"
      }
    ],
    "runs": [
      {
        "displayName": "string",
        "id": "string",
        "type": "string",
        "sectionId": "string"
      }
    ],
    "artifacts": [
      {
        "wellboreId": "string",
        "sectionId": "string",
        "runId": "string",
        "artifactType": "string",
        "artifactLink": "string"
      }
    ]
  }
]
  1. Get a specific artifact file:

Use the artifact link returned by the artifact-index API to get specific artifact file. The artifact file can be in WISTML, Json or other format. The artifact link follows the pattern of GET /plans/{planId}/artifacts/{id}/{artifactType} Note: For examples of artifacts, please refer to the end of the document.

  1. Get DrillPlan editor links:

Call GET /plans/{planId}/application-links to get direct links of DrillPlan editors (object). This can be useful to edit most of the artifacts details by directly accessing the relevant editor.

Example response body(click to open)
[
  {
    "node_id": "string",
    "name": "string",
    "wellbore_id": "string",
    "section_id": "string",
    "run_id": "string",
    "node_type": "string",
    "editor_link": "string"
  }
]
  1. Call GET /plans/{planId}/application-review-states to know the DrillPlan object's state during the course of planning. This object state (or application review state) can be used to determine its current status, such as "in progress," "in review," "in approval," "rejected," or "completed."
Example response body(click to open)
[
  {
    "node_id": "string",
    "node_type": "string",
    "name": "string",
    "review_state": "InProgress"
  }
]

Artifact Examples

The following table includes some example artifacts that can be retrieved using the API. The list of artifacts will increase over time, so it is recommended to use the Project Plan API to retrieve the latest list.

ArtifactType Name
ActivityPlan_public_v1_xml
ActivityPlan_public_v1_xsd
Bha_v1_witsml141
Bha_v6_witsml141
Boundaries_v1_witsml141
Casing_v4_witsml141
Casing_v6_witsml141
Cementing_v3_witsml20
DigitalCementPlan_v1
DrillingFluid_v1_witsml141
DrillingFluid_v4_witsml141
DrillingRun_v1_witsml141
DrillingRun_v2_witsml141
DynamicWellControl_v1_witsml141
DynamicWellControl_v1_witsml141_xsd
EffectiveWBGAtEnd_v4_witsml141
EffectiveWBGAtEnd_v5_witsml141
FormationTops_v1_witsml141
Liner_v4_witsml141
Liner_v6_witsml141
PressureWindow_v1_witsml141
Rig_v1_witsml141
Rig_v2_witsml141
Risks_v2_witsml141
SurveyProgram_v1_witsml141
Targets_v1_witsml141
Temperature_v1_witsml141
Tieback_Cementing_v3_witsml20
Tieback_v4_witsml141
Tieback_v6_witsml141
ToleranceTunnel_v1_json
ToolCode_v1_json
Trajectory_v1_witsml141
TrajectoryInterpolated_v1_witsml141
TrajectoryPlanView_v1_png
TrajectoryVerticalSection_v1_png
Well_v2_witsml141
Wellbore_v1_witsml141
WellboreGeometry_v5_witsml141
WellboreGeometry_v5_witsml141_xsd
WellboreGeometry_v6_witsml141
WellboreGeometry_v6_witsml141_xsd
FitLotXlot_v1_json
FitLotXlot_v1_json_schema
CasingIntegrityTest_v1_json
CasingIntegrityTest_v1_json_schema
CustomParameters_v1_json
CustomParameters_v1_json_schema
WellMontage1_v1_pdf
WellMontage2_v1_pdf
WellMontage3_v1_pdf
CorporateDeliverable_v1_json
CorporateDeliverable_v1_json_schema
Schedule_v1_json
Schedule_v1_json_schema
AntiCollisionSettings_v1_json
AntiCollisionOffsets_v1_json
AntiCollisionOffsets_v1_json_schema

Example Download

The download link below provides an example extract using Project Plan API from a demo project created using a public data set. This can be used to give an indication of kind of values that are included in the above artifacts, but will not be comprehensive, since the output will depend on the data that resides inside the project being queried.

📥 Download Example Artifacts