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.
Create a new target for the design
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
designid | string (UUID) | ✓ | The UUID of the design |
Headers
| Name | Value | Description |
|---|---|---|
apikey | YOUR_API_KEY | Your API authentication key |
Content-Type | application/json | Must be application/json |
Request Body
Target definition — name, position, depth, and shape
Request body fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the target |
shape | object | Conditional | Geometry — see Shape types. Defaults to Point semantics if omitted. Required for any non-point geometry. |
depthTVD | string | Conditional | True vertical depth, e.g. "2500|m". Required unless shape.type === "Polygon". |
depthReference | "RKB" or "MSL" | No | Depth reference datum (defaults to the design's site reference) |
mapPositionEasting | string | Conditional | Easting on the projected map, e.g. "500000|m". Required unless shape.type === "Polygon"; must not be supplied for polygon targets. |
mapPositionNorthing | string | Conditional | Northing on the projected map, e.g. "6000000|m". Same rule as easting. |
azimuth | string | No | Target azimuth, e.g. "135|deg" |
dipAngle | string | No | Target dip angle, e.g. "5|deg" |
dipDirectionAzimuth | string | No | Direction of dip, e.g. "180|deg" |
confidenceLevel | string | No | Drillers-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:
| Shape | Position fields | shape.parameters |
|---|---|---|
Point | depthTVD, mapPositionEasting, mapPositionNorthing required | Not allowed |
Box, Line, Sphere, Cylinder, Rectangle, StandingCylinder | depthTVD, mapPositionEasting, mapPositionNorthing required | Required (shape-specific) |
Polygon | mapPositionEasting and mapPositionNorthing must not be supplied — the polygon's points carry the position | Required (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 Createdwith 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