External Pricing Engine
Context
This document provides detailed instructions for Node Providers to integrate the external pricing engine into their system. The external pricing engine is designed to automate the pricing process for customer requests received via the Data3 Console or Node Provider service.
The purpose of integrating the external pricing engine is to streamline the pricing process for Node Providers by automating the calculation and submission of bids for customer requests.
Architecture
The external pricing engine operates as a REST API/service that accepts customer request information in JSON format, calculates the price based on this information, and then triggers a webhook in the Node Provider service with the bid price. This allows Node Providers to automate their bidding process without manual intervention.

Specification
Node Providers can implement the external pricing engine in any platform or stack they have expertise in. However, a sample NodeJS application is provided as a reference implementation (below).
Input JSON Format (HTTP POST)
{
name: 'My Dev Deployment',
address: '581037272ca2533df3cf215dceac56c3fe8a1d6cc7317ec28e5e257e556ed056',
region: 'WESTERN_EUROPE-United Kingdom-London',
dbEngine: 'MySQL',
dbEngineVersion: '8.2.0',
specification: 'DB AI MODEL K12 - 256 GB RAM - 64 vCPU(s)',
memory: 256,
storage: 4100,
cpu: 64,
isRedundancyRequired: true,
redundancy: 1,
isBackupRequired: true,
backupFrequencyDays: 2,
backupRetentionDays: 1,
deploymentType: 'SHARED',
isSharedInstance: true,
iops: 1000,
paymentFrequency: 'MONTHLY',
isActive: true,
status: 'NEW',
dateCreated: 1709156623175,
dbOwner: '0xa1d2339b6d633e129f3aeb2a59a8445dbb8b4117'
}
Output Web Hook to Node Provider Service (FORM POST)
rspAddress: "581037272ca2533df3cf215dceac56c3fe8a1d6cc7317ec28e5e257e556ed056"
price: 100.0
rspAddress
is the unique address / identifier for the customer's deployment request (from the input)price
is the calculated price for this deployment
Sample Pricing App
To achieve this automated pricing easily, we have provided a sample NodeJS application that you can leverage to implement your own pricing engine.
Review the provided sample NodeJS application hosted on GitHub: data3-sample-pricing-app. This application serves as a reference for implementing the external pricing engine.
Program your pricing logic in the
calculatePrice
function within thepricing.js
file of the sample application. This function should accept customer request information as input and return the calculated price.Set up environment variables as specified in the
env.sh
file of the sample application. Specifically, configure theWEBHOOK_URL
variable to point to the webhook endpoint in the Node Provider service where bid prices will be submitted.Install dependencies and start the sample application by executing the following commands within the sample application directory:
npm install
npm start
This will start this sample NodeJS REST application at http://localhost:3080 and will publish an endpoint at http://localhost:3080/price
Once the sample application is running, test the integration by configuring the Node Provider Service's environment variable EXTERNAL_API_ENDPOINT to point to this sample pricing endpoint at http://localhost:3080/price sample and ensuring that customer requests are sent to the external pricing engine and verify that bid prices are submitted to the Node Provider service via the Data3 Console.
For more details, please refer to the README.md file of the sample application.
Resources
Sample NodeJS Application: data3-sample-pricing-app
README.md: README.md
Last updated