Add swagger.yaml
هذا الالتزام موجود في:
728
swagger.yaml
Normal file
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: []
|
||||
المرجع في مشكلة جديدة
حظر مستخدم