iWell API v1 Documentation
Introduction
The iWell API provides access to our customers to read and write iWell data, enabling in-house developers to write innovative applications and utilities.
HTTP Request Methods
Where possible, we use appropriate HTTP verbs for each action. For a more detailed explanation, check out the full list of HTTP Request Methods.
| Method | Description |
|---|---|
| GET | Retrieve a specific resource. |
| POST | Create a new resource. |
| PATCH | Update to a resource, only changing the provided attributes. |
| DELETE | Delete a resource. |
HTTP Response Codes
We use HTTP status codes to notify about any problems that occured during the request. Each response includes a status code which will tell you if the request succeeded or failed and why.
| Code | Description | |
|---|---|---|
| 200 | OK | General status code. Most common code used to indicate success. |
| 201 | CREATED | Successful creation occurred (via either POST or PUT). Set the Location header to contain a link to the newly-created resource (on POST). Response body content may or may not be present. |
| 204 | NO CONTENT | Indicates success but nothing is in the response body, often used for DELETE and UPDATE operations. |
| 400 | BAD REQUEST | General error when fulfilling the request would cause an invalid state. Domain validation errors, missing data, etc. are some examples. |
| 401 | UNAUTHORIZED | Error code response for missing or invalid authentication token. |
| 403 | FORBIDDEN | Error code for user not authorized to perform the operation or the resource is unavailable for some reason (e.g. time constraints, etc.). |
| 404 | NOT FOUND | Used when the requested resource is not found, whether it does not exist or if there was a 401 or 403 that, for security reasons, the service wants to mask. |
| 405 | METHOD NOT ALLOWED | Used to indicate that the requested URL exists, but the requested HTTP method is not applicable. For example, POST /users/12345 where the API does not support creation of resources this way (with a provided ID). The Allow HTTP header must be set when returning a 405 to indicate the HTTP methods that are supported. In the previous case, the header would look like “Allow: GET, PUT, DELETE” |
| 429 | TOO MANY REQUESTS | Indicates that the API rate limit has been exceeded |
| 500 | INTERNAL SERVER ERROR | The general catch-all error when the server-side throws an exception. Use this only for errors that the consumer cannot address from their end. |
Rate Limits
There is a default rate limit of 24 requests per minute per account. If you need more than this, please contact customer support.
Date Range Limit
The API will allow you to make data requests with a maximum date range of 31 days between the start and end date to get historic data.
Date & Time Format
All dates are represented in UNIX time format.
1437562945
Account ¶
Account Information ¶
Account InformationGET/me
Get some account information of the authenticated user.
Example URI
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 1234,
"name": "John Doe",
"email": "john.doe@domain.com",
"phone": "(123) 456-7890",
"company": {
"data": {
"name": "ACME Oil",
"address1": "7694 College Street",
"address2": "",
"city": "Sugar Land",
"state": "TX",
"zip": "77478"
}
}
}
}Users ¶
Users ¶
List UsersGET/users
List all company users.
Example URI
200Headers
Content-Type: application/jsonBody
{
"data":[
{
"id":1234,
"name":"John Doe",
"email":"john.doe@domain.com",
"phone":"(123) 456-7890",
"type":ADMIN,
"status":ACTIVE
},
{
"id":1235,
"name":"John Smith",
"email":"john.smith@domain.com",
"phone":"(123) 456-7890",
"type":PUMPER_SUPERVISOR,
"status":ACTIVE
},
{
"id":1236,
"name":"Jane Doe",
"email":"jane.doe@domain.com",
"phone":"(123) 456-7890",
"type":USER,
"status":ACTIVE
}
]
}Create UserPOST/users
Create a new user.
Example URI
Headers
Content-Type: application/jsonBody
{
"name": "Michael Richards",
"email": "michael.richards@domain.com",
"password": "password-here",
"phone": "(123) 456-7890",
"type": "ADMIN"
}201Headers
Content-Type: application/jsonBody
{
"data":{
"id":1237,
"name":"Michael Richards",
"email":"michael.richards@domain.com",
"phone":"(123) 456-7890",
"type":"ADMIN",
"status":ACTIVE
}
}User ¶
Get UserGET/users/{user_id}
Get single user.
Example URI
- user_id
number(required)ID of user.
200Headers
Content-Type: application/jsonBody
{
"data":{
"id":1237,
"name":"Michael Richards",
"email":"michael.richards@domain.com",
"phone":"(123) 456-7890",
"type":"ADMIN",
"status":ACTIVE
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "User does not exist",
"description": "",
"link": ""
}
}Update UserPATCH/users/{user_id}
Update user.
Example URI
- user_id
number(required)ID of user.
Headers
Content-Type: application/jsonBody
{
"name": "Michael Richards",
"email": "michael.richards@domain.com",
"password": "password-here",
"phone": "(123) 456-7890",
"type": "ADMIN"
}200Headers
Content-Type: application/jsonBody
{
"data":{
"id":1237,
"name":"Michael Richards",
"email":"michael.richards@domain.com",
"phone":"(123) 456-7890",
"type":"ADMIN",
"status":ACTIVE
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "User does not exist",
"description": "",
"link": ""
}
}Delete UserDELETE/users/{user_id}
Delete a single user.
Example URI
- user_id
number(required)ID of user.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "User does not exist",
"description": "",
"link": ""
}
}User Wells ¶
User WellsGET/users/{user_id}/wells{?since}
Retrieve list of wells that can be accessed by the user.
Example URI
- user_id
number(required)ID of user.
- since
UNIX time(optional) Example: 1420107010Only wells with access granted at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 7332,
"name": "Eastmark #1",
"alias": "Eastmark #1",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
},
{
"id": 7333,
"name": "Lienz #3",
"alias": "Lienz #3",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:39:22-05:00",
"created_at": "2013-11-13T11:07:46-06:00",
"updated_at": "2015-04-05T14:41:06-05:00"
},
{
"id": 7334,
"name": "Holland Gas #1",
"alias": "Holland Gas #1",
"type": "GAS",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:16-05:00",
"created_at": "2013-11-13T11:08:06-06:00",
"updated_at": "2015-04-05T14:41:06-05:00"
}
]
}Manage User Wells ¶
Verify Well AccessGET/users/{user_id}/wells/{well_id}
Verify if the well can be accessed by the user.
Example URI
- user_id
number(required)ID of user.
- well_id
number(required)ID of well.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 7332,
"name": "Eastmark #1",
"alias": "Eastmark #1",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well cannot be accessed by user.",
"description": "",
"link": ""
}
}Grant Well AccessPOST/users/{user_id}/wells/{well_id}
Grant well access to the user.
Example URI
- user_id
number(required)ID of user.
- well_id
number(required)ID of well.
201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 7339,
"name": "Young 1-2",
"alias": "Young 1-2",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
}
}Revoke Well AccessDELETE/users/{user_id}/wells/{well_id}
Revoke well access to the user.
Example URI
- user_id
number(required)ID of user.
- well_id
number(required)ID of well.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well cannot be accessed by user.",
"description": "",
"link": ""
}
}User Well Groups ¶
User Well GroupsGET/users/{user_id}/well-groups{?since}
Retrieve list of well groups that can be accessed by the user.
Example URI
- user_id
number(required)ID of user.
- since
UNIX time(optional) Example: 1420107010Only well groups with access granted at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 223,
"name": "Route A",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7768,
7770,
7772
]
}
},
{
"id": 224,
"name": "Route B",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7773,
7774,
7775
]
}
},
{
"id": 225,
"name": "Route C",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7776,
7777,
7778
]
}
}
]
}Manage User Well Groups ¶
Verify Well Group AccessGET/users/{user_id}/well-groups/{group_id}
Verify if the well group can be accessed by the user.
Example URI
- user_id
number(required)ID of user.
- group_id
number(required)ID of well group.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 223,
"name": "Route A",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7768,
7770,
7772
]
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well group cannot be accessed by user.",
"description": "",
"link": ""
}
}Grant Well Group AccessPOST/users/{user_id}/well-groups/{group_id}
Grant well group access to the user.
Example URI
- user_id
number(required)ID of user.
- group_id
number(required)ID of well group.
201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 223,
"name": "Route A",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7768,
7770,
7772
]
}
}
}Revoke Well Group AccessDELETE/users/{user_id}/well-groups/{group_id}
Revoke well group access to the user.
Example URI
- user_id
number(required)ID of user.
- group_id
number(required)ID of well group.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well group cannot be accessed by user.",
"description": "",
"link": ""
}
}Wells ¶
Wells ¶
List WellsGET/wells{?since}
Get the list of wells in the company.
Example URI
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 7332,
"name": "Eastmark #1",
"alias": "Eastmark #1",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
},
{
"id": 7333,
"name": "Lienz #3",
"alias": "Lienz #3",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:39:22-05:00",
"created_at": "2013-11-13T11:07:46-06:00",
"updated_at": "2015-04-05T14:41:06-05:00"
},
{
"id": 7334,
"name": "Holland Gas #1",
"alias": "Holland Gas #1",
"type": "GAS",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:16-05:00",
"created_at": "2013-11-13T11:08:06-06:00",
"updated_at": "2015-04-05T14:41:06-05:00"
}
]
}Create WellPOST/wells
Create a new well.
Example URI
Headers
Content-Type: application/jsonBody
{
"name": "Young 1-2",
"alias": "Young 1-2",
"type": "OIL"
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 7339,
"name": "Young 1-2",
"alias": "Young 1-2",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
}
}Well ¶
Get Single WellGET/wells/{well_id}
Get information of a single well.
Example URI
- well_id
number(required)ID of well.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 7332,
"name": "Eastmark #1",
"alias": "Eastmark #1",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Update WellPATCH/wells/{well_id}
Update an existing well.
Example URI
- well_id
number(required)ID of well.
Headers
Content-Type: application/jsonBody
{
"name": "Young 1-2",
"alias": "Young 1-2",
"type": "OIL"
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 7339,
"name": "Young 1-2",
"alias": "Young 1-2",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Delete WellDELETE/wells/{well_id}
Delete an existing well.
Example URI
- well_id
number(required)ID of well.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Well Users ¶
Well UsersGET/wells/{well_id}/users{?since}
Retrieve list of users with access to this well.
Example URI
- well_id
number(required)ID of well.
- since
UNIX time(optional) Example: 1420107010Only users with access granted at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data":[
{
"id":1234,
"name":"John Doe",
"email":"john.doe@domain.com",
"phone":"(123) 456-7890",
"type":ADMIN,
"status":ACTIVE
},
{
"id":1235,
"name":"John Smith",
"email":"john.smith@domain.com",
"phone":"(123) 456-7890",
"type":PUMPER_SUPERVISOR,
"status":ACTIVE
},
{
"id":1236,
"name":"Jane Doe",
"email":"jane.doe@domain.com",
"phone":"(123) 456-7890",
"type":USER,
"status":ACTIVE
}
]
}Manage Well Users ¶
Verify Well AccessGET/wells/{well_id}/users/{user_id}
Verify if the user have access to the well.
Example URI
- well_id
number(required)ID of well.
- user_id
number(required)ID of user.
200Headers
Content-Type: application/jsonBody
{
"data":{
"id":1236,
"name":"Jane Doe",
"email":"jane.doe@domain.com",
"phone":"(123) 456-7890",
"type":USER,
"status":ACTIVE
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "User does not have access to the well.",
"description": "",
"link": ""
}
}Grant Well AccessPOST/wells/{well_id}/users/{user_id}
Grant well access to the user.
Example URI
- well_id
number(required)ID of well.
- user_id
number(required)ID of user.
201Headers
Content-Type: application/jsonBody
{
"data":{
"id":1236,
"name":"Jane Doe",
"email":"jane.doe@domain.com",
"phone":"(123) 456-7890",
"type":USER,
"status":ACTIVE
}
}Revoke Well AccessDELETE/wells/{well_id}/users/{user_id}
Revoke well access to the user.
Example URI
- well_id
number(required)ID of well.
- user_id
number(required)ID of user.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "User does not have access to the well.",
"description": "",
"link": ""
}
}Well Tanks ¶
Well TanksGET/wells/{well_id}/tanks{?since}
Retrieve list of the tanks allocated to this well.
Example URI
- well_id
number(required)ID of well.
- since
UNIX time(optional) Example: 1420107010Only tanks allocated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 4606,
"name": "Eastmark Oil 1",
"type": "OIL",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
},
{
"id": 9320,
"name": "Eastmark Water 1",
"type": "WATER",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
},
{
"id": 9324,
"name": "Eastmark OW 1",
"type": "OIL/WATER",
"capacity": 400,
"multiplier": 3.34,
"created_at": 1420388725,
"updated_at": 1420388725
}
]
}Manage Well Tanks ¶
Verify Well TankGET/wells/{well_id}/tanks/{tank_id}
Verify if the tank is allocated to the well.
Example URI
- well_id
number(required)ID of well.
- tank_id
number(required)ID of tank.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 4606,
"name": "Eastmark Oil 1",
"type": "OIL",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "The tank is not currently allocated to the specified well.",
"description": "",
"link": ""
}
}Allocate Tank to WellPOST/wells/{well_id}/tanks/{tank_id}
Allocate the tank to the well.
Example URI
- well_id
number(required)ID of well.
- tank_id
number(required)ID of tank.
201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 4606,
"name": "Eastmark Oil 1",
"type": "OIL",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
}
}Deallocate Tank from WellDELETE/wells/{well_id}/tanks/{tank_id}
Deallocate the tank from the well.
Example URI
- well_id
number(required)ID of well.
- tank_id
number(required)ID of tank.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "The tank is not currently allocated to the specified well.",
"description": "",
"link": ""
}
}Tanks ¶
Tanks ¶
List TanksGET/tanks{?since}
Get all tanks.
Example URI
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 4606,
"name": "Eastmark Oil 1",
"type": "OIL",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
},
{
"id": 9320,
"name": "Eastmark Water 1",
"type": "WATER",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
},
{
"id": 9324,
"name": "Eastmark OW 1",
"type": "OIL/WATER",
"capacity": 400,
"multiplier": 3.34,
"created_at": 1420388725,
"updated_at": 1420388725
}
]
}Create TankPOST/tanks
Create new tank
Example URI
Headers
Content-Type: application/jsonBody
{
"type": "OIL",
"name": "Eastmark Oil 2",
"capacity": 200,
"multiplier": 1.67
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 9325,
"name": "Eastmark Oil 2",
"type": "OIL",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
}
}Tank ¶
Get TankGET/tanks/{tank_id}
Get a single tank
Example URI
- tank_id
number(required)ID of tank.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 9325,
"name": "Eastmark Oil 2",
"type": "OIL",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank does not exist",
"description": "",
"link": ""
}
}Update TankPATCH/tanks/{tank_id}
Update tank
Example URI
- tank_id
number(required)ID of tank.
Headers
Content-Type: application/jsonBody
{
"type": "OIL",
"name": "Eastmark Oil 2",
"capacity": 200,
"multiplier": 1.67
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 9325,
"name": "Eastmark Oil 2",
"type": "OIL",
"capacity": 200,
"multiplier": 1.67,
"created_at": 1420388725,
"updated_at": 1420388725
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank does not exist",
"description": "",
"link": ""
}
}Delete TankDELETE/tanks/{tank_id}
Delete a single tank.
Example URI
- tank_id
number(required)ID of tank.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank does not exist",
"description": "",
"link": ""
}
}Tank Readings ¶
List Tank ReadingsGET/tanks/{tank_id}/readings{?start,end,since,hourly}
Retrieve a list of tank readings.
Example URI
- tank_id
number(required)ID of tank.
- start
date(optional) Default: 31 days before the present date. Example: 2015-01-01The date on which the requested production period starts. Check the Date Range Limit.
- end
date(optional) Default: the present date. Example: 2015-01-31The date on which the requested production period ends.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago. Using this, start and end date will be ignored.
- hourly
boolean(optional) Example: trueWhen set to
true, retrieve hourly monitoring data instead of daily readings. Hourly data includes additional fields likesensor_readingandgravityand excludesprevious_*fields andupdated_byinformation. Note: When usinghourly=true, thestart_dateandend_datemust be the same day. If no dates are provided, only the most recent day will be returned.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 100245,
"reading_time": 1420388725,
"top_feet": 10,
"top_inches": 4,
"cut_feet": 9,
"cut_inches": 0,
"previous_top_feet": 10,
"previous_top_inches": 4,
"previous_cut_feet": 9,
"previous_cut_inches": 0,
"updated_at": 1420389523,
"updated_by": 462
},
{
"id": 101432,
"reading_time": 1420449392,
"top_feet": 10,
"top_inches": 9,
"cut_feet": 9,
"cut_inches": 2,
"previous_top_feet": 10,
"previous_top_inches": 4,
"previous_cut_feet": 9,
"previous_cut_inches": 0,
"updated_at": 1420452342,
"updated_by": 462
},
{
"id": 103681,
"reading_time": 1420530851,
"top_feet": 11,
"top_inches": 4,
"cut_feet": 9,
"cut_inches": 6,
"previous_top_feet": 10,
"previous_top_inches": 9,
"previous_cut_feet": 9,
"previous_cut_inches": 2,
"updated_at": 1420533924,
"updated_by": 462
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank does not exist",
"description": "",
"link": ""
}
}Create Tank ReadingPOST/tanks/{tank_id}/readings
Create tank reading. The previous portion of the reading is optional.
Example URI
- tank_id
number(required)ID of tank.
Headers
Content-Type: application/jsonBody
{
"reading_time": 1420530851,
"top_feet": 11,
"top_inches": 4,
"cut_feet": 9,
"cut_inches": 6,
"previous_top_feet": 10,
"previous_top_inches": 9,
"previous_cut_feet": 9,
"previous_cut_inches": 2
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 103681,
"reading_time": 1420530851,
"top_feet": 11,
"top_inches": 4,
"cut_feet": 9,
"cut_inches": 6,
"previous_top_feet": 10,
"previous_top_inches": 9,
"previous_cut_feet": 9,
"previous_cut_inches": 2,
"updated_at": 1420533924,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank does not exist",
"description": "",
"link": ""
}
}Tank Reading ¶
Get Tank ReadingGET/tanks/{tank_id}/readings/{reading_id}{?hourly}
Get single tank reading.
Example URI
- tank_id
number(required)ID of tank.
- reading_id
number(required)ID of tank reading.
- hourly
boolean(optional) Example: trueWhen set to
true, retrieve hourly monitoring data instead of daily reading. Hourly data includes additional fields likesensor_readingandgravity, but excludesprevious_*fields andupdated_byinformation.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 103681,
"reading_time": 1420530851,
"top_feet": 11,
"top_inches": 4,
"cut_feet": 9,
"cut_inches": 6,
"previous_top_feet": 10,
"previous_top_inches": 9,
"previous_cut_feet": 9,
"previous_cut_inches": 2,
"updated_at": 1420533924,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank reading does not exist",
"description": "",
"link": ""
}
}Update Tank ReadingPATCH/tanks/{tank_id}/readings/{reading_id}
Update tank reading. The previous portion of the reading is optional.
Example URI
- tank_id
number(required)ID of tank.
- reading_id
number(required)ID of tank reading.
Headers
Content-Type: application/jsonBody
{
"reading_time": 1420530851,
"top_feet": 11,
"top_inches": 4,
"cut_feet": 9,
"cut_inches": 6,
"previous_top_feet": 10,
"previous_top_inches": 9,
"previous_cut_feet": 9,
"previous_cut_inches": 2
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 103681,
"reading_time": 1420530851,
"top_feet": 11,
"top_inches": 4,
"cut_feet": 9,
"cut_inches": 6,
"previous_top_feet": 10,
"previous_top_inches": 9,
"previous_cut_feet": 9,
"previous_cut_inches": 2,
"updated_at": 1420533924,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank reading does not exist",
"description": "",
"link": ""
}
}Tank Reading Run Tickets ¶
List Run TicketsGET/tanks/{tank_id}/readings/{reading_id}/run-tickets{?since}
Get run tickets recorded on a tank reading
Example URI
- tank_id
number(required)ID of tank.
- reading_id
number(required)ID of tank reading.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Body
{
"data": [
{
"id": 21769,
"run_ticket_number": "12435",
"date": "2015-01-05",
"type": "OIL",
"total": 170,
"picture_url": "https://acme.iwell.info/uploads/images/runtickets/f1b3ba7c2bb923437a849fc24eb1381d.jpg",
"comments": "",
"updated_at": 1420533924,
"updated_by": 462,
"run_ticket_type": "Oil Sale",
"transport": "Trucked",
"hauling_company": "Hauling Company",
"observed_temperature": 74,
"observed_gravity": 42.6,
"opening_temperature": 72,
"closing_temperature": 74,
"bsw": 0.2,
"opening_gauge_inches": 132.5,
"closing_gauge_inches": 23.25,
"total_est_net": 169.12,
"total_est_adjusted_net": 168.52,
"seal_on": "1234",
"seal_off": "1234"
}
]
}Create Run TicketPOST/tanks/{tank_id}/readings/{reading_id}/run-tickets
Create run ticket.
Example URI
- tank_id
number(required)ID of tank.
- reading_id
number(required)ID of tank reading.
Headers
Content-Type: application/jsonBody
{
"run_ticket_number": "12435",
"date": 1629298890,
"type": "OIL",
"total": 170,
"comments": "",
"observed_temperature": 74,
"observed_gravity": 42.6,
"opening_temperature": 72,
"closing_temperature": 74,
"bsw": 0.2,
"opening_gauge_inches": 132.5,
"closing_gauge_inches": 23.25,
"total_est_net": 169.12,
"total_est_adjusted_net": 168.52,
"seal_on": "1234",
"seal_off": "1234"
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 21769,
"run_ticket_number": "12435",
"date": "2015-01-05",
"type": "OIL",
"total": 170,
"picture_url": null,
"comments": "",
"updated_at": 1420533924,
"updated_by": 462,
"run_ticket_type": "Oil Sale",
"transport": "Trucked",
"hauling_company": "Hauling Company",
"observed_temperature": 74,
"observed_gravity": 42.6,
"opening_temperature": 72,
"closing_temperature": 74,
"bsw": 0.2,
"opening_gauge_inches": 132.5,
"closing_gauge_inches": 23.25,
"total_est_net": 169.12,
"total_est_adjusted_net": 168.52,
"seal_on": "1234",
"seal_off": "1234"
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Tank reading does not exist",
"description": "",
"link": ""
}
}Run Ticket ¶
Get Run TicketGET/tanks/{tank_id}/readings/{reading_id}/run-tickets/{run_ticket_id}
Get single run ticket.
Example URI
- tank_id
number(required)ID of tank.
- reading_id
number(required)ID of reading.
- run_ticket_id
number(required)ID of run ticket.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 21769,
"run_ticket_number": "12435",
"date": "2015-01-05",
"type": "OIL",
"total": 170,
"picture_url": "https://acme.iwell.info/uploads/images/runtickets/f1b3ba7c2bb923437a849fc24eb1381d.jpg",
"comments": "",
"updated_at": 1420533924,
"updated_by": 462,
"run_ticket_type": "Oil Sale",
"transport": "Trucked",
"hauling_company": "Hauling Company",
"observed_temperature": 74,
"observed_gravity": 42.6,
"opening_temperature": 72,
"closing_temperature": 74,
"bsw": 0.2,
"opening_gauge_inches": 132.5,
"closing_gauge_inches": 23.25,
"total_est_net": 169.12,
"total_est_adjusted_net": 168.52,
"seal_on": "1234",
"seal_off": "1234"
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Run ticket does not exist",
"description": "",
"link": ""
}
}Update Run TicketPATCH/tanks/{tank_id}/readings/{reading_id}/run-tickets/{run_ticket_id}
Update run ticket.
Example URI
- tank_id
number(required)ID of tank.
- reading_id
number(required)ID of reading.
- run_ticket_id
number(required)ID of run ticket.
Headers
Content-Type: application/jsonBody
{
"run_ticket_number": "12435",
"date": 1629298890,
"type": "OIL",
"total": 170,
"comments": "",
"observed_temperature": 74,
"observed_gravity": 42.6,
"opening_temperature": 72,
"closing_temperature": 74,
"bsw": 0.2,
"opening_gauge_inches": 132.5,
"closing_gauge_inches": 23.25,
"total_est_net": 169.12,
"total_est_adjusted_net": 168.52,
"seal_on": "1234",
"seal_off": "1234"
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 21769,
"run_ticket_number": "12435",
"date": "2015-01-05",
"type": "OIL",
"total": 170,
"picture_url": "https://acme.iwell.info/uploads/images/runtickets/f1b3ba7c2bb923437a849fc24eb1381d.jpg",
"comments": "",
"updated_at": 1420533924,
"updated_by": 462,
"run_ticket_type": "Oil Sale",
"transport": "Trucked",
"hauling_company": "Hauling Company",
"observed_temperature": 74,
"observed_gravity": 42.6,
"opening_temperature": 72,
"closing_temperature": 74,
"bsw": 0.2,
"opening_gauge_inches": 132.5,
"closing_gauge_inches": 23.25,
"total_est_net": 169.12,
"total_est_adjusted_net": 168.52,
"seal_on": "1234",
"seal_off": "1234"
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Run Ticket does not exist",
"description": "",
"link": ""
}
}Delete Run TicketDELETE/tanks/{tank_id}/readings/{reading_id}/run-tickets/{run_ticket_id}
Delete a single run ticket.
Example URI
- tank_id
number(required)ID of tank.
- reading_id
number(required)ID of reading.
- run_ticket_id
number(required)ID of run ticket.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Run Ticket does not exist",
"description": "",
"link": ""
}
}Meters ¶
Well Meters ¶
List MetersGET/wells/{well_id}/meters{?since}
Get the meters for the well.
Example URI
- well_id
number(required)ID of well.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 442,
"name": "Eastmark #1 Oil Meter",
"type": "OIL",
"meter_type": "TOTAL CUMULATIVE",
"behavior": "ADD",
"order": 1,
"created_at": 1420388725,
"updated_at": 1420432544
},
{
"id": 443,
"name": "Eastmark #1 Gas Meter",
"type": "GAS",
"meter_type": "BARTON CHART",
"behavior": "SUBTRACT",
"order": 2,
"created_at": 1420388725,
"updated_at": 1420432544
},
{
"id": 444,
"name": "Eastmark #1 Water Meter",
"type": "WATER",
"meter_type": "DIGITAL",
"behavior": "NONE",
"order": 3,
"created_at": 1420388725,
"updated_at": 1420432544
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Create MeterPOST/wells/{well_id}/meters
Create new meter.
Example URI
- well_id
number(required)ID of well.
Headers
Content-Type: application/jsonBody
{
"name": "Eastmark #1 Oil Meter 2",
"type": "OIL",
"order": 4
}201Headers
Content-Type: application/jsonBody
{
"id": 445,
"name": "Eastmark #1 Oil Meter 2",
"type": "OIL",
"meter_type": "TOTAL CUMULATIVE",
"behavior": "ADD",
"order": 4,
"created_at": 1420388725,
"updated_at": 1420432544
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Well Meter ¶
Get MeterGET/wells/{well_id}/meters/{meter_id}
Get single meter.
Example URI
- well_id
number(required)ID of well.
- meter_id
number(required)ID of meter.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 445,
"name": "Eastmark #1 Oil Meter 2",
"type": "OIL",
"meter_type": "TOTAL CUMULATIVE",
"behavior": "ADD",
"order": 4,
"created_at": 1420388725,
"updated_at": 1420432544
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Meter does not exist",
"description": "",
"link": ""
}
}Update MeterPATCH/wells/{well_id}/meters/{meter_id}
Update meter.
Example URI
- well_id
number(required)ID of well.
- meter_id
number(required)ID of meter.
Headers
Content-Type: application/jsonBody
{
"name": "Eastmark #1 Oil Meter 2",
"type": "OIL",
"order": 4
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 445,
"name": "Eastmark #1 Oil Meter 2",
"type": "OIL",
"meter_type": "TOTAL CUMULATIVE",
"behavior": "ADD",
"order": 4,
"created_at": 1420388725,
"updated_at": 1420432544
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Meter does not exist",
"description": "",
"link": ""
}
}Delete MeterDELETE/wells/{well_id}/meters/{meter_id}
Delete a single meter.
Example URI
- well_id
number(required)ID of well.
- meter_id
number(required)ID of meter.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Meter does not exist",
"description": "",
"link": ""
}
}Well Meter Readings ¶
List Meter ReadingsGET/wells/{well_id}/meters/{meter_id}/readings{?start,end,since}
Get the readings of the meter.
Example URI
- well_id
number(required)ID of well.
- meter_id
number(required)ID of meter.
- start
date(optional) Default: 31 days before the present date. Example: 2015-01-01The date on which the requested production period starts. Check the Date Range Limit.
- end
date(optional) Default: the present date. Example: 2015-01-31The date on which the requested production period ends.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 57767,
"reading_time": 1420388725,
"previous_reading": 331,
"reading": 435,
"updated_at": 1420388923,
"updated_by": 462
},
{
"id": 57768,
"reading_time": 1420475394,
"previous_reading": 435,
"reading": 561,
"updated_at": 1420478716,
"updated_by": 462
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Meter does not exist",
"description": "",
"link": ""
}
}Create Meter ReadingPOST/wells/{well_id}/meters/{meter_id}/readings
Create meter reading.
Example URI
- well_id
number(required)ID of well.
- meter_id
number(required)ID of meter.
Headers
Content-Type: application/jsonBody
{
"reading_time": 1420572741,
"previous_reading": 561,
"reading": 677
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 57769,
"reading_time": 1420572741,
"previous_reading": 561,
"reading": 677,
"updated_at": 1420573329,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Meter does not exist",
"description": "",
"link": ""
}
}Well Meter Reading ¶
Get Meter ReadingGET/wells/{well_id}/meters/{meter_id}/readings/{reading_id}
Get single meter reading.
Example URI
- well_id
number(required)ID of well.
- meter_id
number(required)ID of meter.
- reading_id
number(required)ID of meter reading.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 57769,
"reading_time": 1420572741,
"previous_reading": 561,
"reading": 677,
"updated_at": 1420573329,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Meter reading does not exist",
"description": "",
"link": ""
}
}Update Meter ReadingPATCH/wells/{well_id}/meters/{meter_id}/readings/{reading_id}
Update reading.
Example URI
- well_id
number(required)ID of well.
- meter_id
number(required)ID of meter.
- reading_id
number(required)ID of meter reading.
Headers
Content-Type: application/jsonBody
{
"reading_time": 1420572741,
"previous_reading": 561,
"reading": 677
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 57769,
"reading_time": 1420572741,
"previous_reading": 561,
"reading": 677,
"updated_at": 1420573329,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Meter reading does not exist",
"description": "",
"link": ""
}
}Production ¶
Well Production ¶
List ProductionGET/wells/{well_id}/production{?start,end,since}
Get production data of specific well.
Example URI
- well_id
number(required)ID of well.
- start
date(optional) Default: 31 days before the present date. Example: 2015-01-01The date on which the requested production period starts. Check the Date Range Limit.
- end
date(optional) Default: the present date. Example: 2015-01-31The date on which the requested production period ends.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago. Using this, start and end date will be ignored.
200Body
{
"data": [
{
"id": 123456,
"date": "2015-01-01",
"oil": 3.34,
"gas": 18,
"water": 0,
"gas_injection": 0,
"gas_flare": 0,
"water_injection": 0,
"water_disposal": 0,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24,
"production_time": 1420128727,
"updated_at": 1420129142,
"updated_by": 462
},
{
"id": 123457,
"date": "2015-01-02",
"oil": 1.67,
"gas": 28,
"water": 0,
"gas_injection": 0,
"gas_flare": 0,
"water_injection": 3,
"water_disposal": 2,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24,
"production_time": 1420229523,
"updated_at": 1420229986,
"updated_by": 462
},
{
"id": 123458,
"date": "2015-01-03",
"oil": 5.01,
"gas": 23,
"water": 0,
"gas_injection": 10,
"gas_flare": 0,
"water_injection": 1,
"water_disposal": 0,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24,
"production_time": 1420309325,
"updated_at": 1420313124,
"updated_by": 462
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Create ProductionPOST/wells/{well_id}/production
Create new production data
Example URI
- well_id
number(required)ID of well.
Headers
Content-Type: application/jsonBody
{
"date": "2015-01-04",
"oil": 6.35,
"gas": 52,
"water": 0,
"gas_injection": 0,
"gas_flare": 0,
"water_injection": 0,
"water_disposal": 0,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 2155363,
"date": "2015-01-04",
"oil": 6.35,
"gas": 52,
"water": 0,
"gas_injection": 0,
"gas_flare": 0,
"water_injection": 0,
"water_disposal": 0,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24,
"production_time": 1420384501,
"updated_at": 1420388725,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Well Production ¶
Get ProductionGET/wells/{well_id}/production/{production_id}
Get a single production.
Example URI
- well_id
number(required)ID of well.
- production_id
number(required)ID of production.
200Body
{
"data": {
"id": 2155363,
"date": "2015-01-04",
"oil": 6.35,
"gas": 52,
"water": 0,
"gas_injection": 0,
"gas_flare": 0,
"water_injection": 0,
"water_disposal": 0,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24,
"production_time": 1420384501,
"updated_at": 1420388725,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Production does not exist",
"description": "",
"link": ""
}
}Update ProductionPATCH/wells/{well_id}/production/{production_id}
Update production.
Example URI
- well_id
number(required)ID of well.
- production_id
number(required)ID of production.
Headers
Content-Type: application/jsonBody
{
"date": "2015-01-04",
"oil": 6.35,
"gas": 52,
"water": 0,
"gas_injection": 10,
"gas_flare": 1,
"water_injection": 0,
"water_disposal": 0,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 2155363,
"date": "2015-01-04",
"oil": 6.35,
"gas": 52,
"water": 0,
"gas_injection": 10,
"gas_flare": 1,
"water_injection": 0,
"water_disposal": 0,
"is_operating": true,
"normal_hours_on": 24,
"hours_on": 24,
"production_time": 1420384501,
"updated_at": 1420388725,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Production does not exist",
"description": "",
"link": ""
}
}Delete ProductionDELETE/wells/{well_id}/production/{production_id}
Delete a single production.
Example URI
- well_id
number(required)ID of well.
- production_id
number(required)ID of production.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Production does not exist",
"description": "",
"link": ""
}
}Well Groups ¶
Well Groups ¶
List Well GroupsGET/well-groups{?since}
List all company well groups.
Example URI
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 223,
"name": "Route A",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7768,
7770,
7772
]
}
},
{
"id": 224,
"name": "Route B",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7773,
7774,
7775
]
}
},
{
"id": 225,
"name": "Route C",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7776,
7777,
7778
]
}
}
]
}Create Well GroupPOST/well-groups
Create a new group.
Example URI
Headers
Content-Type: application/jsonBody
{
"name": "Route D"
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 226,
"name": "Route D",
"is_active": true,
"latest_production_time": null,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": []
}
}
}Well Group ¶
Get Well GroupGET/well-groups/{group_id}
Get single group.
Example URI
- group_id
number(required)ID of group.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 225,
"name": "Route C",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7776,
7777,
7778
]
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well group does not exist",
"description": "",
"link": ""
}
}Update Well GroupPATCH/well-groups/{group_id}
Update well group.
Example URI
- group_id
number(required)ID of group.
Headers
Content-Type: application/jsonBody
{
"name": "Route C"
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 225,
"name": "Route C",
"is_active": true,
"latest_production_time": 1430937145,
"created_at": 1420388725,
"updated_at": 1420388725,
"wells": {
"data": [
7776,
7777,
7778
]
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well group does not exist",
"description": "",
"link": ""
}
}Delete Well GroupDELETE/well-groups/{group_id}
Delete a single well group.
Example URI
- group_id
number(required)ID of group.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well group does not exist",
"description": "",
"link": ""
}
}Well Group Wells ¶
Well Group WellsGET/well-groups/{group_id}/wells
Retrieve list of wells in well group.
Example URI
- group_id
number(required)ID of well group.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 7332,
"name": "Eastmark #1",
"alias": "Eastmark #1",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
},
{
"id": 7333,
"name": "Lienz #3",
"alias": "Lienz #3",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:39:22-05:00",
"created_at": "2013-11-13T11:07:46-06:00",
"updated_at": "2015-04-05T14:41:06-05:00"
},
{
"id": 7334,
"name": "Holland Gas #1",
"alias": "Holland Gas #1",
"type": "GAS",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:16-05:00",
"created_at": "2013-11-13T11:08:06-06:00",
"updated_at": "2015-04-05T14:41:06-05:00"
}
]
}Manage Wells in Well Group ¶
Verify Well in Well GroupGET/well-groups/{group_id}/wells/{well_id}
Verify if the well is part of the well group.
Example URI
- group_id
number(required)ID of well group.
- well_id
number(required)ID of well.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 7332,
"name": "Eastmark #1",
"alias": "Eastmark #1",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well is not assigned to this well group.",
"description": "",
"link": ""
}
}Add Well to Well GroupPOST/well-groups/{group_id}/wells/{well_id}
Add well to well group.
Example URI
- group_id
number(required)ID of well group.
- well_id
number(required)ID of well.
201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 7339,
"name": "Young 1-2",
"alias": "Young 1-2",
"type": "OIL",
"is_active": true,
"latest_production_time": "2015-04-05T14:38:45-05:00",
"created_at": "2013-11-13T11:07:18-06:00",
"updated_at": "2015-04-05T14:41:05-05:00"
}
}Remove Well from Well GroupDELETE/well-groups/{group_id}/wells/{well_id}
Remove well from well group.
Example URI
- group_id
number(required)ID of well group.
- well_id
number(required)ID of well.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well is not assigned to this well group.",
"description": "",
"link": ""
}
}Well Group Users ¶
Well Group UsersGET/well-groups/{group_id}/users{?since}
Retrieve list of users with access to the well group.
Example URI
- group_id
number(required)ID of well group.
- since
UNIX time(optional) Example: 1420107010Only users with access granted at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data":[
{
"id":1234,
"name":"John Doe",
"email":"john.doe@domain.com",
"phone":"(123) 456-7890",
"type":ADMIN,
"status":ACTIVE
},
{
"id":1235,
"name":"John Smith",
"email":"john.smith@domain.com",
"phone":"(123) 456-7890",
"type":PUMPER_SUPERVISOR,
"status":ACTIVE
},
{
"id":1236,
"name":"Jane Doe",
"email":"jane.doe@domain.com",
"phone":"(123) 456-7890",
"type":USER,
"status":ACTIVE
}
]
}Manage Well Group Users ¶
Verify Well Group AccessGET/well-groups/{group_id}/users/{user_id}
Verify if the user have access to the well group.
Example URI
- group_id
number(required)ID of well group.
- user_id
number(required)ID of user.
200Headers
Content-Type: application/jsonBody
{
"data":{
"id":1236,
"name":"Jane Doe",
"email":"jane.doe@domain.com",
"phone":"(123) 456-7890",
"type":USER,
"status":ACTIVE
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "User does not have access to the well group.",
"description": "",
"link": ""
}
}Grant Well Group AccessPOST/well-groups/{group_id}/users/{user_id}
Grant well group access to the user.
Example URI
- group_id
number(required)ID of well group.
- user_id
number(required)ID of user.
201Headers
Content-Type: application/jsonBody
{
"data":{
"id":1236,
"name":"Jane Doe",
"email":"jane.doe@domain.com",
"phone":"(123) 456-7890",
"type":USER,
"status":ACTIVE
}
}Revoke Well Group AccessDELETE/well-groups/{group_id}/users/{user_id}
Revoke well group access to the user.
Example URI
- group_id
number(required)ID of well group.
- user_id
number(required)ID of user.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "User does not have access to the well group.",
"description": "",
"link": ""
}
}Fields ¶
Fields ¶
List FieldsGET/fields{?since}
Get all custom fields.
Example URI
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 138,
"name": "Hours",
"type": "DECIMAL",
"unit": "hrs",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 1,
"updated_at": 1452272253
},
{
"id": 139,
"name": "Tubing Pressure",
"type": "DECIMAL",
"unit": "psi",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 2,
"updated_at": 1452272253
},
{
"id": 140,
"name": "Casing Pressure",
"type": "DECIMAL",
"unit": "psi",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 3,
"updated_at": 1452272253
}
]
}Create FieldPOST/fields
Create field.
Example URI
Headers
Content-Type: application/jsonBody
{
"name": "Temperature",
"type": "DECIMAL",
"unit": "",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 4
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 141,
"name": "Temperature",
"type": "DECIMAL",
"unit": "",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 4,
"updated_at": 1452272253
}
}Field ¶
Get FieldGET/fields/{field_id}
Get single field.
Example URI
- field_id
number(required)ID of field.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 140,
"name": "Casing Pressure",
"type": "DECIMAL",
"unit": "psi",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 3,
"updated_at": 1452272253
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field does not exist",
"description": "",
"link": ""
}
}Update FieldPATCH/fields/{field_id}
Update field.
Example URI
- field_id
number(required)ID of field.
Headers
Content-Type: application/jsonBody
{
"name": "Temperature",
"type": "DECIMAL",
"unit": "",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 4
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 141,
"name": "Temperature",
"type": "DECIMAL",
"unit": "",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 4,
"updated_at": 1452272253
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field does not exist",
"description": "",
"link": ""
}
}Delete FieldDELETE/fields/{field_id}
Delete a single field.
Example URI
- field_id
number(required)ID of field.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field does not exist",
"description": "",
"link": ""
}
}Well Fields ¶
Well FieldsGET/wells/{well_id}/fields
Get all fields assigned for this well.
Example URI
- well_id
number(required)ID of well.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 138,
"name": "Hours",
"type": "DECIMAL",
"unit": "hrs",
"is_required": false,
"is_historic": true,
"is_remembered": true,
"order": 1,
"updated_at": "2015-01-12T10:24:10-06:00"
},
{
"id": 141,
"name": "Pumper Phone",
"type": "TEXT",
"unit": "",
"is_required": false,
"is_historic": false,
"is_remembered": true,
"order": 2,
"updated_at": "2015-01-12T10:24:10-06:00"
},
{
"id": 142,
"key": "Casing PSI",
"type": "DECIMAL",
"unit": "psi",
"required": false,
"historic": true,
"is_remembered": true,
"order": 3,
"updated_at": "2015-01-12T10:24:10-06:00"
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Well Field Values ¶
List ValuesGET/wells/{well_id}/fields/{field_id}/values{?start,end,since}
Get field values of specific well.
Example URI
- well_id
number(required)ID of well.
- field_id
number(required)ID of field.
- start
date(optional) Default: 31 days before the present date. Example: 2015-01-01The date on which the requested production period starts. Check the Date Range Limit.
- end
date(optional) Default: the present date. Example: 2015-01-31The date on which the requested production period ends.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago. Using this, start and end date will be ignored.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 2544,
"value": "350.00",
"reading_time": 1420530851,
"updated_at": 1452272120,
"updated_by": 462
},
{
"id": 2547,
"value": "30.00",
"reading_time": 1420619024,
"updated_at": 1452272120,
"updated_by": 462
},
{
"id": 2550,
"value": "120.34",
"reading_time": 1420716553,
"updated_at": 1452272120,
"updated_by": 462
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field does not exist",
"description": "",
"link": ""
}
}Create ValuePOST/wells/{well_id}/fields/{field_id}/values
Create a field value for a specific well.
Example URI
- well_id
number(required)ID of well.
- field_id
number(required)ID of field.
Headers
Content-Type: application/jsonBody
{
"value": "175",
"reading_time": 1452272253
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 485402,
"value": "175",
"reading_time": 1452272253,
"updated_at": 1452272120,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field does not exist",
"description": "",
"link": ""
}
}Well Field Value ¶
Get ValueGET/wells/{well_id}/fields/{field_id}/values/{value_id}
Get field value for a specific well.
Example URI
- well_id
number(required)ID of well.
- field_id
number(required)ID of field.
- value_id
number(required)ID of field value.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 479402,
"value": "175",
"reading_time": 1452272253,
"updated_at": 1452272120,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field value does not exist",
"description": "",
"link": ""
}
}Update ValuePATCH/wells/{well_id}/fields/{field_id}/values/{value_id}
Update field value for a specific well.
Example URI
- well_id
number(required)ID of well.
- field_id
number(required)ID of field.
- value_id
number(required)ID of field value.
Headers
Content-Type: application/jsonBody
{
"value": "180",
"reading_time": 1452272253
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 479402,
"value": "175",
"reading_time": 1452272253,
"updated_at": 1452272120,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field value does not exist",
"description": "",
"link": ""
}
}Delete ValueDELETE/wells/{well_id}/fields/{field_id}/values/{value_id}
Delete field value for a specific well.
Example URI
- well_id
number(required)ID of well.
- field_id
number(required)ID of field.
- value_id
number(required)ID of field value.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Field value does not exist",
"description": "",
"link": ""
}
}Validation Rules ¶
Well Validation Rules ¶
List Validation RulesGET/wells/{well_id}/validation-rules{?since}
Get validation rules for well.
Example URI
- well_id
number(required)ID of well.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 134,
"level": "ERROR",
"production_type": "OIL",
"field_id": null,
"condition": "BELOW",
"argument": 0,
"argument_2": null,
"created_at": 1448715908,
"updated_at": 1448715908,
"updated_by": 462
},
{
"id": 135,
"level": "WARNING",
"production_type": "WATER",
"field_id": null,
"condition": "ABOVE",
"argument": 200,
"argument_2": null,
"created_at": 1448715908,
"updated_at": 1448715908,
"updated_by": 462
},
{
"id": 136,
"level": "WARNING",
"production_type": null,
"field_id": 45,
"condition": "BETWEEN",
"argument": 50,
"argument_2": 75,
"created_at": 1448715908,
"updated_at": 1448715908,
"updated_by": 462
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
Create Validation RulePOST/wells/{well_id}/validation-rules
Create a new validation rule for well.
Example URI
- well_id
number(required)ID of well.
Headers
Content-Type: application/jsonBody
{
"level": "ERROR",
"production_type": "OIL",
"field_id": 55,
"condition": "EXACT",
"argument": 0,
"argument_2": null
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 137,
"level": "ERROR",
"production_type": null,
"field_id": 55,
"condition": "EXACT",
"argument": 0,
"argument_2": null,
"created_at": 1448715908,
"updated_at": 1448715908,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Well Validation Rule ¶
Get Validation RuleGET/wells/{well_id}/validation-rules/{rule_id}
Get single validation rule.
Example URI
- well_id
number(required)ID of well.
- rule_id
number(required)ID of validation rule.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 134,
"level": "ERROR",
"production_type": "OIL",
"field_id": null,
"condition": "BELOW",
"argument": 0,
"argument_2": null,
"created_at": 1448715908,
"updated_at": 1448715908,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Validation rule does not exist",
"description": "",
"link": ""
}
}Update Validation RulePATCH/wells/{well_id}/validation-rules/{rule_id}
Update validation rule.
Example URI
- well_id
number(required)ID of well.
- rule_id
number(required)ID of validation rule.
Headers
Content-Type: application/jsonBody
{
"level": "ERROR",
"production_type": "OIL",
"field_id": 50,
"condition": "EXACT",
"argument": 0,
"argument_2": null
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 137,
"level": "ERROR",
"production_type": "OIL",
"field_id": 50,
"condition": "EXACT",
"argument": 0,
"argument_2": null,
"created_at": 1448715908,
"updated_at": 1448715908,
"updated_by": 462
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Validation rule does not exist",
"description": "",
"link": ""
}
}Delete Validation RuleDELETE/wells/{well_id}/validation-rules/{rule_id}
Delete a single validation rule.
Example URI
- well_id
number(required)ID of well.
- rule_id
number(required)ID of validation rule.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Validation rule does not exist",
"description": "",
"link": ""
}
}Notes ¶
Well Notes ¶
List NotesGET/wells/{well_id}/notes{?since}
Get notes made on the well.
Example URI
- well_id
number(required)ID of well.
- since
UNIX time(optional) Example: 1420107010Only items updated at or after this time will be listed. It is limited to 31 days ago.
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": 294,
"note_time": 1448715908,
"message": "Dump valve had trash in it. Cleared out",
"author": 462,
"is_pumper_comment": true,
"created_at": 1448715908,
"updated_at": 1448715908
},
{
"id": 178,
"note_time": 1448715908,
"message": "Shut in for pipeline repairs.",
"author": 462,
"is_pumper_comment": true,
"created_at": 1448715908,
"updated_at": 1448715908
},
{
"id": 912,
"note_time": 1448715908,
"message": "Unit ran 13% yesterday",
"author": 462,
"is_pumper_comment": true,
"created_at": 1448715908,
"updated_at": 1448715908
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
Create NotePOST/wells/{well_id}/notes
Create a new note.
Example URI
- well_id
number(required)ID of well.
Headers
Content-Type: application/jsonBody
{
"note_time": 1448715908,
"message": "Dump valve had trash in it. Cleared out",
"is_pumper_comment": true
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": 294,
"note_time": 1448715908,
"message": "Dump valve had trash in it. Cleared out",
"author": 462,
"is_pumper_comment": true,
"created_at": 1448715908,
"updated_at": 1448715908
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Well Note ¶
Get NoteGET/wells/{well_id}/notes/{note_id}
Get single note.
Example URI
- well_id
number(required)ID of well.
- note_id
number(required)ID of note.
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 294,
"note_time": 1448715908,
"message": "Dump valve had trash in it. Cleared out",
"author": 462,
"is_pumper_comment": true,
"created_at": 1448715908,
"updated_at": 1448715908
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Note does not exist",
"description": "",
"link": ""
}
}Update NotePATCH/wells/{well_id}/notes/{note_id}
Update note.
Example URI
- well_id
number(required)ID of well.
- note_id
number(required)ID of note.
Headers
Content-Type: application/jsonBody
{
"note_time": 1448715908,
"message": "Dump valve had trash in it. Cleared out",
"is_pumper_comment": true
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": 294,
"note_time": 1448715908,
"message": "Dump valve had trash in it. Cleared out",
"author": 462,
"is_pumper_comment": true,
"created_at": 1448715908,
"updated_at": 1448715908
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Note does not exist",
"description": "",
"link": ""
}
}Delete NoteDELETE/wells/{well_id}/notes/{note_id}
Delete a single note.
Example URI
- well_id
number(required)ID of well.
- note_id
number(required)ID of note.
204404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Note does not exist",
"description": "",
"link": ""
}
}Well Tests ¶
Well Tests ¶
List Well TestsGET/wells/{well_id}/well-tests{?start,end,since}
Get a list of well tests of a specific well.
Example URI
- well_id
number(required)ID of well.
- start
date(optional) Default: 31 days before the present date. Example: 2023-02-01The date on which the requested production period starts. Check the Date Range Limit.
- end
date(optional) Default: the present date. Example: 2023-03-01The date on which the requested production period ends.
- since
UNIX time(optional) Example: 1682956330Only items updated at or after this time will be listed. It is limited to 31 days ago. Using this, start and end date will be ignored.
200Body
{
"data": [
{
"id": 3295,
"date": "2023-02-03",
"duration": 10,
"oil": 20,
"gas": null,
"water": null
},
{
"id": 3304,
"date": "2023-02-17",
"duration": 48,
"oil": 20,
"gas": null,
"water": null
},
{
"id": 3305,
"date": "2023-02-21",
"duration": 24,
"oil": 20,
"gas": null,
"water": null
}
]
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}Well Test ¶
Get Well TestGET/wells/{well_id}/well-tests/{well_test_id}
Get a single well test.
Example URI
- well_id
number(required)ID of well.
- well_test_id
number(required)ID of well test.
200Body
{
"data": {
"id": 3295,
"date": "2023-02-03",
"duration": 10,
"oil": 20,
"gas": null,
"water": null,
"updated_by": 1659,
"updated_at": 1675439474
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"code": "GEN-LIKETHEWIND",
"http_code": 404,
"message": "Well does not exist",
"description": "",
"link": ""
}
}