openapi: 3.1.0
info:
title: ComboCurve REST v1 custom-columns v1 projects API
version: v1
description: 'ComboCurve REST API for oil & gas well forecasting, type curves, production data, reserves and economics. Base URL https://api.combocurve.com. Authentication requires two headers: a signed bearer token (Authorization) generated from a Service Account Key, and an x-api-key. Derived by API Evangelist from the official public ComboCurve Postman collection.'
contact:
name: ComboCurve API Support
url: https://forum.api.combocurve.com/
servers:
- url: https://api.combocurve.com
description: Production
security:
- apiKeyAuth: []
bearerAuth: []
tags:
- name: v1 projects
description: projects operations
paths:
/v1/projects:
head:
operationId: head-projects
summary: head-projects
tags:
- v1 projects
description: Returns metadata about the existing project documents.
parameters:
- name: skip
in: query
required: false
schema:
type: integer
description: number of items to skip
- name: take
in: query
required: false
schema:
type: integer
description: max records to return
- name: createdAt
in: query
required: false
schema:
type: string
description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
- name: name
in: query
required: false
schema:
type: string
description: filter by name
- name: updatedAt
in: query
required: false
schema:
type: string
description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
get:
operationId: get-projects
summary: get-projects
tags:
- v1 projects
description: Returns a list of project documents.
parameters:
- name: skip
in: query
required: false
schema:
type: integer
description: number of items to skip
- name: take
in: query
required: false
schema:
type: integer
description: max records to return
- name: sort
in: query
required: false
schema:
type: string
description: field to sort by, including + or - at the beginning for ascending or descending order, respectively
- name: cursor
in: query
required: false
schema:
type: string
description: used in pagination to get the next page
- name: createdAt
in: query
required: false
schema:
type: string
description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
- name: name
in: query
required: false
schema:
type: string
description: filter by name
- name: updatedAt
in: query
required: false
schema:
type: string
description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
post:
operationId: post-projects
summary: post-projects
tags:
- v1 projects
description: Inserts a list of project documents.
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties:
name:
type: string
responses:
'201':
description: Created
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
/v1/projects/{id}:
delete:
operationId: delete-project-by-id
summary: delete-project-by-id
tags:
- v1 projects
description: Delete the project document that matches the given id.
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
get:
operationId: get-project-by-id
summary: get-project-by-id
tags:
- v1 projects
description: Returns the project document that matches the given id.
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
/v1/projects/{projectId}/company-wells:
delete:
operationId: delete-project-company-wells
summary: delete-project-company-wells
tags:
- v1 projects
description: Remove the company wells documents that match the given filters from the projectId scope.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
- name: chosenID
in: query
required: false
schema:
type: string
description: filter by chosenID
- name: dataSource
in: query
required: false
schema:
type: string
description: filter by dataSource
- name: id
in: query
required: false
schema:
type: string
description: filter by id
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
head:
operationId: head-project-company-wells
summary: head-project-company-wells
tags:
- v1 projects
description: Returns metadata about the existing company well documents in projectId scope.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
- name: skip
in: query
required: false
schema:
type: integer
description: number of items to skip
- name: take
in: query
required: false
schema:
type: integer
description: max records to return
- name: api10
in: query
required: false
schema:
type: string
description: filter by api10
- name: api12
in: query
required: false
schema:
type: string
description: filter by api12
- name: county
in: query
required: false
schema:
type: string
description: filter by county
- name: state
in: query
required: false
schema:
type: string
description: filter by state
- name: wellName
in: query
required: false
schema:
type: string
description: filter by wellName
- name: chosenID
in: query
required: false
schema:
type: string
description: filter by chosenID
- name: inptID
in: query
required: false
schema:
type: string
description: filter by inptID
- name: api14
in: query
required: false
schema:
type: string
description: filter by api14
- name: createdAt
in: query
required: false
schema:
type: string
description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
- name: updatedAt
in: query
required: false
schema:
type: string
description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
- name: dataSource
in: query
required: false
schema:
type: string
description: filter by dataSource
- name: currentOperator
in: query
required: false
schema:
type: string
description: filter by dataSource
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
get:
operationId: get-project-company-wells
summary: get-project-company-wells
tags:
- v1 projects
description: Returns a list of company well documents in projectId scope.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
- name: skip
in: query
required: false
schema:
type: integer
description: number of items to skip
- name: take
in: query
required: false
schema:
type: integer
description: max records to return
- name: sort
in: query
required: false
schema:
type: string
description: field to sort by, including + or - at the beginning for ascending or descending order, respectively
- name: cursor
in: query
required: false
schema:
type: string
description: used in pagination to get the next page
- name: api10
in: query
required: false
schema:
type: string
description: filter by api10
- name: api12
in: query
required: false
schema:
type: string
description: filter by api12
- name: county
in: query
required: false
schema:
type: string
description: filter by county
- name: state
in: query
required: false
schema:
type: string
description: filter by state
- name: wellName
in: query
required: false
schema:
type: string
description: filter by wellName
- name: chosenID
in: query
required: false
schema:
type: string
description: filter by chosenID
- name: inptID
in: query
required: false
schema:
type: string
description: filter by inptID
- name: api14
in: query
required: false
schema:
type: string
description: filter by api14
- name: createdAt
in: query
required: false
schema:
type: string
description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
- name: updatedAt
in: query
required: false
schema:
type: string
description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
- name: dataSource
in: query
required: false
schema:
type: string
description: filter by dataSource
- name: currentOperator
in: query
required: false
schema:
type: string
description: filter by dataSource
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
post:
operationId: post-project-company-wells
summary: post-project-company-wells
tags:
- v1 projects
parameters:
- name: projectId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties:
dataSource:
type: string
chosenID:
type: string
id:
type: string
projectCustomHeader:
type: string
projectCustomHeader1:
type: string
projectCustomHeader2:
type: string
projectCustomHeader3:
type: string
projectCustomHeader4:
type: string
projectCustomHeader5:
type: string
projectCustomHeader6:
type: string
projectCustomHeader7:
type: string
projectCustomHeader8:
type: string
projectCustomHeader9:
type: string
projectCustomHeader10:
type: string
projectCustomHeader11:
type: string
projectCustomHeader12:
type: string
projectCustomHeader13:
type: string
projectCustomHeader14:
type: string
projectCustomHeader15:
type: string
projectCustomHeader16:
type: string
projectCustomHeader17:
type: string
projectCustomHeader18:
type: string
projectCustomHeader19:
type: string
projectCustomHeader20:
type: string
projectCustomHeader21:
type: string
projectCustomHeader22:
type: string
projectCustomHeader23:
type: string
projectCustomHeader24:
type: string
projectCustomHeader25:
type: string
projectCustomHeader26:
type: string
projectCustomHeader27:
type: string
projectCustomHeader28:
type: string
projectCustomHeader29:
type: string
projectCustomHeader30:
type: string
projectCustomHeader31:
type: string
projectCustomHeader32:
type: string
projectCustomHeader33:
type: string
projectCustomHeader34:
type: string
projectCustomHeader35:
type: string
projectCustomHeader36:
type: string
projectCustomHeader37:
type: string
projectCustomHeader38:
type: string
projectCustomHeader39:
type: string
projectCustomHeader40:
type: string
projectCustomHeader41:
type: string
projectCustomHeader42:
type: string
projectCustomHeader43:
type: string
projectCustomHeader44:
type: string
projectCustomHeader45:
type: string
projectCustomHeader46:
type: string
projectCustomHeader47:
type: string
projectCustomHeader48:
type: string
projectCustomHeader49:
type: string
responses:
'201':
description: Created
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
patch:
operationId: patch-project-company-wells
summary: patch-project-company-wells
tags:
- v1 projects
description: Updates only the custom project headers for existing wells in the project
parameters:
- name: projectId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties:
dataSource:
type: string
chosenID:
type: string
id:
type: string
projectCustomHeader:
type: string
projectCustomHeader1:
type: string
projectCustomHeader2:
type: string
projectCustomHeader3:
type: string
projectCustomHeader4:
type: string
projectCustomHeader5:
type: string
projectCustomHeader6:
type: string
projectCustomHeader7:
type: string
projectCustomHeader8:
type: string
projectCustomHeader9:
type: string
projectCustomHeader10:
type: string
projectCustomHeader11:
type: string
projectCustomHeader12:
type: string
projectCustomHeader13:
type: string
projectCustomHeader14:
type: string
projectCustomHeader15:
type: string
projectCustomHeader16:
type: string
projectCustomHeader17:
type: string
projectCustomHeader18:
type: string
projectCustomHeader19:
type: string
projectCustomHeader20:
type: string
projectCustomHeader21:
type: string
projectCustomHeader22:
type: string
projectCustomHeader23:
type: string
projectCustomHeader24:
type: string
projectCustomHeader25:
type: string
projectCustomHeader26:
type: string
projectCustomHeader27:
type: string
projectCustomHeader28:
type: string
projectCustomHeader29:
type: string
projectCustomHeader30:
type: string
projectCustomHeader31:
type: string
projectCustomHeader32:
type: string
projectCustomHeader33:
type: string
projectCustomHeader34:
type: string
projectCustomHeader35:
type: string
projectCustomHeader36:
type: string
projectCustomHeader37:
type: string
projectCustomHeader38:
type: string
projectCustomHeader39:
type: string
projectCustomHeader40:
type: string
projectCustomHeader41:
type: string
projectCustomHeader42:
type: string
projectCustomHeader43:
type: string
projectCustomHeader44:
type: string
projectCustomHeader45:
type: string
projectCustomHeader46:
type: string
projectCustomHeader47:
type: string
projectCustomHeader48:
type: string
projectCustomHeader49:
type: string
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
/v1/projects/{projectId}/company-wells/{id}:
get:
operationId: get-project-company-well-by-id
summary: get-project-company-well-by-id
tags:
- v1 projects
parameters:
- name: projectId
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
/v1/projects/{projectId}/daily-productions:
delete:
operationId: delete-project-daily-productions
summary: delete-project-daily-productions
tags:
- v1 projects
description: Delete the daily productions documents that match the given filters.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
- name: well
in: query
required: false
schema:
type: string
description: (Required) filter by well ID
- name: startDate
in: query
required: false
schema:
type: string
description: filter by startDate
- name: endDate
in: query
required: false
schema:
type: string
description: filter by endDate
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
head:
operationId: head-projects-daily-productions
summary: head-projects-daily-productions
tags:
- v1 projects
description: Returns metadata about the existing daily production documents in the specified project's scope.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
- name: skip
in: query
required: false
schema:
type: integer
description: number of items to skip
- name: take
in: query
required: false
schema:
type: integer
description: max records to return
- name: createdAt
in: query
required: false
schema:
type: string
description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
- name: well
in: query
required: false
schema:
type: string
description: filter by well
- name: updatedAt
in: query
required: false
schema:
type: string
description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
get:
operationId: get-projects-daily-productions
summary: get-projects-daily-productions
tags:
- v1 projects
description: Returns a list of daily production documents in the specified project's scope.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
- name: skip
in: query
required: false
schema:
type: integer
description: number of items to skip
- name: sort
in: query
required: false
schema:
type: string
description: field to sort by, including + or - at the beginning for ascending or descending order, respectively
- name: cursor
in: query
required: false
schema:
type: string
description: used in pagination to get the next page
- name: take
in: query
required: false
schema:
type: integer
description: max records to return
- name: createdAt
in: query
required: false
schema:
type: string
description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
- name: well
in: query
required: false
schema:
type: string
description: filter by well
- name: updatedAt
in: query
required: false
schema:
type: string
description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
post:
operationId: post-projects-daily-productions
summary: post-projects-daily-productions
tags:
- v1 projects
description: Upserts a list of daily production documents in projectId scope.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties:
date:
type: string
format: date
bottomHolePressure:
type: number
casingHeadPressure:
type: number
choke:
type: number
chosenID:
type: string
co2Injection:
type: number
customNumber0:
type: number
customNumber1:
type: number
customNumber2:
type: number
customNumber3:
type: number
customNumber4:
type: number
customNumber5:
type: number
customNumber6:
type: number
customNumber7:
type: number
customNumber8:
type: number
customNumber9:
type: number
customNumber10:
type: number
customNumber11:
type: number
customNumber12:
type: number
customNumber13:
type: number
customNumber14:
type: number
customNumber15:
type: number
customNumber16:
type: number
customNumber17:
type: number
customNumber18:
type: number
customNumber19:
type: number
dataSource:
type: string
flowlinePressure:
type: number
gas:
type: number
gasInjection:
type: number
gasLiftInjectionPressure:
type: number
hoursOn:
type: number
ngl:
type: number
oil:
type: number
operationalTag:
type: string
steamInjection:
type: number
tubingHeadPressure:
type: number
vesselSeparatorPressure:
type: number
water:
type: number
waterInjection:
type: number
well:
type: string
responses:
'201':
description: Created
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
'429':
description: Too many requests - rate limit exceeded
put:
operationId: put-projects-daily-productions
summary: put-projects-daily-productions
tags:
- v1 projects
description: Upserts a list of daily production documents in projectId scope.
parameters:
- name: projectId
in: path
required: true
schema:
type: string
requestBody:
required:
# --- truncated at 32 KB (1147 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/combocurve/refs/heads/main/openapi/combocurve-v1-projects-api-openapi.yml