Skip to main content

Create Target

Create a new target for a design. A target is a drilling objective made up of a position (easting/northing on the projected map), a depth (depthTVD), and an optional shape that describes its geometry — point, box, sphere, polygon, cylinder, rectangle, or standing cylinder.

The minimum required payload is a name. For all shapes except Polygon, you must also supply depthTVD, mapPositionEasting, and mapPositionNorthing. For polygon targets, the polygon's points carry the spatial information instead — see Conditional fields below.

POST/api/v1/designs/{designid}/targets

Create a new target for the design

Path Parameters

NameTypeRequiredDescription
designidstring (UUID)The UUID of the design

Headers

NameValueDescription
apikeyYOUR_API_KEYYour API authentication key
Content-Typeapplication/jsonMust be application/json

Request Body

Target definition — name, position, depth, and shape

Request body fields

FieldTypeRequiredDescription
namestringYesDisplay name for the target
shapeobjectConditionalGeometry — see Shape types. Defaults to Point semantics if omitted. Required for any non-point geometry.
depthTVDstringConditionalTrue vertical depth, e.g. "2500|m". Required unless shape.type === "Polygon".
depthReference"RKB" or "MSL"NoDepth reference datum (defaults to the design's site reference)
mapPositionEastingstringConditionalEasting on the projected map, e.g. "500000|m". Required unless shape.type === "Polygon"; must not be supplied for polygon targets.
mapPositionNorthingstringConditionalNorthing on the projected map, e.g. "6000000|m". Same rule as easting.
azimuthstringNoTarget azimuth, e.g. "135|deg"
dipAnglestringNoTarget dip angle, e.g. "5|deg"
dipDirectionAzimuthstringNoDirection of dip, e.g. "180|deg"
confidenceLevelstringNoDrillers-target confidence as "NN|%", e.g. "95|%"

Fields read-only on response (computed by the server): targetId, epsgCode, geographicPositionLongitudeDD, geographicPositionLatitudeDD, geographicPositionLongitudeDMS, geographicPositionLatitudeDMS. Do not include these in the request body.

Conditional fields

The schema enforces two mutually exclusive cases based on shape.type:

ShapePosition fieldsshape.parameters
PointdepthTVD, mapPositionEasting, mapPositionNorthing requiredNot allowed
Box, Line, Sphere, Cylinder, Rectangle, StandingCylinderdepthTVD, mapPositionEasting, mapPositionNorthing requiredRequired (shape-specific)
PolygonmapPositionEasting and mapPositionNorthing must not be supplied — the polygon's points carry the positionRequired (points table)

Supplying mapPositionEasting/mapPositionNorthing together with a polygon shape returns 400 Bad Request.

Shape types

The shape.type field accepts one of: Point, Box, Line, Sphere, Polygon, Cylinder, Rectangle, StandingCylinder. Each shape (except Point) requires a matching parameters object.

Box

{
"type": "Box",
"parameters": {
"width": "50|m",
"length": "100|m",
"heightAboveTargetCenter": "25|m",
"heightBelowTargetCenter": "25|m"
}
}

Line

{
"type": "Line",
"parameters": {
"x": "100|m",
"y": "0|m",
"z": "10|m"
}
}

Sphere

{
"type": "Sphere",
"parameters": { "radius": "30|m" }
}

Cylinder

{
"type": "Cylinder",
"parameters": {
"radius": "20|m",
"height": "60|m"
}
}

Rectangle

{
"type": "Rectangle",
"parameters": {
"width": "50|m",
"length": "100|m"
}
}

StandingCylinder

{
"type": "StandingCylinder",
"parameters": {
"radius": "20|m",
"heightAboveTargetCenter": "30|m",
"heightBelowTargetCenter": "30|m"
}
}

Polygon

A polygon target replaces mapPositionEasting/mapPositionNorthing with a 3-column points table (easting, northing, depth).

{
"type": "Polygon",
"parameters": {
"inputType": "Table",
"points": {
"headers": [
{ "index": 1, "quantity": "depth", "unit": "m", "key": "easting" },
{ "index": 2, "quantity": "depth", "unit": "m", "key": "northing" },
{ "index": 3, "quantity": "depth", "unit": "m", "key": "depth" }
],
"values": [
[500000, 6000000, 2500],
[500200, 6000000, 2500],
[500200, 6000200, 2520],
[500000, 6000200, 2520]
]
}
}
}

inputType is optional and can be "Table" (inline values) or "File" (uploaded list).

Notes

  • All measurement fields use the pipe-delimited "value\|unit" format
  • The response is 201 Created with the created target — server-side computed fields (targetId, epsgCode, geographic coordinates) are included
  • The position you supply is on the projected map; the server computes the corresponding geographic coordinates from the design's site EPSG
  • MSL is not supported for polygon targets — use RKB