Skip to content

Commit

Permalink
rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
codingwithsurya committed Jun 17, 2023
2 parents 12e2da2 + 6f139ef commit cc4fc30
Show file tree
Hide file tree
Showing 10 changed files with 428 additions and 0 deletions.
39 changes: 39 additions & 0 deletions .github/workflows/open-api-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: OpenAPI Schema Validation

on:
push:
paths:
- "openapi/**"
pull_request:
paths:
- "openapi/**"

jobs:
validate:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [18.x]

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Check file extensions
run: |
shopt -s globstar
for file in openapi/*.yaml; do
if [[ ! "$file" =~ \.yaml$ ]]; then
echo "Error: $file does not have the .yml extension"
exit 1
fi
done
- name: Validate OpenAPI files
run: |
yarn add swagger-cli
for file in openapi/*.yaml
do
echo "Validating $file"
yarn swagger-cli validate $file --no-color || exit 1
done
58 changes: 58 additions & 0 deletions openapi/openapi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
openapi: 3.1.0
info:
version: 1.0.0
title: Deep Learning Playground Backend API
contact:
email: dlp@datasciencegt.org
url: https://github.com/DSGT-DLP/Deep-Learning-Playground
license:
name: MIT
url: https://github.com/DSGT-DLP/Deep-Learning-Playground/blob/nextjs/LICENSE
description: >
Deep Learning Playground Backend API specifications
tags:
- name: dataset
description: Everything about dataset
- name: s3
description: Everything about s3
- name: test
description: Test API endpoints
- name: trainspace
description: Everything about trainspace
servers:
- url: http://localhost:8000
paths:
/api/dataset/defaultDataset:
$ref: paths/dataset/defaultDataset.yaml
/api/dataset/getColumnsFromDatasetFile:
$ref: paths/dataset/getColumnsFromDatasetFile.yaml
/api/s3/getExecutionsFilesPresignedUrls:
$ref: paths/s3/getExecutionsFilesPresignedUrls.yaml
/api/s3/getSignedUploadUrl:
$ref: paths/s3/getSignedUploadUrl.yaml
/api/s3/getUserDatasetFilesData:
$ref: paths/s3/getUserDatasetFilesData.yaml
/api/test:
$ref: paths/test/none.yaml
/api/trainspace/create-trainspace:
$ref: paths/trainspace/create-trainspace.yaml
/api/trainspace/getTrainspaceData:
$ref: paths/trainspace/getTrainspaceData.yaml
# components:
# securitySchemes:
# main_auth:
# type: oauth2
# flows:
# implicit:
# authorizationUrl: http://example.com/api/oauth/dialog
# scopes:
# read:users: read users info
# write:users: modify or remove users
# api_key:
# type: apiKey
# in: header
# name: api_key
# basic_auth:
# type: http
# scheme: basic
42 changes: 42 additions & 0 deletions openapi/paths/dataset/defaultDataset.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
post:
summary: Default dataset
description: Endpoint to get user selected default dataset for training
tags:
- dataset
requestBody:
content:
application/json:
schema:
type: object
required:
- using_default_dataset
properties:
using_default_dataset:
type: string
description: dataset selected for training
example:
using_default_dataset: "IRIS"
required: true
responses:
"200":
description: Dataset selected successfully
content:
application/json:
schema:
type: object
properties:
columns:
type: array
example: [col1, col2, col3]
"400":
description: Dataset wasn't selected properly. This is usually something wrong with your code
"401":
description: User is not authenticated
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "User is not authenticated"
52 changes: 52 additions & 0 deletions openapi/paths/dataset/getColumnsFromDatasetFile.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
post:
summary: Get columns from dataset file
description: "API Endpoint to retrieve columns from a user uploaded dataset file (eg: column names for a CSV file)"
tags:
- dataset
requestBody:
content:
application/json:
schema:
type: object
required:
- uid
- data_source
- name
properties:
uid:
type: string
description: User Id
data_source:
type: string
description: "What type of training was the user running (eg: TABULAR, PRETRAINED, OBJECT_DETECTION, IMAGE, etc)"
name:
type: string
description: Name of dataset file
example:
uid: "1234"
data_source: "TABULAR"
name: "data.csv"
required: true
responses:
"200":
description: Columns Fetched Successfully
content:
application/json:
schema:
type: object
properties:
columns:
type: array
example: [col1, col2, col3]
"400":
description: Dataset columns weren't selected properly. This is usually something wrong with your code
"401":
description: User is not authenticated
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "User is not authenticated"
42 changes: 42 additions & 0 deletions openapi/paths/s3/getExecutionsFilesPresignedUrls.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
post:
summary: Get S3 Presigned URLs for result files
description: API Endpoint to use S3 Presigned URLs to retrieve result files from S3 given an execution id
tags:
- s3
requestBody:
content:
application/json:
schema:
type: object
required:
- exec_id
properties:
exec_id:
type: string
description: The execution id
example:
exec_id: "1234"
required: true
responses:
"200":
description: Result files for your execution fetched successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: "Result file fetch successful"
"400":
description: Result file fetch didn't go through successfully. This is usually something wrong with your code
"401":
description: User is not authenticated
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "User is not authenticated"
52 changes: 52 additions & 0 deletions openapi/paths/s3/getSignedUploadUrl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
post:
summary: Get Signed Upload URL
description: Endpoint to upload files to S3
tags:
- s3
requestBody:
content:
application/json:
schema:
type: object
required:
- version
- filename
- file
properties:
version:
type: integer
description: The file version
filename:
type: string
description: The name of the file
file:
type: object
description: the file
example:
version: 2
filename: "file"
file: { "col1": [val1, val2], "col2": [val3, val4] }
required: true
responses:
"200":
description: Data uploaded successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: "Upload successful"
"400":
description: Upload didn't go through successfully. This is usually something wrong with your code
"401":
description: User is not authenticated
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "User is not authenticated"
43 changes: 43 additions & 0 deletions openapi/paths/s3/getUserDatasetFilesData.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
post:
summary: Get User Dataset Files
description: API Endpoint to retrieve all user dataset files uploaded in S3
tags:
- s3
requestBody:
content:
application/json:
schema:
type: object
required:
- uid
- data_source
properties:
uid:
type: string
description: User ID
data_source:
type: string
description: "What type of training was the user running (eg: TABULAR, PRETRAINED, OBJECT_DETECTION, IMAGE, etc)"
responses:
"200":
description: User Dataset files for user fetched successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: "User Dataset file fetch successful"
"400":
description: User Dataset files for user wasn't fetched successfully. This is usually something wrong with your code
"401":
description: User is not authenticated
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "User is not authenticated"
16 changes: 16 additions & 0 deletions openapi/paths/test/none.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
get:
summary: Test Backend alive
description: A simple endpoint to test if our backend is alive
tags:
- test
responses:
200:
description: Test Backend alive
content:
application/json:
schema:
type: object
properties:
Status:
type: string
example: "Backend is alive"
42 changes: 42 additions & 0 deletions openapi/paths/trainspace/create-trainspace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
post:
summary: Create Trainspace
description: API Endpoint to create a "trainspace". Trainspace is a new concept/data structure we introduce to track user's training requests. Concept similar to execution_id.
tags:
- trainspace
requestBody:
content:
application/json:
schema:
type: object
required:
- uid
properties:
uid:
type: string
description: User ID
example:
uid: "1234"
required: true
responses:
"200":
description: Trainspace created successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: "Trainspace Creation successful"
"400":
description: Trainspace Creation didn't go through successfully. This is usually something wrong with your code
"401":
description: User is not authenticated
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "User is not authenticated"

0 comments on commit cc4fc30

Please sign in to comment.