Skip to main content
POST
/
api
/
v1
/
pricing
/
summary
Pricing Summary
curl --request POST \
  --url https://api.example.com/api/v1/pricing/summary \
  --header 'Content-Type: application/json' \
  --data '{}'
{
  "numberOfFeatures": 123,
  "numberOfInformationFeatures": 123,
  "numberOfIntegrationFeatures": 123,
  "numberOfIntegrationApiFeatures": 123,
  "numberOfIntegrationExtensionFeatures": 123,
  "numberOfIntegrationIdentityProviderFeatures": 123,
  "numberOfIntegrationWebSaaSFeatures": 123,
  "numberOfIntegrationMarketplaceFeatures": 123,
  "numberOfIntegrationExternalDeviceFeatures": 123,
  "numberOfDomainFeatures": 123,
  "numberOfAutomationFeatures": 123,
  "numberOfBotAutomationFeatures": 123,
  "numberOfFilteringAutomationFeatures": 123,
  "numberOfTrackingAutomationFeatures": 123,
  "numberOfTaskAutomationFeatures": 123,
  "numberOfManagementFeatures": 123,
  "numberOfGuaranteeFeatures": 123,
  "numberOfSupportFeatures": 123,
  "numberOfPaymentFeatures": 123,
  "numberOfUsageLimits": 123,
  "numberOfRenewableUsageLimits": 123,
  "numberOfNonRenewableUsageLimits": 123,
  "numberOfPlans": 123,
  "numberOfFreePlans": 123,
  "numberOfPaidPlans": 123,
  "numberOfAddOns": 123,
  "numberOfReplacementAddons": 123,
  "numberOfExtensionAddons": 123,
  "minSubscriptionPrice": 123,
  "maxSubscriptionPrice": 123
}
The Pricing Summary endpoint provides immediate, synchronous analysis of a pricing configuration file. It returns comprehensive statistics about plans, features, add-ons, and usage limits without requiring asynchronous job processing.

Endpoint

POST /api/v1/pricing/summary
This is a synchronous operation that returns results immediately.

Request

Headers

Content-Type: multipart/form-data

Parameters

pricingFile
file
required
The YAML file containing the pricing configuration. Must conform to the iPricing specification format.See Pricing Models for the complete schema.

Example Request

curl -X POST "http://localhost:3000/api/v1/pricing/summary" \
  -F "[email protected]"

Response

Success Response (200 OK)

numberOfFeatures
integer
required
Total number of unique features defined in the pricing model
numberOfInformationFeatures
integer
required
Number of INFORMATION type features
numberOfIntegrationFeatures
integer
required
Number of INTEGRATION type features
numberOfIntegrationApiFeatures
integer
required
Number of API integration features
numberOfIntegrationExtensionFeatures
integer
required
Number of extension integration features
numberOfIntegrationIdentityProviderFeatures
integer
required
Number of identity provider integration features
numberOfIntegrationWebSaaSFeatures
integer
required
Number of web SaaS integration features
numberOfIntegrationMarketplaceFeatures
integer
required
Number of marketplace integration features
numberOfIntegrationExternalDeviceFeatures
integer
required
Number of external device integration features
numberOfDomainFeatures
integer
required
Number of DOMAIN type features
numberOfAutomationFeatures
integer
required
Number of AUTOMATION type features
numberOfBotAutomationFeatures
integer
required
Number of bot automation features
numberOfFilteringAutomationFeatures
integer
required
Number of filtering automation features
numberOfTrackingAutomationFeatures
integer
required
Number of tracking automation features
numberOfTaskAutomationFeatures
integer
required
Number of task automation features
numberOfManagementFeatures
integer
required
Number of MANAGEMENT type features
numberOfGuaranteeFeatures
integer
required
Number of GUARANTEE type features
numberOfSupportFeatures
integer
required
Number of SUPPORT type features
numberOfPaymentFeatures
integer
required
Number of PAYMENT type features
numberOfUsageLimits
integer
required
Total number of usage limits defined
numberOfRenewableUsageLimits
integer
required
Number of RENEWABLE type usage limits
numberOfNonRenewableUsageLimits
integer
required
Number of NON_RENEWABLE type usage limits
numberOfPlans
integer
required
Total number of pricing plans
numberOfFreePlans
integer
required
Number of plans with price = 0
numberOfPaidPlans
integer
required
Number of plans with price > 0
numberOfAddOns
integer
required
Total number of add-ons available
numberOfReplacementAddons
integer
required
Number of replacement add-ons (replace plan features/limits)
numberOfExtensionAddons
integer
required
Number of extension add-ons (extend plan usage limits)
minSubscriptionPrice
number
required
Minimum subscription price across all plans
maxSubscriptionPrice
number
required
Maximum subscription price across all plans

Example Response

{
  "numberOfFeatures": 19,
  "numberOfInformationFeatures": 1,
  "numberOfIntegrationFeatures": 5,
  "numberOfIntegrationApiFeatures": 1,
  "numberOfIntegrationExtensionFeatures": 0,
  "numberOfIntegrationIdentityProviderFeatures": 0,
  "numberOfIntegrationWebSaaSFeatures": 4,
  "numberOfIntegrationMarketplaceFeatures": 0,
  "numberOfIntegrationExternalDeviceFeatures": 0,
  "numberOfDomainFeatures": 12,
  "numberOfAutomationFeatures": 0,
  "numberOfBotAutomationFeatures": 0,
  "numberOfFilteringAutomationFeatures": 0,
  "numberOfTrackingAutomationFeatures": 0,
  "numberOfTaskAutomationFeatures": 0,
  "numberOfManagementFeatures": 0,
  "numberOfGuaranteeFeatures": 0,
  "numberOfSupportFeatures": 1,
  "numberOfPaymentFeatures": 0,
  "numberOfUsageLimits": 2,
  "numberOfRenewableUsageLimits": 0,
  "numberOfNonRenewableUsageLimits": 1,
  "numberOfPlans": 3,
  "numberOfFreePlans": 1,
  "numberOfPaidPlans": 2,
  "numberOfAddOns": 0,
  "numberOfReplacementAddons": 0,
  "numberOfExtensionAddons": 0,
  "minSubscriptionPrice": 0.0,
  "maxSubscriptionPrice": 42.0
}

Error Responses

400 Bad Request

Returned when:
  • No file is uploaded
  • The uploaded file contains invalid YAML syntax
  • The file is not in YAML format
{
  "error": "Pricing YAML file is required. Please upload a file."
}
{
  "error": "Invalid YAML syntax",
  "details": "bad indentation of a mapping entry at line 15, column 3"
}

422 Unprocessable Entity

Returned when the YAML is valid but doesn’t conform to the iPricing schema:
{
  "error": "Invalid pricing schema",
  "details": "Missing required field: plans"
}

500 Internal Server Error

Returned when an unexpected error occurs during processing:
{
  "error": "Internal server error during summary generation",
  "details": "Failed to parse feature types"
}

Use Cases

Quickly check if a pricing model has been parsed correctly before running more expensive analysis operations.
curl -X POST "http://localhost:3000/api/v1/pricing/summary" \
  -F "[email protected]" | jq '.numberOfPlans'
Compare statistics between different versions of a pricing model to understand changes.
const v1Summary = await getSummary('pricing-v1.yaml');
const v2Summary = await getSummary('pricing-v2.yaml');

console.log('Added features:', 
  v2Summary.numberOfFeatures - v1Summary.numberOfFeatures
);
Generate real-time dashboard metrics for pricing model complexity analysis.
summary = get_pricing_summary('current.yaml')

metrics = {
    'model_complexity': summary['numberOfPlans'] * summary['numberOfAddOns'],
    'integration_ratio': summary['numberOfIntegrationFeatures'] / summary['numberOfFeatures'],
    'free_tier_available': summary['numberOfFreePlans'] > 0
}

Implementation Details

The summary endpoint is implemented in /home/daytona/workspace/source/analysis_api/src/api/summary.ts:13.

Processing Steps

  1. File Upload: Multer middleware extracts the uploaded file
  2. YAML Parsing: Content is parsed using the pricing4ts library
  3. Metrics Calculation: Statistics are computed from the parsed pricing data:
    • Feature counting by type and subtype
    • Plan classification (free vs. paid)
    • Add-on categorization (replacement vs. extension)
    • Price range calculation
  4. Response: JSON response with all calculated metrics

Performance

The summary endpoint typically completes in under 100ms for models with:
  • Up to 100 features
  • Up to 20 plans
  • Up to 50 add-ons
For very large pricing models (500+ features), consider implementing caching or using the asynchronous analysis endpoint instead.

Validation

Validate pricing model for logical coherence

Analysis Jobs

Create asynchronous analysis jobs

Build docs developers (and LLMs) love