{
	"components": {
		"examples": {},
		"headers": {},
		"parameters": {},
		"requestBodies": {},
		"responses": {},
		"schemas": {
			"Record_string.unknown_": {
				"properties": {},
				"type": "object",
				"description": "Construct a type with a set of properties K of type T"
			},
			"StorageFile": {
				"properties": {
					"pathname": {
						"type": "string"
					},
					"fileName": {
						"type": "string"
					},
					"fileSize": {
						"type": "number",
						"format": "double"
					},
					"fileType": {
						"type": "string"
					},
					"title": {
						"type": "string"
					},
					"description": {
						"type": "string"
					},
					"category": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"keyword": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"author": {
						"type": "string"
					},
					"metadata": {
						"$ref": "#/components/schemas/Record_string.unknown_"
					},
					"path": {
						"type": "string"
					},
					"upload": {
						"type": "boolean"
					},
					"hidden": {
						"type": "boolean"
					},
					"updatedAt": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "string",
								"format": "date-time"
							}
						]
					},
					"updatedBy": {
						"type": "string"
					},
					"createdAt": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "string",
								"format": "date-time"
							}
						]
					},
					"createdBy": {
						"type": "string"
					}
				},
				"required": [
					"pathname",
					"fileName",
					"fileSize",
					"fileType",
					"title",
					"description",
					"category",
					"keyword",
					"author",
					"metadata",
					"path",
					"upload",
					"hidden",
					"updatedAt",
					"updatedBy",
					"createdAt",
					"createdBy"
				],
				"type": "object",
				"additionalProperties": false
			},
			"SearchInfo": {
				"properties": {
					"field": {
						"type": "string"
					},
					"value": {
						"type": "string"
					},
					"exact": {
						"type": "boolean"
					}
				},
				"required": [
					"field",
					"value"
				],
				"type": "object",
				"additionalProperties": false
			},
			"SearchOptions": {
				"properties": {
					"recursive": {
						"type": "boolean"
					},
					"path": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"exact": {
						"type": "boolean"
					}
				},
				"type": "object",
				"additionalProperties": false
			},
			"StorageFolder": {
				"properties": {
					"pathname": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"createdAt": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "string",
								"format": "date-time"
							}
						]
					},
					"createdBy": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "string",
								"format": "date-time"
							}
						]
					}
				},
				"required": [
					"pathname",
					"name",
					"createdAt",
					"createdBy"
				],
				"type": "object",
				"additionalProperties": false
			},
			"ListRequestBody": {
				"properties": {
					"operation": {
						"type": "string",
						"enum": [
							"folder",
							"file"
						]
					},
					"path": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"hidden": {
						"type": "boolean"
					}
				},
				"required": [
					"operation",
					"path"
				],
				"type": "object",
				"additionalProperties": false
			},
			"FolderBody": {
				"properties": {
					"path": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"แฟ้ม 1",
							"แฟ้ม 2"
						]
					},
					"name": {
						"type": "string",
						"example": "แฟ้ม 3"
					}
				},
				"required": [
					"path",
					"name"
				],
				"type": "object",
				"additionalProperties": false
			},
			"PutFolderBody": {
				"properties": {
					"from": {
						"properties": {
							"name": {
								"type": "string",
								"example": "แฟ้ม 3"
							},
							"path": {
								"items": {
									"type": "string"
								},
								"type": "array",
								"example": [
									"แฟ้ม 1",
									"แฟ้ม 2"
								]
							}
						},
						"required": [
							"name",
							"path"
						],
						"type": "object"
					},
					"to": {
						"properties": {
							"name": {
								"type": "string",
								"example": "แฟ้ม 3 แก้ไข"
							},
							"path": {
								"items": {
									"type": "string"
								},
								"type": "array",
								"example": [
									"แฟ้ม 1",
									"แฟ้ม 2"
								]
							}
						},
						"required": [
							"name",
							"path"
						],
						"type": "object"
					}
				},
				"required": [
					"from",
					"to"
				],
				"type": "object",
				"additionalProperties": false
			},
			"DeleteFolderBody": {
				"properties": {
					"path": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"แฟ้ม 1",
							"แฟ้ม 2",
							"แฟ้ม 3 แก้ไข"
						]
					}
				},
				"required": [
					"path"
				],
				"type": "object",
				"additionalProperties": false
			},
			"Record_string.any_": {
				"properties": {},
				"type": "object",
				"description": "Construct a type with a set of properties K of type T"
			},
			"FileBody": {
				"properties": {
					"path": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"แฟ้ม 1",
							"แฟ้ม 2",
							"แฟ้ม 3"
						]
					},
					"file": {
						"type": "string",
						"example": "ไฟล์ 1.xlsx"
					},
					"title": {
						"type": "string",
						"example": "การเงิน"
					},
					"description": {
						"type": "string",
						"example": "การเงิน"
					},
					"author": {
						"type": "string",
						"example": "นายก"
					},
					"category": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"การเงิน",
							"รายงาน"
						]
					},
					"keyword": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"การเงิน",
							"รายรับ",
							"รายจ่าย"
						]
					},
					"metadata": {
						"properties": {},
						"additionalProperties": {},
						"type": "object",
						"example": {}
					},
					"hidden": {
						"type": "boolean",
						"example": false
					}
				},
				"required": [
					"path",
					"file"
				],
				"type": "object",
				"additionalProperties": false
			},
			"PutFileBody": {
				"properties": {
					"hidden": {
						"type": "boolean",
						"example": false
					},
					"keyword": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"การเงิน",
							"รายรับ",
							"รายจ่าย"
						]
					},
					"title": {
						"type": "string",
						"example": "การเงิน"
					},
					"description": {
						"type": "string",
						"example": "การเงิน"
					},
					"category": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"การเงิน",
							"รายงาน"
						]
					},
					"author": {
						"type": "string",
						"example": "นายก"
					},
					"metadata": {
						"properties": {},
						"additionalProperties": {},
						"type": "object",
						"example": {}
					},
					"from": {
						"properties": {
							"file": {
								"type": "string",
								"example": "ไฟล์ 1.xlsx"
							},
							"path": {
								"items": {
									"type": "string"
								},
								"type": "array",
								"example": [
									"แฟ้ม 1",
									"แฟ้ม 2",
									"แฟ้ม 3"
								]
							}
						},
						"required": [
							"file",
							"path"
						],
						"type": "object",
						"description": "หากต้องการอัพโหลดไฟล์ด้วยให้ส่งค่าเป็นจริง"
					},
					"to": {
						"properties": {
							"file": {
								"type": "string",
								"example": "ไฟล์ 1 แก้ไข.xlsx"
							},
							"path": {
								"items": {
									"type": "string"
								},
								"type": "array",
								"example": [
									"แฟ้ม 1",
									"แฟ้ม 2",
									"แฟ้ม 3"
								]
							}
						},
						"required": [
							"file",
							"path"
						],
						"type": "object"
					},
					"upload": {
						"type": "boolean",
						"example": false
					}
				},
				"required": [
					"from"
				],
				"type": "object",
				"additionalProperties": false
			},
			"DeleteFileBody": {
				"properties": {
					"path": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"แฟ้ม 1",
							"แฟ้ม 2",
							"แฟ้ม 3"
						]
					},
					"file": {
						"type": "string",
						"example": "ไฟล์ 1 แก้ไข.xlsx"
					}
				},
				"required": [
					"path",
					"file"
				],
				"type": "object",
				"additionalProperties": false
			},
			"DownloadFileBody": {
				"properties": {
					"path": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"example": [
							"แฟ้ม 1",
							"แฟ้ม 2",
							"แฟ้ม 3"
						]
					},
					"file": {
						"type": "string",
						"example": "ไฟล์ 1 แก้ไข.xlsx"
					}
				},
				"required": [
					"path",
					"file"
				],
				"type": "object",
				"additionalProperties": false
			}
		},
		"securitySchemes": {
			"bearerAuth": {
				"type": "apiKey",
				"name": "Authorization",
				"description": "Keycloak Bearer Token",
				"in": "header"
			}
		}
	},
	"info": {
		"title": "Enterprise Document Management(EDM) - API",
		"version": "0.0.2",
		"description": "Open API Specfication for Enterprise Document Management ",
		"license": {
			"name": "by Frappet",
			"url": "https://frappet.com"
		}
	},
	"openapi": "3.0.0",
	"paths": {
		"/search": {
			"post": {
				"operationId": "SearchFile",
				"responses": {
					"200": {
						"description": "สำเร็จ",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/StorageFile"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"tags": [
					"Search"
				],
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"allOf": [
									{
										"properties": {
											"OR": {
												"items": {
													"anyOf": [
														{
															"$ref": "#/components/schemas/SearchInfo"
														},
														{
															"properties": {
																"OR": {},
																"AND": {}
															},
															"type": "object"
														}
													]
												},
												"type": "array"
											},
											"AND": {
												"items": {
													"anyOf": [
														{
															"$ref": "#/components/schemas/SearchInfo"
														},
														{
															"properties": {
																"OR": {},
																"AND": {}
															},
															"type": "object"
														}
													]
												},
												"type": "array"
											}
										},
										"type": "object"
									},
									{
										"$ref": "#/components/schemas/SearchOptions"
									}
								]
							}
						}
					}
				}
			}
		},
		"/storage/list": {
			"post": {
				"operationId": "GetList",
				"responses": {
					"200": {
						"description": "สำเร็จ",
						"content": {
							"application/json": {
								"schema": {
									"anyOf": [
										{
											"items": {
												"$ref": "#/components/schemas/StorageFolder"
											},
											"type": "array"
										},
										{
											"items": {
												"$ref": "#/components/schemas/StorageFile"
											},
											"type": "array"
										}
									]
								},
								"examples": {
									"Example 1": {
										"value": [
											{
												"path": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 1/",
												"name": "แฟ้ม 1",
												"createdAt": "2021-07-20T12:33:13.018Z",
												"createdBy": "admin"
											},
											{
												"path": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 2/",
												"name": "แฟ้ม 2",
												"createdAt": "2022-01-23T16:05:02.114Z",
												"createdBy": "admin"
											}
										]
									},
									"Example 2": {
										"value": [
											{
												"pathname": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 1/เอกสาร 1.pdf",
												"path": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 1/",
												"title": "เอกสาร",
												"description": "เอกสารการเงิน",
												"author": "นายก",
												"category": [
													"บัญชี"
												],
												"keyword": [
													"เงิน",
													"บัญชี",
													"รายจ่าย",
													"รายรับ"
												],
												"upload": false,
												"hidden": false,
												"fileName": "เอกสาร 1.pdf",
												"fileSize": 10240,
												"fileType": "application/pdf",
												"createdAt": "2021-07-20T12:33:13.018Z",
												"createdBy": "admin",
												"updatedAt": "2021-07-20T12:33:13.018Z",
												"updatedBy": "admin"
											}
										]
									}
								}
							}
						}
					}
				},
				"summary": "แสดงรายการแฟ้มหรือไฟล์",
				"tags": [
					"Storage Folder",
					"Storage File"
				],
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ListRequestBody"
							}
						}
					}
				}
			}
		},
		"/storage/folder": {
			"post": {
				"operationId": "PostFolder",
				"responses": {
					"204": {
						"description": "สำเร็จ"
					}
				},
				"summary": "สร้างแฟ้ม",
				"tags": [
					"Storage Folder"
				],
				"security": [
					{
						"bearerAuth": [
							"management-role",
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/FolderBody"
							}
						}
					}
				}
			},
			"put": {
				"operationId": "MoveFolder",
				"responses": {
					"204": {
						"description": "สำเร็จ"
					}
				},
				"description": "ย้ายแฟ้มภายในตำแหน่งหนึ่งไปภายในอีกแฟ้มหนึ่ง\nหรือเปลี่ยนชื่อได้",
				"summary": "ย้ายแฟ้ม",
				"tags": [
					"Storage Folder"
				],
				"security": [
					{
						"bearerAuth": [
							"management-role",
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PutFolderBody"
							}
						}
					}
				}
			},
			"delete": {
				"operationId": "DeleteStorage",
				"responses": {
					"204": {
						"description": "สำเร็จ"
					}
				},
				"description": "ลบแฟ้มออกจากระบบ",
				"summary": "ลบแฟ้มออกจากระบบ",
				"tags": [
					"Storage Folder"
				],
				"security": [
					{
						"bearerAuth": [
							"management-role",
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DeleteFolderBody"
							}
						}
					}
				}
			}
		},
		"/storage/folder/size": {
			"post": {
				"operationId": "FolderSize",
				"responses": {
					"200": {
						"description": "สำเร็จ",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"size": {
											"type": "number",
											"format": "double"
										}
									},
									"required": [
										"size"
									],
									"type": "object"
								},
								"examples": {
									"Example 1": {
										"value": {
											"size": 10240
										}
									}
								}
							}
						}
					}
				},
				"summary": "ร้องขอขนาดของแฟ้ม มีหน่อยเป็นไบต์",
				"tags": [
					"Storage Folder"
				],
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/FolderBody"
							}
						}
					}
				}
			}
		},
		"/storage/file": {
			"post": {
				"operationId": "PostFile",
				"responses": {
					"200": {
						"description": "สำเร็จ",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"createdBy": {
											"type": "string"
										},
										"createdAt": {
											"anyOf": [
												{
													"type": "string"
												},
												{
													"type": "string",
													"format": "date-time"
												}
											]
										},
										"updatedBy": {
											"type": "string"
										},
										"updatedAt": {
											"anyOf": [
												{
													"type": "string"
												},
												{
													"type": "string",
													"format": "date-time"
												}
											]
										},
										"hidden": {
											"type": "boolean"
										},
										"upload": {
											"type": "boolean"
										},
										"path": {
											"type": "string"
										},
										"metadata": {
											"$ref": "#/components/schemas/Record_string.any_"
										},
										"author": {
											"type": "string"
										},
										"keyword": {
											"items": {
												"type": "string"
											},
											"type": "array"
										},
										"category": {
											"items": {
												"type": "string"
											},
											"type": "array"
										},
										"description": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"fileType": {
											"type": "string"
										},
										"fileSize": {
											"type": "number",
											"format": "double"
										},
										"fileName": {
											"type": "string"
										},
										"pathname": {
											"type": "string"
										},
										"uploadUrl": {
											"type": "string"
										}
									},
									"required": [
										"createdBy",
										"createdAt",
										"updatedBy",
										"updatedAt",
										"hidden",
										"upload",
										"path",
										"metadata",
										"author",
										"keyword",
										"category",
										"description",
										"title",
										"fileType",
										"fileSize",
										"fileName",
										"pathname",
										"uploadUrl"
									],
									"type": "object"
								},
								"examples": {
									"Example 1": {
										"value": {
											"pathname": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 1/เอกสาร 1.pdf",
											"path": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 1/",
											"title": "เอกสาร",
											"description": "เอกสารการเงิน",
											"author": "นายก",
											"category": [
												"บัญชี"
											],
											"keyword": [
												"เงิน",
												"บัญชี",
												"รายจ่าย",
												"รายรับ"
											],
											"upload": false,
											"hidden": false,
											"fileName": "เอกสาร 1.pdf",
											"fileSize": 10240,
											"fileType": "application/pdf",
											"createdAt": "2021-07-20T12:33:13.018Z",
											"createdBy": "admin",
											"updatedAt": "2021-07-20T12:33:13.018Z",
											"updatedBy": "admin",
											"uploadUrl": "s3.storage.upload"
										}
									}
								}
							}
						}
					}
				},
				"description": "ร้องขอการอัปโหลดไฟล์ โดยเมื่อร้องขอจะได้ URL สำหรับอัพโหลดไฟล์มาพร้อมข้อมูลของไฟล์ที่จะทำการอัพโหลด",
				"summary": "ร้องขอการอัปโหลดไฟล์",
				"tags": [
					"Storage File"
				],
				"security": [
					{
						"bearerAuth": [
							"management-role",
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/FileBody"
							}
						}
					}
				}
			},
			"put": {
				"operationId": "MoveFile",
				"responses": {
					"200": {
						"description": "สำเร็จ",
						"content": {
							"application/json": {
								"schema": {
									"anyOf": [
										{},
										{
											"properties": {
												"uploadUrl": {
													"type": "string"
												}
											},
											"required": [
												"uploadUrl"
											],
											"type": "object"
										}
									]
								},
								"examples": {
									"Example 1": {
										"value": {
											"uploadUrl": "s3.storage.upload"
										}
									}
								}
							}
						}
					},
					"204": {
						"description": "สำเร็จ"
					}
				},
				"summary": "ย้ายไฟล์หรือเปลี่ยนชื่อไฟล์",
				"tags": [
					"Storage File"
				],
				"security": [
					{
						"bearerAuth": [
							"management-role",
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PutFileBody"
							}
						}
					}
				}
			},
			"delete": {
				"operationId": "DeleteFile",
				"responses": {
					"204": {
						"description": "สำเร็จ"
					}
				},
				"summary": "ลบไฟล์ออกจากระบบ",
				"tags": [
					"Storage File"
				],
				"security": [
					{
						"bearerAuth": [
							"management-role",
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DeleteFileBody"
							}
						}
					}
				}
			}
		},
		"/storage/file/download": {
			"post": {
				"operationId": "DownloadFile",
				"responses": {
					"200": {
						"description": "สำเร็จ",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"createdBy": {
											"type": "string"
										},
										"createdAt": {
											"anyOf": [
												{
													"type": "string"
												},
												{
													"type": "string",
													"format": "date-time"
												}
											]
										},
										"updatedBy": {
											"type": "string"
										},
										"updatedAt": {
											"anyOf": [
												{
													"type": "string"
												},
												{
													"type": "string",
													"format": "date-time"
												}
											]
										},
										"hidden": {
											"type": "boolean"
										},
										"upload": {
											"type": "boolean"
										},
										"path": {
											"type": "string"
										},
										"metadata": {
											"$ref": "#/components/schemas/Record_string.any_"
										},
										"author": {
											"type": "string"
										},
										"keyword": {
											"items": {
												"type": "string"
											},
											"type": "array"
										},
										"category": {
											"items": {
												"type": "string"
											},
											"type": "array"
										},
										"description": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"fileType": {
											"type": "string"
										},
										"fileSize": {
											"type": "number",
											"format": "double"
										},
										"fileName": {
											"type": "string"
										},
										"pathname": {
											"type": "string"
										},
										"downloadUrl": {
											"type": "string"
										}
									},
									"required": [
										"createdBy",
										"createdAt",
										"updatedBy",
										"updatedAt",
										"hidden",
										"upload",
										"path",
										"metadata",
										"author",
										"keyword",
										"category",
										"description",
										"title",
										"fileType",
										"fileSize",
										"fileName",
										"pathname",
										"downloadUrl"
									],
									"type": "object"
								},
								"examples": {
									"Example 1": {
										"value": {
											"pathname": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 1/เอกสาร 1.pdf",
											"path": "ตู้เอกสาร 1/ลิ้นชัก 1/แฟ้ม 1/",
											"title": "เอกสาร",
											"description": "เอกสารการเงิน",
											"category": [
												"บัญชี"
											],
											"keyword": [
												"เงิน",
												"บัญชี",
												"รายจ่าย",
												"รายรับ"
											],
											"author": "นายก",
											"upload": false,
											"hidden": false,
											"fileName": "เอกสาร 1.pdf",
											"fileSize": 10240,
											"fileType": "application/pdf",
											"createdAt": "2021-07-20T12:33:13.018Z",
											"createdBy": "admin",
											"updatedAt": "2021-07-20T12:33:13.018Z",
											"updatedBy": "admin",
											"downloadUrl": "s3.storage.download"
										}
									}
								}
							}
						}
					}
				},
				"summary": "ขอข้อมูลการโหลดไฟล์",
				"tags": [
					"Download"
				],
				"security": [
					{
						"bearerAuth": [
							"management-role",
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DownloadFileBody"
							}
						}
					}
				}
			}
		},
		"/version": {
			"get": {
				"operationId": "GetVersion",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {}
							}
						}
					}
				},
				"tags": [
					"Version"
				],
				"security": [],
				"parameters": []
			}
		}
	},
	"servers": [
		{
			"url": "/api"
		}
	],
	"basePath": "/api"
}