{
  "openapi": "3.0.1",
  "info": {
    "title": "Consumption Hub External Public api",
    "contact": {
      "name": "DrillPlan Framework Team",
      "email": "bgc-taiji-fwk@slb.com"
    },
    "version": "v1",
    "x-product-id": "DrillPlan-Consumption-Hub-API",
    "description": "```plain {% title=\"Client ID\" %}\nfwk-drillplan.slbservice.com\n ```\n"
  },
  "paths": {
    "/v1/ingress/data-sources/{dataSource}/wells": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "Publish wells",
        "description": "Publish wells",
        "operationId": "PublishWellsV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "well data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WellDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WellDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WellDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/wellbores": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "Publish wellbores",
        "description": "Publish wellbores",
        "operationId": "PublishWellboresV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "wellbore data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WellboreDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WellboreDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WellboreDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/trajectories": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "publish trajectories",
        "description": "publish trajectories",
        "operationId": "PublishTrajectoriesV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "trajectory or survey data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TrajectoryDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TrajectoryDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TrajectoryDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/wellbore-geometries": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "publish wellbore geometries",
        "description": "publish wellbore geometries",
        "operationId": "PublishWellboreGeometriesV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "wellbore geometries data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StaticWellboreGeometryDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StaticWellboreGeometryDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StaticWellboreGeometryDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/targets": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "publish targets",
        "description": "publish targets",
        "operationId": "PublicTargetsV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "target data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetSetDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetSetDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetSetDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/formation-tops": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "publish formation top",
        "description": "publish formation top",
        "operationId": "PublishFormationTopsV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "formation top data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FormationTopSetDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FormationTopSetDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FormationTopSetDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/pressure-windows": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "publish pressure window",
        "description": "publish pressure",
        "operationId": "PublishPressuresV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "pressure window data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PressureWindowDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PressureWindowDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PressureWindowDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/temperatures": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "publish temperature",
        "description": "publish temperature",
        "operationId": "PublishTemperaturesV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "temperature data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TemperatureDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TemperatureDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TemperatureDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/cement-programs": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "publish cement program",
        "description": "publish cement program",
        "operationId": "PublishCementProgramsV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "cement program data list",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CementProgramDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CementProgramDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CementProgramDto"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}": {
      "delete": {
        "tags": [
          "Connector"
        ],
        "summary": "delete all data belongs to dataSource, including wells, wellbores, trajectories etc.",
        "description": "delete all data belongs to dataSource, including wells, wellbores, trajectories etc.",
        "operationId": "DeleteDataSourceV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/{dataType}/batch-delete": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "batch delete one type of data belongs to dataSource",
        "description": "batch delete one type of data belongs to dataSource",
        "operationId": "BatchDeleteDataByTypeV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dataType",
            "in": "path",
            "description": "supported data type: wells, wellbores, trajectories, wellbore-geometries, targets,formation-tops, pressure-windows, temperatures, cement-programs",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "requestBody": {
          "description": "id list to be deleted",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/ingress/data-sources/{dataSource}/{dataType}/summary": {
      "get": {
        "tags": [
          "Connector"
        ],
        "summary": "query data by dataSouce",
        "description": "query data by dataSouce",
        "operationId": "QueryDataByDataSourceV1",
        "parameters": [
          {
            "name": "dataSource",
            "in": "path",
            "description": "data source",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dataType",
            "in": "path",
            "description": "supported data type: wells, wellbores, trajectories, wellbore-geometries, targets,formation-tops, pressure-windows, temperatures, cement-programs",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "well_id",
            "in": "query",
            "description": "well id",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "page ",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "page size",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          },
          {
            "$ref": "#/components/parameters/dataPartitionHeader"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuerySummaryDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuerySummaryDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuerySummaryDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "dataPartitionHeader": {
        "name": "slb-partition-id",
        "in": "header",
        "description": "The data partition id.",
        "required": true,
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "AzimuthReference": {
        "enum": [
          "Grid",
          "True",
          "Unknown"
        ],
        "type": "string"
      },
      "CementProgramDto": {
        "required": [
          "id",
          "name",
          "string_type",
          "wellbore_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "wellbore_id": {
            "minLength": 1,
            "type": "string",
            "description": "Id of the wellore this cement program designed for."
          },
          "drill_plan_section_id": {
            "type": "string",
            "description": "If this cement is dedicate for one drill plan section, record the section id for better mapping behavior",
            "nullable": true
          },
          "section_name": {
            "type": "string",
            "description": "Section name, hit for mapping",
            "nullable": true
          },
          "shoe_depth": {
            "type": "number",
            "description": "Section shoe depth, hint for mapping",
            "format": "double",
            "nullable": true
          },
          "string_type": {
            "minLength": 1,
            "type": "string",
            "description": "Casing, Liner, Tieback"
          },
          "is_multiple_stage": {
            "type": "boolean",
            "description": "Set true if the cement program is for multi-stage design"
          },
          "stage_sequence": {
            "maximum": 2,
            "minimum": 1,
            "type": "integer",
            "description": "Required if is_multiple_stage set to true",
            "format": "int32",
            "nullable": true
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "some label for the cement program",
            "nullable": true
          },
          "fluids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fluid"
            },
            "nullable": true
          },
          "placement_section": {
            "$ref": "#/components/schemas/PlacementSection"
          },
          "merged_open_hole_and_excesses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MergedOpenHoleAndExcess"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CoordinateInputType": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "format": "int32"
      },
      "DefinedPressure": {
        "type": "object",
        "properties": {
          "source_reference_id": {
            "type": "integer",
            "description": "inner reference, equals \"reference_identifier\" of one of pressure curves",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DepthLockType": {
        "enum": [
          "MD",
          "TVD"
        ],
        "type": "string"
      },
      "DepthType": {
        "enum": [
          "TVD",
          "MD"
        ],
        "type": "string"
      },
      "ExcessType": {
        "enum": [
          "OpenHoleExcess",
          "AnnularExcess"
        ],
        "type": "string"
      },
      "Fluid": {
        "type": "object",
        "properties": {
          "fluid_id": {
            "type": "integer",
            "format": "int32"
          },
          "fluid_name": {
            "type": "string",
            "nullable": true
          },
          "fluid_type": {
            "$ref": "#/components/schemas/FluidType"
          },
          "density": {
            "type": "number",
            "format": "double"
          },
          "use_dfp": {
            "type": "boolean"
          },
          "hb_parameters_index": {
            "type": "integer",
            "format": "int32"
          },
          "hb_parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HBParameter"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FluidType": {
        "enum": [
          "Slurry",
          "Spacer",
          "Wash",
          "Mud"
        ],
        "type": "string"
      },
      "FormationTopDto": {
        "required": [
          "depth_value",
          "name"
        ],
        "type": "object",
        "properties": {
          "depth_value": {
            "type": "number",
            "description": "depth value of formation top, can be md or tvd, depends on the depth_type",
            "format": "double"
          },
          "name": {
            "type": "string",
            "description": "name of formation top"
          },
          "depth_uncertainty_up": {
            "type": "number",
            "description": "upper depth uncertainty",
            "format": "double",
            "nullable": true
          },
          "depth_uncertainty_down": {
            "type": "number",
            "description": "lower depth uncertainty",
            "format": "double",
            "nullable": true
          },
          "rock_type": {
            "type": "string",
            "description": "rock type of formation",
            "nullable": true
          },
          "hydrocarbon_bearing": {
            "type": "boolean",
            "description": "whether is hydrocarbon bearing",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FormationTopSetDto": {
        "required": [
          "depth_type",
          "formation_tops",
          "id",
          "name",
          "reference_elevation",
          "wellbore_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "wellbore_id": {
            "minLength": 1,
            "type": "string",
            "description": "Id of the wellore."
          },
          "reference_elevation": {
            "type": "number",
            "description": "Depth reference point's elevation \r\nThe value is vertical distance between reference point and MSL.  \r\nPositive when above MSL.  Negative when below.",
            "format": "double"
          },
          "depth_type": {
            "$ref": "#/components/schemas/DepthType"
          },
          "formation_tops": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FormationTopDto"
            },
            "description": "formation top elements"
          }
        },
        "additionalProperties": false
      },
      "HBParameter": {
        "type": "object",
        "properties": {
          "temperature": {
            "type": "number",
            "format": "double"
          },
          "consistency": {
            "type": "number",
            "format": "double"
          },
          "power_index": {
            "type": "number",
            "format": "double"
          },
          "yield_stress": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "LocationDto": {
        "type": "object",
        "properties": {
          "coordinate_reference_system": {
            "type": "string",
            "description": "coordinate reference system name",
            "nullable": true
          },
          "coordinates_type": {
            "type": "string",
            "description": "coordinate type, e.g:GRID, GEODETIC",
            "nullable": true
          },
          "azimuth_reference": {
            "$ref": "#/components/schemas/AzimuthReference"
          },
          "northing": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "easting": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MergedOpenHoleAndExcess": {
        "type": "object",
        "properties": {
          "md": {
            "type": "number",
            "format": "double"
          },
          "mean_diameter": {
            "type": "number",
            "format": "double"
          },
          "excess": {
            "type": "number",
            "format": "double"
          },
          "excess_type": {
            "$ref": "#/components/schemas/ExcessType"
          }
        },
        "additionalProperties": false
      },
      "PlacementDesign": {
        "type": "object",
        "properties": {
          "annulus_placements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlacementInfo"
            },
            "nullable": true
          },
          "shoe_track_length": {
            "type": "number",
            "format": "double"
          },
          "top_of_cement": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PlacementInfo": {
        "type": "object",
        "properties": {
          "fluid_id": {
            "type": "integer",
            "format": "int32"
          },
          "annular_length": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PlacementSection": {
        "type": "object",
        "properties": {
          "placement_design": {
            "$ref": "#/components/schemas/PlacementDesign"
          },
          "pumping_schedule": {
            "$ref": "#/components/schemas/PumpingSchedule"
          }
        },
        "additionalProperties": false
      },
      "PressureDto": {
        "required": [
          "name",
          "pressure_items",
          "pressure_type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "name of pressure curve"
          },
          "description": {
            "type": "string",
            "description": "description of pressure curve",
            "nullable": true
          },
          "pressure_type": {
            "$ref": "#/components/schemas/PressureType"
          },
          "pressure_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PressureItemDto"
            },
            "description": "elements of pressure curve"
          },
          "reference_identifier": {
            "type": "integer",
            "description": "inner identifier of pressure curve\r\nonly referenced by pore_pressure and fracture_pressure",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PressureItemDto": {
        "required": [
          "pressure",
          "tvd"
        ],
        "type": "object",
        "properties": {
          "tvd": {
            "type": "number",
            "description": "tvd depth",
            "format": "double"
          },
          "pressure": {
            "type": "number",
            "description": "pressure",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PressureType": {
        "enum": [
          "PorePressure",
          "FracturePressure",
          "FitLot",
          "Others"
        ],
        "type": "string"
      },
      "PressureWindowDto": {
        "required": [
          "id",
          "name",
          "pressures",
          "reference_elevation",
          "wellbore_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "wellbore_id": {
            "minLength": 1,
            "type": "string",
            "description": "Id of the wellore."
          },
          "pressures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PressureDto"
            },
            "description": "pressure curves"
          },
          "reference_elevation": {
            "type": "number",
            "description": "Depth reference point's elevation \r\nThe value is vertical distance between reference point and MSL.  \r\nPositive when above MSL.  Negative when below.",
            "format": "double"
          },
          "pore_pressure": {
            "$ref": "#/components/schemas/DefinedPressure"
          },
          "fracture_pressure": {
            "$ref": "#/components/schemas/DefinedPressure"
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": {}
      },
      "PumpingSchedule": {
        "type": "object",
        "properties": {
          "pumping_stages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PumpingStage"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PumpingStage": {
        "type": "object",
        "properties": {
          "fluid_id": {
            "type": "integer",
            "format": "int32"
          },
          "pumping_stage_type": {
            "$ref": "#/components/schemas/PumpingStageType"
          },
          "pump_rate": {
            "type": "number",
            "format": "double"
          },
          "duration": {
            "type": "number",
            "format": "double"
          },
          "volume_at_ambient": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PumpingStageType": {
        "enum": [
          "Fluid",
          "Pause",
          "Plug",
          "TopPlug"
        ],
        "type": "string"
      },
      "QuerySummaryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "SectionComponentType": {
        "enum": [
          "Casing",
          "Conductor",
          "Liner",
          "OpenHole",
          "Riser",
          "ProductionCasing",
          "ProductionLiner",
          "TieBack",
          "ProductionTieBack",
          "SurfaceCasing"
        ],
        "type": "string",
        "description": "Type of wellbore section component\n- Note: 'Riser' is accepted for validation purposes but is no longer supported in data processing and component with this type will be ignored if present."
      },
      "SectionGeometryDto": {
        "type": "object",
        "properties": {
          "component_type": {
            "$ref": "#/components/schemas/SectionComponentType"
          },
          "hole_size": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "depth_lock_type": {
            "$ref": "#/components/schemas/DepthLockType"
          },
          "end_md": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "distance_between_casing_shoe_and_section_end": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "end_tvd": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "start_md": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "start_tvd": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "toc_lock_type": {
            "$ref": "#/components/schemas/DepthLockType"
          },
          "toc_md": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "toc_tvd": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "inside_diameter": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "outside_diameter": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "drift_diameter": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "max_outside_diameter": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "linear_weight": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "steel_grade_type": {
            "type": "string",
            "nullable": true
          },
          "is_inherited_section": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "StaticWellboreGeometryDto": {
        "required": [
          "id",
          "is_actual",
          "name",
          "section_geometries",
          "wellbore_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "wellbore_id": {
            "minLength": 1,
            "type": "string",
            "description": "Id of the wellbore."
          },
          "is_actual": {
            "type": "boolean"
          },
          "is_working": {
            "type": "boolean"
          },
          "rkb": {
            "type": "number",
            "description": "Elevation of RKB above MSL.",
            "format": "double"
          },
          "section_geometries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SectionGeometryDto"
            }
          }
        },
        "additionalProperties": false
      },
      "SurveyStationDto": {
        "required": [
          "azimuth",
          "inclination",
          "md"
        ],
        "type": "object",
        "properties": {
          "md": {
            "type": "number",
            "format": "double"
          },
          "inclination": {
            "maximum": 3.141592653589793,
            "minimum": 0,
            "type": "number",
            "format": "double"
          },
          "azimuth": {
            "maximum": 6.283185307179586,
            "minimum": 0,
            "type": "number",
            "format": "double"
          },
          "comment": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TargetDto": {
        "type": "object",
        "properties": {
          "coordinate_input_type": {
            "$ref": "#/components/schemas/CoordinateInputType"
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "tvdss": {
            "type": "number",
            "description": "tvdss.",
            "format": "double",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "description": "latitude.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "description": "latitude",
            "format": "double",
            "nullable": true
          },
          "northing": {
            "type": "number",
            "description": "northing",
            "format": "double",
            "nullable": true
          },
          "easting": {
            "type": "number",
            "description": "easting",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TargetSetDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "wellbore_id": {
            "type": "string",
            "description": "wellbore id target set belongs to, each wellbore only have one target set",
            "nullable": true
          },
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TemperatureDto": {
        "required": [
          "id",
          "items",
          "name",
          "reference_elevation",
          "wellbore_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "wellbore_id": {
            "type": "string",
            "description": "Id of the wellore."
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemperatureItemDto"
            },
            "description": "elements of temperature curve"
          },
          "reference_elevation": {
            "type": "number",
            "description": "Depth reference point's elevation \r\nThe value is vertical distance between reference point and MSL.  \r\nPositive when above MSL.  Negative when below.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TemperatureItemDto": {
        "required": [
          "tvd"
        ],
        "type": "object",
        "properties": {
          "tvd": {
            "type": "number",
            "description": "tvd depth",
            "format": "double"
          },
          "temperature": {
            "type": "number",
            "description": "temperature",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TrajectoryDto": {
        "required": [
          "azimuth_reference",
          "id",
          "is_actual",
          "name",
          "stations",
          "wellbore_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "wellbore_id": {
            "type": "string",
            "description": "Id of the wellore."
          },
          "is_actual": {
            "type": "boolean",
            "description": "Indicator whether it's a survey or a trajectory, true is survey, false is trajectory."
          },
          "is_working_survey": {
            "type": "boolean",
            "description": "Indicator whether the survey is working on or not.\r\nWhen IsActual = false, IsWorkingSurvey should always be false\r\nWhen IsActual = true, IsWorkingSurvey indicates whether it's working survey or not"
          },
          "rkb": {
            "type": "number",
            "description": "Elevation of RKB above MSL.",
            "format": "double"
          },
          "azimuth_reference": {
            "$ref": "#/components/schemas/AzimuthReference"
          },
          "vsec": {
            "$ref": "#/components/schemas/VerticalSection"
          },
          "stations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SurveyStationDto"
            },
            "description": "Trajectory station elements."
          },
          "survey_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "must be definitive trajectory or survey"
      },
      "ValidationProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          }
        },
        "additionalProperties": {}
      },
      "VerticalReferenceSurface": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "The code value that represents the type of reference surface.",
            "nullable": true
          },
          "full_name": {
            "type": "string",
            "description": "The full name of the vertical reference surface.",
            "nullable": true
          },
          "offset": {
            "type": "number",
            "description": "Offset value above MSL.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "VerticalSection": {
        "type": "object",
        "properties": {
          "origin_ns": {
            "type": "number",
            "description": "Origin north-south used for vertical section plot/computations.",
            "format": "double",
            "nullable": true
          },
          "origin_ew": {
            "type": "number",
            "description": "Origin east-west used for vertical section plot/computations.",
            "format": "double",
            "nullable": true
          },
          "azimuth": {
            "maximum": 6.283185307179586,
            "minimum": 0,
            "type": "number",
            "description": "Azimuth used for vertical section plot/computations.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WellboreDto": {
        "required": [
          "id",
          "name",
          "well_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "fetchable": {
            "type": "boolean",
            "nullable": true
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "well_id": {
            "minLength": 1,
            "type": "string",
            "description": "Id of the well which this wellbore belongs to."
          },
          "ubhi": {
            "type": "string",
            "description": "Unique borehole identifier.",
            "nullable": true
          },
          "wellbore_status": {
            "$ref": "#/components/schemas/WellboreStatus"
          },
          "parent_wellbore_id": {
            "type": "string",
            "description": "indicate the wellbore parent wellbore id, if null, current wellbore is root wellbore of the well.",
            "nullable": true
          },
          "kick_off_point_md": {
            "type": "number",
            "description": "for sub wellbore, the value indicate where is the kick off point",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Wellbore is belong to well"
      },
      "WellboreStatus": {
        "enum": [
          "Unknown",
          "Abandoned",
          "Active",
          "Completed",
          "Proposed",
          "Tight"
        ],
        "type": "string"
      },
      "WellDto": {
        "required": [
          "id",
          "is_off_shore",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "URL of the source editor, drillplan will use this value let the user navigate to source and do the data modificaiton.",
            "format": "uri",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "object last modify time, drillplan will compare this value and the last modify time in drillplan, to decide if the source data is newer.",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "fetchable": {
            "type": "boolean",
            "nullable": true
          },
          "location": {
            "$ref": "#/components/schemas/LocationDto"
          },
          "is_off_shore": {
            "type": "boolean",
            "description": "Indicator whether it's an offshore well or land well"
          },
          "ground_level": {
            "type": "number",
            "description": "Elevation of ground level (land rigs) or seabed (offshore rigs) above MSL.",
            "format": "double",
            "nullable": true
          },
          "rkb": {
            "type": "number",
            "description": "Elevation of RKB above MSL.",
            "format": "double",
            "nullable": true
          },
          "custom_vertical_reference_surface": {
            "$ref": "#/components/schemas/VerticalReferenceSurface"
          },
          "uwi": {
            "type": "string",
            "nullable": true
          },
          "field_name": {
            "type": "string",
            "description": "Name of the field in which the well is located.",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "[OBSOLETE] Country in which well is located.\nThis property is obsolete and will be removed in future versions. \nPlease use `country_code_alpha2` instead.",
            "nullable": true,
            "x-deprecated": true
          },
          "country_code_alpha2": {
            "type": "string",
            "description": "Country code (ISO 3166-1 alpha-2) in which the well is located.\nReplaces the obsolete `country` property.",
            "nullable": true
          },
          "area": {
            "type": "string",
            "description": "Area in which well is located.",
            "nullable": true
          },
          "state": {
            "type": "string",
            "description": "State or province in which well is located.",
            "nullable": true
          },
          "county": {
            "type": "string",
            "description": "County in which the well is located.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "City in which the well is located.",
            "nullable": true
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "some label for the well",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "User Token from SLB Authenticator Service"
      },
      "appkey": {
        "type": "apiKey",
        "description": "AppKey/ConsumerKey from your App on Developer Portal",
        "name": "appkey",
        "in": "header"
      },
      "sauth_service_token": {
        "type": "oauth2",
        "description": "Service from SAuth v2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://p4d.csi.cloud.slb-ds.com/v2/token",
            "scopes": {
              "fwk-drillplan.slbservice.com": ""
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "bearer": [],
      "appkey": []
    },
    {
      "sauth_service_token": [],
      "appkey": []
    }
  ],
  "servers": [
    {
      "url": "https://eu-api.delfi.slb.com/drillplan/consumptionHub",
      "description": "ProdEU"
    },
    {
      "url": "https://api.delfi.slb.com/drillplan/consumptionHub",
      "description": "ProdUS"
    }
  ],
  "tags": [
    {
      "name": "Connector",
      "description": "Service endpoints to access DrillPlan consumption hub."
    }
  ]
}