---
title: Wellbore Downhole Equipment
slug: wellbore-downhole-equipment
docTags: 
createdAt: 2023-04-21T18:16:54.000Z
---

The Wellbore Downhole Equipment table records downhole pressure gauges (not ESP intake/discharge) and packers. When a gauge appears in this table, the system computes bottomhole pressure at the gauge's measured depth during its run duration, for comparison purposes. When a packer appears, it is used for gas lift diagnostics.

The unique constraint on downhole equipment entries is **sourceWellboreId + sourceId**.

:::hint{type="warning"}
Only enter gauge information here for tubing-installed or retrievable downhole gauges that have daily pressure measurements recorded in the gaugePressure field of the [Daily Production](docId\:JnOGjWOaoWkpzzAHO3pkP) table.

ProdX supports one reference gauge at a time. If the well has multiple gauges installed, pick the one with the most reliable data or the closest to formation depth.

ESP intake, ESP discharge, and SRP intake gauges are assumed to be at the appropriate pump depths when data appears in the [Daily Production](docId\:JnOGjWOaoWkpzzAHO3pkP) table — do not record depths for those gauges here.
:::

| **Variable**     | **Data Type**   | **Unit of Measure** | **Is Nullable?** | **Default Value** | **Description**                                                                                                        |
| ---------------- | --------------- | ------------------- | ---------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
| sourceId         | String          | -                   | No               | -                 | Unique identifier of the equipment, to enable upserts                                                                  |
| sourceWellId     | String          | -                   | No               | -                 | Source ID for the well. Must match the sourceId of a record in the [Well](docId\:P-xHbe4jqKJQemay7aOL5) table.         |
| sourceWellboreId | String          | -                   | No               | -                 | Source ID for the wellbore. Must match the sourceId of a record in the [Wellbore](docId\:XPqwCAS8aWDaWyssmVjY6) table. |
| type             | String          | -                   | No               | -                 | Downhole equipment type:<br /><br />DOWNHOLEGAUGE<br />PACKER                                                          |
| topMd            | Double          | ft                  | No               | -                 | Top measured depth of the equipment                                                                                    |
| bottomMd         | Double          | ft                  | No               | -                 | Bottom measured depth of the equipment                                                                                 |
| runDate          | Datetime Offset | -                   | Yes              | -                 | Date the equipment was run. Datetime offset (with timezone) in ISO 8601 format. Example: 2022-09-27T16:28:37+0000      |
| pullDate         | Datetime Offset | -                   | Yes              | -                 | Date the equipment was pulled. Datetime offset (with timezone) in ISO 8601 format.                                     |

***

# Data Integrity Checks

| **Condition**                                                        | **Response**    |
| -------------------------------------------------------------------- | --------------- |
| Any non-nullable field is NULL or empty                              | Record Rejected |
| type is not DOWNHOLEGAUGE or PACKER                                  | Record Rejected |
| (sourceWellId, sourceWellboreId) does not match an existing wellbore | Row Skipped     |

:::hint{type="info"}
**Partial success on bulk ingest**

Rows referencing an unknown wellbore are skipped while the remaining rows are written. The error response names each skipped row. An error response therefore does not mean nothing was written.
:::

***

# Common Error Messages

| **API**                | **Scenario**     | **Error Response**                                                                                                           |
| ---------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Add / Upsert equipment | Unknown wellbore | DownHoleEquipment with sourceId 'xxx' was skipped: wellbore with sourceWellId 'xxx' and sourceWellboreId 'xxx' was not found |
