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" %}
    fwk-drillplan.slbservice.com
     ```
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

        - 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.
            This property is obsolete and will be removed in future versions. 
            Please 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.
            Replaces 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.
