{
	"components": {
		"examples": {},
		"headers": {},
		"parameters": {},
		"requestBodies": {},
		"responses": {},
		"schemas": {
			"UserID": {
				"type": "string"
			},
			"RoleID": {
				"type": "string"
			},
			"EntityOID": {
				"type": "string"
			},
			"User": {
				"properties": {
					"oid": {
						"$ref": "#/components/schemas/EntityOID"
					},
					"userID": {
						"$ref": "#/components/schemas/UserID"
					},
					"name": {
						"type": "string"
					},
					"avatarURL": {
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"emailVerified": {
						"type": "boolean"
					},
					"invitingExpired": {
						"type": "boolean"
					},
					"createdAt": {
						"type": "string"
					},
					"updatedAt": {
						"type": "string"
					},
					"globalRoles": {
						"items": {
							"$ref": "#/components/schemas/RoleID"
						},
						"type": "array"
					},
					"isLSUser": {
						"type": "boolean"
					}
				},
				"required": [
					"userID"
				],
				"type": "object",
				"additionalProperties": false
			},
			"Pick_User-Array.Exclude_keyofUser-Array.__": {
				"properties": {
					"length": {
						"type": "number",
						"format": "double",
						"description": "Returns the length of a String object."
					}
				},
				"required": [
					"length"
				],
				"type": "object",
				"description": "From T, pick a set of properties whose keys are in the union K"
			},
			"Omit_User-Array._": {
				"$ref": "#/components/schemas/Pick_User-Array.Exclude_keyofUser-Array.__",
				"description": "Construct a type with the properties of T except for those in type K."
			},
			"Pick_Thread.entityOID-or-position_": {
				"properties": {
					"entityOID": {},
					"position": {}
				},
				"type": "object",
				"description": "From T, pick a set of properties whose keys are in the union K"
			},
			"Pick_Comment.parentCommentOID-or-payload_": {
				"properties": {
					"parentCommentOID": {},
					"payload": {}
				},
				"type": "object",
				"description": "From T, pick a set of properties whose keys are in the union K"
			},
			"CreateCommentInput": {
				"$ref": "#/components/schemas/Pick_Comment.parentCommentOID-or-payload_"
			},
			"UpdateCommentResponse": {},
			"Record_EntityOID.PERMISSIONS-Array_": {
				"properties": {},
				"type": "object",
				"description": "Construct a type with a set of properties K of type T"
			},
			"GetUserPermissionWithGivenEntityOIDsResponse": {
				"$ref": "#/components/schemas/Record_EntityOID.PERMISSIONS-Array_"
			},
			"Role": {
				"properties": {
					"roleID": {
						"$ref": "#/components/schemas/RoleID"
					},
					"name": {
						"type": "string"
					},
					"description": {
						"type": "string"
					}
				},
				"required": [
					"roleID",
					"name",
					"description"
				],
				"type": "object",
				"additionalProperties": false
			},
			"LanguageID": {
				"type": "string"
			},
			"Language": {
				"properties": {
					"languageID": {
						"$ref": "#/components/schemas/LanguageID"
					},
					"name": {
						"type": "string"
					},
					"description": {
						"type": "string"
					}
				},
				"required": [
					"languageID",
					"name",
					"description"
				],
				"type": "object",
				"additionalProperties": false
			},
			"GetAllAssetResponse": {
				"properties": {
					"localizationSystemRoles": {
						"properties": {
							"organization": {
								"items": {
									"$ref": "#/components/schemas/Role"
								},
								"type": "array"
							},
							"project": {
								"items": {
									"$ref": "#/components/schemas/Role"
								},
								"type": "array"
							},
							"inkrls": {
								"items": {
									"$ref": "#/components/schemas/Role"
								},
								"type": "array"
							}
						},
						"required": [
							"organization",
							"project",
							"inkrls"
						],
						"type": "object"
					},
					"languages": {
						"items": {
							"$ref": "#/components/schemas/Language"
						},
						"type": "array"
					}
				},
				"required": [
					"localizationSystemRoles",
					"languages"
				],
				"type": "object",
				"additionalProperties": false
			}
		},
		"securitySchemes": {
			"BearerJWT": {
				"type": "http",
				"scheme": "bearer",
				"bearerFormat": "JWT"
			}
		}
	},
	"info": {
		"title": "nab-swagger-cli",
		"version": "1.2.8",
		"description": "Build swagger-compliant REST APIs using TypeScript and Node",
		"license": {
			"name": "MIT"
		},
		"contact": {
			"name": "NAB Studio ",
			"url": "https://officesnapshots.com/2020/06/15/nab-studio-offices-ho-chi-minh-city/"
		}
	},
	"openapi": "3.0.0",
	"paths": {
		"/api/v0/user/search-by-name": {
			"put": {
				"operationId": "SearchForUserByNameMethod",
				"responses": {
					"200": {
						"description": "Result user matching that name",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/User"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Search for user by name",
				"summary": "Search for user by name",
				"tags": [
					"User"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Request payload create new thread",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"properties": {
									"name": {
										"type": "string"
									}
								},
								"required": [
									"name"
								],
								"type": "object"
							},
							"example": {
								"name": "input search name body"
							}
						}
					}
				}
			}
		},
		"/api/v0/thread": {
			"post": {
				"operationId": "CreateThreadMethod",
				"responses": {
					"200": {
						"description": "OID of new created thread",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": "ls-thread-3"
									}
								}
							}
						}
					}
				},
				"description": "Create new thread",
				"summary": "Create new thread",
				"tags": [
					"Thread"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Request payload create new thread",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": {
								"entityOID": "ls-project-1",
								"position": {
									"x": 1,
									"y": 3
								}
							}
						}
					}
				}
			}
		},
		"/api/v0/thread/entity/{entityOID}": {
			"get": {
				"operationId": "GetThreadOIDsByEntityOIDMethod",
				"responses": {
					"200": {
						"description": "OIDs of query result",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": [
											"ls-thread-3",
											"ls-thread-4"
										]
									}
								}
							}
						}
					}
				},
				"description": "Get all thread by entityOID",
				"summary": "Get all thread by entityOID",
				"tags": [
					"Thread"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "EntityOID query all thread relate",
						"in": "path",
						"name": "entityOID",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/EntityOID"
						}
					}
				]
			}
		},
		"/api/v0/thread/{threadOID}/unresolve": {
			"put": {
				"operationId": "UnResolveCommentMethod",
				"responses": {
					"200": {
						"description": "Ok un-resolve success"
					}
				},
				"description": "Un-resolve thread by oid",
				"summary": "Un-resolve thread by oid",
				"tags": [
					"Thread"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid need un-resolve",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				]
			}
		},
		"/api/v0/thread/{threadOID}/resolve": {
			"put": {
				"operationId": "ResolveCommentMethod",
				"responses": {
					"200": {
						"description": "Ok resolve success"
					}
				},
				"description": "Resolve thread by oid",
				"summary": "Resolve thread by oid",
				"tags": [
					"Thread"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid need un-resolve",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				]
			}
		},
		"/api/v0/thread/{threadOID}/position": {
			"put": {
				"operationId": "UpdateThreadPositionMethod",
				"responses": {
					"200": {
						"description": "Ok update success"
					}
				},
				"description": "Update position of thread",
				"summary": "Update position of thread",
				"tags": [
					"Thread"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				],
				"requestBody": {
					"description": "Position need to be update",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": {
								"x": 1.2,
								"y": 1.5
							}
						}
					}
				}
			}
		},
		"/api/v0/thread/{threadOID}": {
			"delete": {
				"operationId": "DeleteThreadMethod",
				"responses": {
					"200": {
						"description": "Ok delete success"
					}
				},
				"description": "Delete thread by oid",
				"summary": "Delete thread by oid",
				"tags": [
					"Thread"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid need delete",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				]
			}
		},
		"/api/v0/thread/{threadOID}/comment": {
			"post": {
				"operationId": "CreateCommentMethod",
				"responses": {
					"200": {
						"description": "Ok return new commentID",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": "ls-comment-1"
									}
								}
							}
						}
					}
				},
				"description": "Create Comment",
				"summary": "Create Comment",
				"tags": [
					"Comment"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				],
				"requestBody": {
					"description": " payload create new comment",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CreateCommentInput"
							},
							"example": {
								"parentCommentOID": "ls-comment-3",
								"payload": {
									"any": "any"
								}
							}
						}
					}
				}
			},
			"get": {
				"operationId": "GetCommentMethod",
				"responses": {
					"200": {
						"description": "Ok return new commentID",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": [
											"ls-comment-1",
											"ls-comment-2"
										]
									}
								}
							}
						}
					}
				},
				"description": "Get comment by ThreadID",
				"summary": "Get comment by ThreadID",
				"tags": [
					"Comment"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				]
			}
		},
		"/api/v0/thread/{threadOID}/comment/{commentOID}": {
			"put": {
				"operationId": "UpdateCommentMethod",
				"responses": {
					"200": {
						"description": "Ok update success"
					}
				},
				"description": "Update comment by CommentOID",
				"summary": "Update comment by CommentOID",
				"tags": [
					"Comment"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					},
					{
						"description": "thread oid",
						"in": "path",
						"name": "commentOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				]
			},
			"delete": {
				"operationId": "DeleteCommentMethod",
				"responses": {
					"200": {
						"description": "Ok delete success"
					}
				},
				"description": "Delete comment by CommentOID",
				"summary": "Delete comment by CommentOID",
				"tags": [
					"Comment"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "thread oid",
						"in": "path",
						"name": "threadOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					},
					{
						"description": "thread oid",
						"in": "path",
						"name": "commentOID",
						"required": true,
						"schema": {
							"type": "string"
						},
						"example": "ls-thread-3"
					}
				]
			}
		},
		"/api/v0/tag/search-by-name": {
			"put": {
				"operationId": "GetAllAccessibilityTagMethod",
				"responses": {
					"200": {
						"description": "OIDs of result tags",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": [
											"ls-tag-1",
											"ls-tag-2",
											"ls-tag-3"
										]
									}
								}
							}
						}
					}
				},
				"description": "Search tags by names",
				"summary": "Search tags by names",
				"tags": [
					"Tag"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Request payload create new tags",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": {
								"name": "search tags names"
							}
						}
					}
				}
			}
		},
		"/api/v0/tag": {
			"post": {
				"operationId": "CreateTagMethod",
				"responses": {
					"200": {
						"description": "OIDs of new created tags",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": [
											"ls-tag-1",
											"ls-tag-2",
											"ls-tag-3"
										]
									}
								}
							}
						}
					}
				},
				"description": "Create new Tags",
				"summary": "Create new Tags",
				"tags": [
					"Tag"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Request payload create new tags",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": [
								{
									"name": "test tags",
									"extras": [
										{
											"key": "anyKeys",
											"value": "any Value"
										}
									]
								}
							]
						}
					}
				}
			},
			"get": {
				"operationId": "GetAllAccessibilityTagMethod",
				"responses": {
					"200": {
						"description": "OIDs of result tags",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": [
											"ls-tag-1",
											"ls-tag-2",
											"ls-tag-3"
										]
									}
								}
							}
						}
					}
				},
				"description": "Get all accessibility tags",
				"summary": "Get all accessibility tags",
				"tags": [
					"Tag"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": []
			}
		},
		"/api/v0/spelling-error": {
			"put": {
				"operationId": "CheckSpellingErrorMethod",
				"responses": {
					"200": {
						"description": "Result of spelling check",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": {
											"groupText1": [
												{
													"id": "1",
													"context": {
														"text": "need",
														"offset": 3,
														"length": 4
													},
													"type": "",
													"error": "",
													"suggestion": [
														"text need check spellings"
													]
												}
											]
										}
									}
								}
							}
						}
					}
				},
				"description": "Check spelling error",
				"summary": "Check spelling error",
				"tags": [
					"Spelling"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Request payload need to check spelling",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": {
								"texts": {
									"groupText1": "text need check spelling"
								},
								"language": "en"
							}
						}
					}
				}
			}
		},
		"/api/v0/permission": {
			"put": {
				"operationId": "GetUserPermissionWithGivenEntityOIDsMethod",
				"responses": {
					"200": {
						"description": "OID with all access permission",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GetUserPermissionWithGivenEntityOIDsResponse"
								},
								"examples": {
									"Example 1": {
										"value": {
											"ls-chapter-1": [
												"view:anyProject:chapters",
												"delete:organization:anyProject:chapter"
											]
										}
									}
								}
							}
						}
					}
				},
				"description": "Get User Permission",
				"summary": "Get User Permission",
				"tags": [
					"Permission"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": []
			}
		},
		"/api/v0/glossary": {
			"post": {
				"operationId": "CreateGlossaryMethod",
				"responses": {
					"200": {
						"description": "OIDs of new glossary",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": "ls-glossary-1"
									}
								}
							}
						}
					}
				},
				"description": "Create new Glossary",
				"summary": "Create new Glossary",
				"tags": [
					"Glossary"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Request payload create new glossary",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": {
								"name": "new glossary name",
								"sourceLanguage": "en",
								"targetLanguage": "ko"
							}
						}
					}
				}
			}
		},
		"/api/v0/global-setting": {
			"get": {
				"operationId": "GetAllAssetMethod",
				"responses": {
					"200": {
						"description": "all global setting results",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GetAllAssetResponse"
								}
							}
						}
					}
				},
				"description": "Get global setting",
				"summary": "Get global setting",
				"tags": [
					"Setting"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": []
			}
		},
		"/api/v0/asset": {
			"post": {
				"operationId": "CreateManyAssetMethod",
				"responses": {
					"200": {
						"description": "OIDs of result assets",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": [
											"ls-asset-1",
											"ls-asset-2",
											"ls-asset-3"
										]
									}
								}
							}
						}
					}
				},
				"description": "Create bulk many assets",
				"summary": "Create bulk many assets",
				"tags": [
					"Asset"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Create many assets",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": [
								{
									"name": "assetsName",
									"fileURL": {
										"url": "s3ImageURL"
									},
									"fileType": "png",
									"fileSize": 500,
									"previewImage": {
										"url": "s3ImageURL"
									},
									"tagList": [
										"ls-tag-2"
									]
								}
							]
						}
					}
				}
			},
			"get": {
				"operationId": "GetAllAssetMethod",
				"responses": {
					"200": {
						"description": "OIDs of result assets",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": [
											"ls-asset-1",
											"ls-asset-2",
											"ls-asset-3"
										]
									}
								}
							}
						}
					}
				},
				"description": "Get all accessibility asset",
				"summary": "Get all accessibility asset",
				"tags": [
					"Asset"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": []
			},
			"delete": {
				"operationId": "DeleteManyAssetMethod",
				"responses": {
					"200": {
						"description": "Ok delete assets success",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					}
				},
				"description": "Delete many assets",
				"summary": "Delete many assets",
				"tags": [
					"Asset"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [],
				"requestBody": {
					"description": "Delete many assets",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": [
								"ls-asset-1",
								"ls-asset2"
							]
						}
					}
				}
			}
		},
		"/api/v0/asset/{assetOID}": {
			"put": {
				"operationId": "UpdateAssetMethod",
				"responses": {
					"200": {
						"description": "Ok update assets success",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					}
				},
				"description": "Update asset",
				"summary": "Update asset",
				"tags": [
					"Asset"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "assetOID need to update",
						"in": "path",
						"name": "assetOID",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/EntityOID"
						}
					}
				],
				"requestBody": {
					"description": "payload update assets",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Pick_Thread.entityOID-or-position_"
							},
							"example": {
								"name": "test",
								"tagList": [
									"ls-tag-2"
								]
							}
						}
					}
				}
			}
		},
		"/api/v0/asset/{assetOID}/download": {
			"get": {
				"operationId": "GetDownloadImageMethod",
				"responses": {
					"200": {
						"description": "Ok return image s3",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"Example 1": {
										"value": {
											"url": "s3://bucket/key"
										}
									}
								}
							}
						}
					}
				},
				"description": "Get download s3 image assets",
				"summary": "Get download s3 image assets",
				"tags": [
					"Asset"
				],
				"security": [
					{
						"BearerJWT": []
					}
				],
				"parameters": [
					{
						"description": "assetOID need to update",
						"in": "path",
						"name": "assetOID",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/EntityOID"
						}
					}
				]
			}
		}
	},
	"servers": [
		{
			"url": "{protocol}:///",
			"description": "mock server api",
			"variables": {
				"protocol": {
					"enum": [
						"http",
						"https"
					],
					"default": "http"
				}
			}
		},
		{
			"url": "{protocol}://localize-api.inkr.dev/",
			"description": "Dev server",
			"variables": {
				"protocol": {
					"enum": [
						"http",
						"https"
					],
					"default": "http"
				}
			}
		}
	]
}