46 lines
No EOL
22 KiB
HTML
46 lines
No EOL
22 KiB
HTML
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>API Documentation</title>
|
|
<link rel="stylesheet" type="text/css" href="https://unpkg.com/swagger-ui-dist@4.15.5/swagger-ui.css" />
|
|
<style>
|
|
html {
|
|
box-sizing: border-box;
|
|
overflow: -moz-scrollbars-vertical;
|
|
overflow-y: scroll;
|
|
}
|
|
*, *:before, *:after {
|
|
box-sizing: inherit;
|
|
}
|
|
body {
|
|
margin:0;
|
|
background: #fafafa;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="swagger-ui"></div>
|
|
<script src="https://unpkg.com/swagger-ui-dist@4.15.5/swagger-ui-bundle.js"></script>
|
|
<script src="https://unpkg.com/swagger-ui-dist@4.15.5/swagger-ui-standalone-preset.js"></script>
|
|
<script>
|
|
window.onload = function() {
|
|
const ui = SwaggerUIBundle({
|
|
spec: {"openapi":"3.0.0","info":{"title":"My Express API","version":"1.0.0","description":"API documentation for my awesome Express app"},"servers":[{"url":"http://localhost:3000"}],"paths":{"/api/health":{"get":{"summary":"Health check endpoint","description":"Returns the health status of the API","responses":{"200":{"description":"API is healthy","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"OK"},"timestamp":{"type":"string","format":"date-time"}}}}}}}}},"/api/unique":{"post":{"summary":"Get unique values from a data series","description":"Returns an array of unique values from the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"}}}}}},"responses":{"200":{"description":"Unique values calculated successfully"},"400":{"description":"Invalid input data"}}}},"/api/mean":{"post":{"summary":"Calculate mean of a data series","description":"Returns the arithmetic mean of the provided data series, optionally filtered by conditions","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}},"examples":{"value":{"series":{"values":[10,20,30,40,50],"labels":["Q1","Q2","Q3","Q4","Q5"]}}}}}},"responses":{"200":{"description":"Mean calculated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"successful_calculation":{"summary":"Successful mean calculation","description":"Mean of [10, 20, 30, 40, 50] is 30","value":{"success":true,"data":30}}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"empty_series":{"summary":"Empty series error","value":{"success":false,"error":"Series must contain at least one value"}},"invalid_format":{"summary":"Invalid data format","value":{"success":false,"error":"Series values must be an array of numbers"}}}}}}}}},"/api/count":{"post":{"summary":"Count data points in a series","description":"Returns the count of data points in the series, optionally filtered by conditions","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Count calculated successfully"},"400":{"description":"Invalid input data"}}}},"/api/variance":{"post":{"summary":"Calculate variance of a data series","description":"Returns the variance of the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Variance calculated successfully"},"400":{"description":"Invalid input data"}}}},"/api/std":{"post":{"summary":"Calculate standard deviation of a data series","description":"Returns the standard deviation of the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Standard deviation calculated successfully"},"400":{"description":"Invalid input data"}}}},"/api/percentile":{"post":{"summary":"Calculate percentile of a data series","description":"Returns the specified percentile of the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"percent":{"type":"number","description":"Percentile to calculate (0-100)","example":95},"ascending":{"type":"boolean","description":"Sort order","default":true},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Percentile calculated successfully"},"400":{"description":"Invalid input data"}}}},"/api/median":{"post":{"summary":"Calculate median of a data series","description":"Returns the median (50th percentile) of the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Median calculated successfully"},"400":{"description":"Invalid input data"}}}},"/api/mode":{"post":{"summary":"Calculate mode of a data series","description":"Returns the mode (most frequent values) of the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Mode calculated successfully"},"400":{"description":"Invalid input data"}}}},"/api/max":{"post":{"summary":"Find maximum value in a data series","description":"Returns the maximum value from the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Maximum value found successfully"},"400":{"description":"Invalid input data"}}}},"/api/min":{"post":{"summary":"Find minimum value in a data series","description":"Returns the minimum value from the provided data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/Condition"}}}}}}},"responses":{"200":{"description":"Minimum value found successfully"},"400":{"description":"Invalid input data"}}}},"/api/correlation":{"post":{"summary":"Calculate correlation between two data series","description":"Returns the Pearson correlation coefficient between two data series","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series1":{"$ref":"#/components/schemas/DataSeries"},"series2":{"$ref":"#/components/schemas/DataSeries"}}},"examples":{"value":{"series1":{"values":[1,2,3,4,5],"labels":["Day 1","Day 2","Day 3","Day 4","Day 5"]},"series2":{"values":[2,4,6,8,10],"labels":["Day 1","Day 2","Day 3","Day 4","Day 5"]}}}}}},"responses":{"200":{"description":"Correlation calculated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"perfect_positive":{"value":{"success":true,"data":1}}}}}},"400":{"description":"Invalid input data or series have different lengths","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"different_lengths":{"summary":"Series length mismatch","value":{"success":false,"error":"Series must have same length for correlation"}},"insufficient_data":{"summary":"Insufficient data points","value":{"success":false,"error":"At least 2 data points required for correlation"}}}}}}}}},"/api/series/moving-average":{"post":{"summary":"Calculate moving average of a data series","description":"Returns the moving average of the provided data series with specified window size","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"windowSize":{"type":"integer","description":"Size of the moving window","minimum":1,"example":3}}},"examples":{"stock_prices":{"summary":"Stock price data","value":{"series":{"values":[100,102,98,105,110,108,112,115],"labels":["Mon","Tue","Wed","Thu","Fri","Sat","Sun","Mon"]},"windowSize":3}}}}}},"responses":{"200":{"description":"Moving average calculated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"number"}}}},"examples":{"stock_moving_avg":{"summary":"3-day moving average result","description":"Moving average for stock prices with window size 3","value":{"success":true,"data":[100,101.67,104.33,107.67,110,111.67]}}}}}},"400":{"description":"Invalid input data or window size","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"window_too_large":{"summary":"Window size exceeds data length","value":{"success":false,"error":"Window size cannot be larger than series length"}},"invalid_window_size":{"summary":"Invalid window size","value":{"success":false,"error":"Window size must be a positive number"}}}}}}}}},"/api/series/rolling":{"post":{"summary":"Get rolling windows of a data series","description":"Returns rolling windows of the provided data series with specified window size","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"windowSize":{"type":"integer","description":"Size of the rolling window","minimum":1,"example":3}}}}}},"responses":{"200":{"description":"Rolling windows calculated successfully"},"400":{"description":"Invalid input data or window size"}}}},"/api/ml/kmeans":{"post":{"summary":"Perform K-means clustering","description":"Performs K-means clustering on the provided data matrix","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"matrix":{"$ref":"#/components/schemas/DataMatrix"},"nClusters":{"type":"integer","description":"Number of clusters","minimum":1,"example":3},"options":{"type":"object","description":"K-means options"}}},"examples":{"customer_segmentation":{"summary":"Customer segmentation data","value":{"matrix":{"data":[[25,50000],[30,60000],[35,70000],[40,45000],[22,35000],[28,55000]],"columns":["age","income"]},"nClusters":2,"options":{"maxIterations":100}}}}}}},"responses":{"200":{"description":"K-means clustering completed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"clusters":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"number"}}}},"centroids":{"type":"array","items":{"type":"array","items":{"type":"number"}}}}}}},"examples":{"customer_clusters":{"summary":"Customer segmentation result","description":"Customers grouped into 2 clusters by age and income","value":{"success":true,"data":{"clusters":[[[30,60000],[35,70000],[28,55000]],[[25,50000],[40,45000],[22,35000]]],"centroids":[[31.000000000000004,61666.666666666664],[29.000000000000007,43333.33333333333]]}}}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"too_many_clusters":{"summary":"More clusters than data points","value":{"success":false,"error":"Number of clusters cannot exceed number of data points"}},"invalid_data":{"summary":"Invalid matrix data","value":{"success":false,"error":"Matrix must contain at least one row"}}}}}}}}},"/api/time/week-number":{"post":{"summary":"Get week number from date","description":"Returns the ISO week number for the provided date string","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Date string in ISO format","example":"2024-03-15"}}}}}},"responses":{"200":{"description":"Week number calculated successfully"},"400":{"description":"Invalid date format"}}}},"/api/time/same-day-last-year":{"post":{"summary":"Get same day of week from last year","description":"Returns the date string for the same day of the week from the previous year","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Date string in ISO format","example":"2024-03-15"}}}}}},"responses":{"200":{"description":"Same day last year calculated successfully"},"400":{"description":"Invalid date format"}}}},"/api/retail/purchase-rate":{"post":{"summary":"Calculate purchase rate","description":"Calculates the purchase rate as a percentage of product purchases over total transactions","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productPurchases":{"type":"number","description":"Number (or amount) of product purchases","example":150},"totalTransactions":{"type":"number","description":"Total number (or amount) of transactions","example":1000}}},"examples":{"value":{"productPurchases":320,"totalTransactions":2500}}}}},"responses":{"200":{"description":"Purchase rate calculated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"successful_calculation":{"description":"320 purchases out of 2500 transactions = 12.8%","value":{"success":true,"data":12.8}}}}}},"400":{"description":"Invalid input data or division by zero","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"zero_transactions":{"summary":"Zero total transactions","value":{"success":false,"error":"Total transactions cannot be zero"}},"negative_values":{"summary":"Negative input values","value":{"success":false,"error":"Purchase count and transactions must be positive numbers"}}}}}}}}},"/api/retail/lift-value":{"post":{"summary":"Calculate lift value","description":"Calculates the lift value for market basket analysis","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jointPurchaseRate":{"type":"number","description":"Joint purchase rate of both products","example":0.05},"productAPurchaseRate":{"type":"number","description":"Purchase rate of product A","example":0.2},"productBPurchaseRate":{"type":"number","description":"Purchase rate of product B","example":0.3}}}}}},"responses":{"200":{"description":"Lift value calculated successfully"},"400":{"description":"Invalid input data or division by zero"}}}},"/api/retail/cost-ratio":{"post":{"summary":"Calculate cost ratio","description":"Calculates the cost ratio (cost divided by sale price)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cost":{"type":"number","description":"Cost of the product","example":50},"salePrice":{"type":"number","description":"Sale price of the product","example":100}}}}}},"responses":{"200":{"description":"Cost ratio calculated successfully"},"400":{"description":"Invalid input data or division by zero"}}}},"/api/retail/gross-margin":{"post":{"summary":"Calculate gross margin rate","description":"Calculates the gross margin rate as a percentage","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salePrice":{"type":"number","description":"Sale price of the product","example":100},"cost":{"type":"number","description":"Cost of the product","example":60}}}}}},"responses":{"200":{"description":"Gross margin rate calculated successfully"},"400":{"description":"Invalid input data or division by zero"}}}},"/api/retail/average-spend":{"post":{"summary":"Calculate average spend per customer","description":"Calculates the average amount spent per customer","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totalRevenue":{"type":"number","description":"Total revenue","example":50000},"numberOfCustomers":{"type":"number","description":"Number of customers","example":500}}}}}},"responses":{"200":{"description":"Average spend calculated successfully"},"400":{"description":"Invalid input data or division by zero"}}}},"/api/retail/purchase-index":{"post":{"summary":"Calculate purchase index","description":"Calculates the purchase index (items per 1000 customers)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totalItemsSold":{"type":"number","description":"Total number of items sold","example":2500},"numberOfCustomers":{"type":"number","description":"Number of customers","example":1000}}}}}},"responses":{"200":{"description":"Purchase index calculated successfully"},"400":{"description":"Invalid input data or division by zero"}}}},"/api/predict/forecast":{"post":{"summary":"Generate time series forecast","description":"Generates a forecast for time series data using linear regression","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"$ref":"#/components/schemas/DataSeries"},"forecastPeriods":{"type":"integer","description":"Number of periods to forecast","minimum":1,"example":5}}},"examples":{"sales_forecast":{"summary":"Monthly sales forecast","value":{"series":{"values":[1000,1200,1100,1300,1250,1400,1350,1500],"labels":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug"]},"forecastPeriods":3}}}}}},"responses":{"200":{"description":"Forecast generated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"forecast":{"type":"array","items":{"type":"number"}},"predictionIntervals":{"type":"object","properties":{"lower":{"type":"array","items":{"type":"number"}},"upper":{"type":"array","items":{"type":"number"}}}},"modelParameters":{"type":"object","properties":{"slope":{"type":"number"},"intercept":{"type":"number"}}}}}}},"examples":{"sales_forecast_result":{"summary":"3-month sales forecast","description":"Forecast shows upward trend in sales","value":{"success":true,"data":{"forecast":[1535.7142857142858,1596.4285714285716,1657.142857142857],"predictionIntervals":{"lower":[1399.6187310477208,1460.3330167620065,1521.047302476292],"upper":[1671.8098403808508,1732.5241260951366,1793.2384118094221]},"modelParameters":{"slope":60.714285714285715,"intercept":1050}}}}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"},"examples":{"insufficient_data":{"summary":"Not enough data points","value":{"success":false,"error":"At least 2 data points required for forecasting"}},"invalid_periods":{"summary":"Invalid forecast periods","value":{"success":false,"error":"Forecast periods must be a positive integer"}}}}}}}}},"/api/docs/export/json":{"get":{"summary":"Export API documentation as JSON","description":"Returns the complete OpenAPI specification in JSON format","responses":{"200":{"description":"OpenAPI specification in JSON format","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/docs/export/yaml":{"get":{"summary":"Export API documentation as YAML","description":"Returns the complete OpenAPI specification in YAML format","responses":{"200":{"description":"OpenAPI specification in YAML format","content":{"text/yaml":{"schema":{"type":"string"}}}}}}},"/api/docs/export/html":{"get":{"summary":"Export API documentation as HTML","description":"Returns a standalone HTML file with the complete API documentation","responses":{"200":{"description":"Standalone HTML documentation","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"DataSeries":{"type":"object","required":["values"],"properties":{"values":{"type":"array","items":{"type":"number"},"description":"Array of numerical values","example":[1,2,3,4,5]},"labels":{"type":"array","items":{"type":"string"},"description":"Optional labels for the values","example":["Jan","Feb","Mar","Apr","May"]}}},"DataMatrix":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"array","items":{"type":"number"}},"description":"2D array of numerical values","example":[[1,2],[3,4],[5,6]]},"columns":{"type":"array","items":{"type":"string"},"description":"Optional column names","example":["x","y"]},"rows":{"type":"array","items":{"type":"string"},"description":"Optional row names","example":["row1","row2","row3"]}}},"Condition":{"type":"object","required":["field","operator","value"],"properties":{"field":{"type":"string","description":"Field name to apply condition on","example":"value"},"operator":{"type":"string","enum":[">","<","=",">=","<=","!="],"description":"Comparison operator","example":">"},"value":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Value to compare against","example":10}}},"ApiResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request was successful"},"data":{"description":"Response data (varies by endpoint)"},"error":{"type":"string","description":"Error message if success is false"}}}}},"tags":[]},
|
|
dom_id: '#swagger-ui',
|
|
deepLinking: true,
|
|
presets: [
|
|
SwaggerUIBundle.presets.apis,
|
|
SwaggerUIStandalonePreset
|
|
],
|
|
plugins: [
|
|
SwaggerUIBundle.plugins.DownloadUrl
|
|
],
|
|
layout: "StandaloneLayout"
|
|
});
|
|
};
|
|
</script>
|
|
</body>
|
|
</html> |