Add swagger.yaml

هذا الالتزام موجود في:
2026-04-24 09:02:46 +00:00
التزام a8bd5ace1e

728
swagger.yaml Normal file
عرض الملف

@@ -0,0 +1,728 @@
openapi: 3.0.0
info:
title: ProbLab Pipeline API
description: |
بسم الله الرحمن الرحيم
API for ProbLab data processing, probability computations, and machine learning operations.
This API provides endpoints for dataset validation, processing, probability calculations,
predictions, and data discovery operations.
version: 1.0.0
contact:
name: ProbLab Team
email: support@problab.com
license:
name: Proprietary
url: https://problab.com/license
servers:
- url: https://problab-api-0004c00ee319.hosted.ghaymah.systems
description: Production server
- url: http://localhost:5000
description: Local development server
tags:
- name: Dataset Management
description: Endpoints for dataset validation and processing
- name: Probability Computation
description: Endpoints for probability calculations and queries
- name: Predictions
description: Endpoints for batch and single predictions
- name: Discovery
description: Endpoints for data discovery operations
- name: Visualization
description: Endpoints for probability plots and visualizations
- name: Recommendations
description: Endpoints for recommendation systems
paths:
/validate_dataset:
post:
tags:
- Dataset Management
summary: Validate a dataset
description: |
Validate a dataset file and return excluded columns based on data characteristics.
Uploads a file and validates it against various criteria.
operationId: validateDataset
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
- hasHeader
- dataType
- delimiter
properties:
file:
type: string
format: binary
description: Dataset file to validate (CSV, Excel, JSON, or TXT)
hasHeader:
type: string
enum: [true, false]
description: Whether the dataset has a header row
dataType:
type: string
enum: [csv, xlsx, json, txt]
description: Type of the dataset file
delimiter:
type: string
description: Column delimiter for CSV files (e.g., ',', ';', '\t')
sheetName:
type: string
description: Sheet name for Excel files (optional)
responses:
'200':
description: Dataset validation result
content:
application/json:
schema:
type: object
properties:
is_valid:
type: boolean
description: Whether the dataset is valid
excluded_cols:
type: array
items:
type: array
items:
type: string
description: List of excluded columns with their indices
example:
is_valid: true
excluded_cols: [["column_name", 5]]
'400':
description: Invalid request or missing parameters
'500':
description: Internal server error
/process_dataset:
post:
tags:
- Dataset Management
summary: Process a dataset
description: |
Process a dataset from uploaded file data, discover schema, encode it, and store results locally.
This endpoint is typically triggered by webhook events.
operationId: processDataset
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- event
properties:
event:
type: object
properties:
data:
type: object
properties:
new:
type: object
properties:
id:
type: string
description: Dataset ID
file_data:
type: string
format: base64
description: Base64 encoded file data
file_name:
type: string
description: Name of the uploaded file
hasHeader:
type: boolean
description: Whether the dataset has a header row
delimiter:
type: string
description: Column delimiter for CSV files
sheetName:
type: string
description: Sheet name for Excel files
example:
event:
data:
new:
id: "dataset123"
file_data: "base64-encoded-file-data-here"
file_name: "sample.csv"
hasHeader: true
delimiter: ","
sheetName: "Sheet1"
responses:
'200':
description: Dataset processed successfully
content:
text/plain:
schema:
type: string
description: Local file path of the processed file
example: "./datasets/dataset123/data.bit"
'400':
description: No file data provided or invalid request
'500':
description: Internal server error
/compute_expr:
post:
tags:
- Probability Computation
summary: Compute probability expression
description: |
Compute probability for a given expression on a dataset.
Supports both conditional and joint probability queries.
operationId: computeExpression
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- expression
- dataset_id
properties:
expression:
type: string
description: |
Probability expression in format "query_event|query_condition"
Example: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
Where query_event is "key1:value1;key2:value2" and query_condition is optional
dataset_id:
type: string
description: ID of the dataset to query
example:
expression: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
dataset_id: "dataset789"
responses:
'200':
description: Probability computation result
content:
application/json:
schema:
type: object
properties:
output:
type: string
description: Probability result or error message
example:
output: "0.75"
'400':
description: Invalid expression or missing parameters
'500':
description: Internal server error
/table_prob:
post:
tags:
- Probability Computation
summary: Generate probability table
description: |
Generate a probability table for given variables.
Creates conditional probability tables for visualization.
operationId: tableProbability
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- expression
- dataset_id
properties:
expression:
type: string
description: |
Expression defining column and row variables
Format: "column_vars|row_vars"
Example: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
dataset_id:
type: string
description: ID of the dataset to query
example:
expression: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
dataset_id: "dataset789"
responses:
'200':
description: Probability table result
content:
application/json:
schema:
type: object
properties:
output:
type: string
description: Table data in string format
example:
output: "[[0.1,0.2],[0.3,0.4]]"
'400':
description: Invalid expression or missing parameters
'500':
description: Internal server error
/prob_plot:
post:
tags:
- Visualization
summary: Generate probability plot
description: |
Generate a plot visualization for probability distributions.
Creates various plot types based on probability data.
operationId: probabilityPlot
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- expression
- dataset_id
- plot_type
properties:
expression:
type: string
description: |
Expression defining variables for plotting
Format: "column_vars|row_vars"
dataset_id:
type: string
description: ID of the dataset to query
plot_type:
type: string
description: Type of plot to generate
enum: [bar, line, scatter, heatmap]
example:
expression: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
dataset_id: "dataset789"
plot_type: "bar"
responses:
'200':
description: Plot generation result
content:
application/json:
schema:
type: object
properties:
output:
type: string
description: Plot data or file reference
example:
output: "Plot generated successfully"
'400':
description: Invalid expression or missing parameters
'500':
description: Internal server error
/describe_prob:
post:
tags:
- Discovery
summary: Describe probability distribution
description: |
Get descriptive statistics and information about a variable's probability distribution.
operationId: describeProbability
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- expression
- dataset_id
- command_type
properties:
expression:
type: string
description: |
Expression containing the variable to describe
Format: "variable_name:value"
dataset_id:
type: string
description: ID of the dataset to query
command_type:
type: string
enum: [describe, summary]
description: Type of description command
example:
expression: "GENERATION:genbb"
dataset_id: "dataset789"
command_type: "describe"
responses:
'200':
description: Description result
content:
application/json:
schema:
type: object
properties:
output:
type: string
description: Descriptive statistics
example:
output: "Variable statistics..."
'400':
description: Invalid expression or missing parameters
'500':
description: Internal server error
/batch_pred:
post:
tags:
- Predictions
summary: Batch predictions
description: |
Perform batch predictions on multiple expressions.
Processes multiple prediction expressions in parallel.
operationId: batchPredict
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- expressions
- dataset_id
properties:
expressions:
type: array
items:
type: string
description: |
Array of prediction expressions
Each expression should be in format "query_event|query_condition"
example: ["GENERATION:genbb|PARTICIPATION_TYPE:type1", "GENERATION:gencc|PARTICIPATION_TYPE:type2"]
dataset_id:
type: string
description: ID of the dataset to query
example:
expressions: ["GENERATION:genbb|PARTICIPATION_TYPE:type1", "GENERATION:gencc|PARTICIPATION_TYPE:type2"]
dataset_id: "dataset789"
responses:
'200':
description: Batch prediction results
content:
application/json:
schema:
type: object
properties:
processed:
type: integer
description: Number of expressions processed
successful:
type: array
items:
type: object
properties:
expression:
type: string
result:
type: object
properties:
final_prediction:
type: string
algorithm:
type: string
likelihood:
type: object
properties:
probability:
type: number
labels:
type: array
items:
type: string
status:
type: string
enum: [success]
failed:
type: array
items:
type: object
properties:
expression:
type: string
error:
type: string
status:
type: string
enum: [failed]
example:
processed: 2
successful:
- expression: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
result:
final_prediction: "Feature X"
algorithm: "Random Forest"
likelihood:
probability: 0.85
labels: ["label1", "label2"]
status: "success"
failed: []
'400':
description: Invalid payload structure
'500':
description: Internal server error
/prob_predict:
post:
tags:
- Predictions
summary: Single prediction
description: |
Perform a single prediction based on query event and condition.
operationId: probabilityPredict
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- expression
- dataset_id
properties:
expression:
type: string
description: |
Prediction expression in format "query_event|query_condition"
Example: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
dataset_id:
type: string
description: ID of the dataset to query
example:
expression: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
dataset_id: "dataset789"
responses:
'200':
description: Prediction result
content:
application/json:
schema:
type: object
properties:
output:
type: string
description: Prediction output
example:
output: "Predicted Features: X\nAlgorithms = Random Forest\n('likelihood', 0.85, ['label1', 'label2'])"
'400':
description: Invalid expression or missing parameters
'500':
description: Internal server error
/discovery:
post:
tags:
- Discovery
summary: Data discovery operations
description: |
Perform various data discovery operations (association, influencer, anomaly, polymaly).
operationId: discovery
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- expression
- dataset_id
- discovery_type
properties:
expression:
type: string
description: |
Expression for discovery in format "query_event|query_condition"
dataset_id:
type: string
description: ID of the dataset to query
discovery_type:
type: string
enum: [association, influencer, anomaly, polymaly]
description: Type of discovery operation
example:
expression: "GENERATION:genbb|PARTICIPATION_TYPE:type1"
dataset_id: "dataset789"
discovery_type: "association"
responses:
'200':
description: Discovery results
content:
application/json:
schema:
type: object
properties:
output:
type: string
description: Discovery operation output
example:
output: "Discovery results..."
'400':
description: Invalid expression or missing parameters
'500':
description: Internal server error
/recommend-item:
post:
tags:
- Recommendations
summary: Recommend items
description: |
Get item recommendations based on input data.
Forwards request to recommendation service.
operationId: recommendItem
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
# Define based on recommender API requirements
user_id:
type: string
description: User ID for recommendations
item_ids:
type: array
items:
type: string
description: List of item IDs
preferences:
type: object
description: User preferences
example:
user_id: "user123"
item_ids: ["item1", "item2", "item3"]
preferences:
category: "electronics"
price_range: "medium"
responses:
'200':
description: Recommendation results
content:
application/json:
schema:
type: object
properties:
recommendations:
type: array
items:
type: object
properties:
item_id:
type: string
score:
type: number
example:
recommendations:
- item_id: "item456"
score: 0.95
- item_id: "item789"
score: 0.87
'500':
description: Internal server error
/recommend-by-country:
post:
tags:
- Recommendations
summary: Recommend items by country
description: |
Get item recommendations filtered by country.
Forwards request to recommendation service.
operationId: recommendByCountry
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: User ID for recommendations
country:
type: string
description: Country code for filtering
item_ids:
type: array
items:
type: string
description: List of item IDs
example:
user_id: "user123"
country: "US"
item_ids: ["item1", "item2", "item3"]
responses:
'200':
description: Recommendation results by country
content:
application/json:
schema:
type: object
properties:
recommendations:
type: array
items:
type: object
properties:
item_id:
type: string
score:
type: number
country_specific:
type: boolean
example:
recommendations:
- item_id: "item456"
score: 0.92
country_specific: true
- item_id: "item789"
score: 0.85
country_specific: false
'500':
description: Internal server error
components:
schemas:
Error:
type: object
properties:
error:
type: string
description: Error message
example:
error: "Invalid expression format"
ValidationResult:
type: object
properties:
is_valid:
type: boolean
excluded_cols:
type: array
items:
type: array
items:
type: string
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
security:
- BearerAuth: []