You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
599 lines
19 KiB
599 lines
19 KiB
{
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "API for frontend - built on Go-chi",
|
|
"title": "KTM Train Booking Bot",
|
|
"contact": {
|
|
"name": "Samuel Pua",
|
|
"url": "https://git.samuelpua.com/telboon"
|
|
},
|
|
"version": "1.0"
|
|
},
|
|
"basePath": "/",
|
|
"paths": {
|
|
"/": {
|
|
"get": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"Base"
|
|
],
|
|
"summary": "This is test",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/ktmtrainbot/booking": {
|
|
"get": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"ktmtrainbot Booking"
|
|
],
|
|
"summary": "Get All Booking",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/ktmtrainbot.BookingResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"ktmtrainbot Booking"
|
|
],
|
|
"summary": "Create New Booking",
|
|
"parameters": [
|
|
{
|
|
"description": "Booking Create Request",
|
|
"name": "user",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/ktmtrainbot.BookingCreateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/ktmtrainbot.BookingResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/ktmtrainbot/booking/{bookingID}": {
|
|
"delete": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"ktmtrainbot Booking"
|
|
],
|
|
"summary": "Delete booking",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Booking ID",
|
|
"name": "bookingID",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/ktmtrainbot.BookingResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/ktmtrainbot/current-time": {
|
|
"get": {
|
|
"description": "Description",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"Info"
|
|
],
|
|
"summary": "Get current server time",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/ktmtrainbot.ServerTimeResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/user/login": {
|
|
"post": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"User"
|
|
],
|
|
"summary": "For user login",
|
|
"parameters": [
|
|
{
|
|
"description": "User Login info",
|
|
"name": "user",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/user.UserLoginRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/user.UserResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/user/logout": {
|
|
"post": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"User"
|
|
],
|
|
"summary": "For user logout",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.TextResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/user/me": {
|
|
"get": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"User"
|
|
],
|
|
"summary": "Returns current logged in user",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/user.UserResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/user/profile": {
|
|
"put": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"User"
|
|
],
|
|
"summary": "For setting current user profile",
|
|
"parameters": [
|
|
{
|
|
"description": "User registration info",
|
|
"name": "user",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/user.ProfileRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/user.UserResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/user/register": {
|
|
"post": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"User"
|
|
],
|
|
"summary": "For user registration",
|
|
"parameters": [
|
|
{
|
|
"description": "User registration info",
|
|
"name": "user",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/user.UserRegisterRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/user.UserResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/common.ErrResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/health": {
|
|
"get": {
|
|
"description": "Description",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"Base"
|
|
],
|
|
"summary": "Responds to health check",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"common.ErrResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"description": "application-specific error code",
|
|
"type": "integer"
|
|
},
|
|
"error": {
|
|
"description": "application-level error message, for debugging",
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"description": "user-level status message",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"common.TextResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"description": "user-level status message",
|
|
"type": "string"
|
|
},
|
|
"text": {
|
|
"description": "application-specific error code",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ktmtrainbot.BookingCreateRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"contact",
|
|
"gender",
|
|
"name",
|
|
"passport",
|
|
"passportExpiry",
|
|
"timeCode",
|
|
"travelDate"
|
|
],
|
|
"properties": {
|
|
"contact": {
|
|
"type": "string",
|
|
"example": "+6512345678"
|
|
},
|
|
"gender": {
|
|
"type": "string",
|
|
"example": "M"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"passport": {
|
|
"type": "string"
|
|
},
|
|
"passportExpiry": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"timeCode": {
|
|
"type": "string",
|
|
"example": "1300"
|
|
},
|
|
"travelDate": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"ktmtrainbot.BookingResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contact": {
|
|
"type": "string"
|
|
},
|
|
"gender": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"passport": {
|
|
"type": "string"
|
|
},
|
|
"passportExpiry": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"timeCode": {
|
|
"type": "string"
|
|
},
|
|
"travelDate": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ktmtrainbot.ServerTimeResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"serverLocalTime": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"user.ProfileRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ktmTrainCreditCard": {
|
|
"type": "string",
|
|
"example": "1234123412341234"
|
|
},
|
|
"ktmTrainCreditCardCVV": {
|
|
"type": "string",
|
|
"example": "123"
|
|
},
|
|
"ktmTrainCreditCardExpiry": {
|
|
"type": "string",
|
|
"example": "01/2022"
|
|
},
|
|
"ktmTrainCreditCardType": {
|
|
"type": "string",
|
|
"example": "Visa|Mastercard"
|
|
},
|
|
"ktmTrainPassword": {
|
|
"type": "string",
|
|
"example": "password"
|
|
},
|
|
"ktmTrainUsername": {
|
|
"type": "string",
|
|
"example": "user@gmail.com"
|
|
}
|
|
}
|
|
},
|
|
"user.ProfileResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ktmTrainCreditCard": {
|
|
"type": "string"
|
|
},
|
|
"ktmTrainCreditCardCVV": {
|
|
"type": "string"
|
|
},
|
|
"ktmTrainCreditCardExpiry": {
|
|
"type": "string"
|
|
},
|
|
"ktmTrainCreditCardType": {
|
|
"type": "string"
|
|
},
|
|
"ktmTrainPassword": {
|
|
"type": "string"
|
|
},
|
|
"ktmTrainUsername": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"user.UserLoginRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"password",
|
|
"username"
|
|
],
|
|
"properties": {
|
|
"password": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"maxLength": 100,
|
|
"minLength": 2
|
|
}
|
|
}
|
|
},
|
|
"user.UserRegisterRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"password",
|
|
"username"
|
|
],
|
|
"properties": {
|
|
"password": {
|
|
"type": "string",
|
|
"maxLength": 100,
|
|
"minLength": 6
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"maxLength": 100,
|
|
"minLength": 2
|
|
}
|
|
}
|
|
},
|
|
"user.UserResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"profile": {
|
|
"$ref": "#/definitions/user.ProfileResponse"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|