Difference between revisions of "PVT API"

From wiki.pengtools.com
Jump to: navigation, search
Line 33: Line 33:
 
==Synchronous request — POST /pvt-calculator/calc==
 
==Synchronous request — POST /pvt-calculator/calc==
  
The request body is a JSON object containing PVT calculator attributes (see §4) plus two optional unit-control keys:
+
The request body is a JSON object containing PVT calculator attributes plus two optional unit-control keys:
  
 
{
 
{

Revision as of 17:05, 14 July 2026

PVT API

The PVT calculator models reservoir fluid properties (oil, gas, water) over a pressure range using various correlations, and returns property curves (plots), single‑point reservoir‑condition values (solution), and a stepped property table (results).

Endpoints

All endpoints require the Authorization: Bearer <api_key> header and are subject to rate limiting. The response envelope is always { "success": <bool>, "data": <payload> }

Method Path Purpose
POST /pvt-calculator/calc Synchronous — compute and return the result in the same request
POST /pvt-calculator/calc-async Asynchronous — enqueue a job, return a {token}
GET /pvt-calculator/{token}/status Job status and progress
GET /pvt-calculator/{token}/output-data Job result (same shape as the sync data)
GET /pvt-calculator/{token}/input-data The input the job was created with
POST /pvt-calculator/{token}/start Reset and re-run the job
POST /pvt-calculator/{token}/stop Stop a running job
DELETE /pvt-calculator/{token} Delete the job

Use /calc (synchronous) for normal interactive requests — a single PVT model computes in well under a second and the result comes back in the HTTP response.

Use /calc-async only for batch/heavy workloads where you would rather not hold an open HTTP connection. The async path enqueues an api_task row that is picked up by the CalcDaemon worker; you then poll status and fetch output-data. The async job runs the same calculatePvt() code as the sync endpoint, so the result is identical for identical input.

Synchronous request — POST /pvt-calculator/calc

The request body is a JSON object containing PVT calculator attributes plus two optional unit-control keys:

{

 "unit_system": "RU",
 "defaultFluidType": "OIL",
 "maximumPressure": 300,
 "reservoirPressure": 300,
 "temperature": 90,
 "pBubbleInitial": 200,
 "rsbInitial": 60,
 "isRsbUsedForPb": true,
 "sgOil": 0.85,
 "sgGas": 0.75,
 "sgWater": 1.0

}

On success the endpoint returns HTTP 200 with:

{

 "success": true,
 "data": {
   "plots": {},
   "solution": {},
   "results": {}
 }

}

Where data carries:

  • plots — property curves
  • solution — single-point reservoir-condition values
  • results — stepped property table