{ "openapi": "3.0.0", "components": { "examples": {}, "headers": {}, "parameters": {}, "requestBodies": {}, "responses": {}, "schemas": { "Genre": { "enum": [ "Fiction", "Non-Fiction", "Mystery", "Sci-Fi", "Fantasy", "Biography", "History", "Romance", "Thriller", "Horror", "Poetry", "Drama", "Comics", "Other" ], "type": "string" }, "BookStatus": { "enum": [ "available", "borrowed" ], "type": "string" }, "Book": { "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "author": { "type": "string" }, "pages": { "type": "number", "format": "double" }, "year": { "type": "number", "format": "double" }, "genre": { "$ref": "#/components/schemas/Genre" }, "status": { "$ref": "#/components/schemas/BookStatus" } }, "required": [ "id", "title", "author", "pages", "year", "genre", "status" ], "type": "object", "additionalProperties": false }, "Pick_Visitor.Exclude_keyofVisitor.currentBooks-or-history__": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "surname": { "type": "string" }, "registrationDate": { "type": "string" } }, "required": [ "id", "name", "surname", "registrationDate" ], "type": "object", "description": "From T, pick a set of properties whose keys are in the union K" }, "VisitorWithBooks": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "surname": { "type": "string" }, "registrationDate": { "type": "string" }, "currentBooks": { "items": { "$ref": "#/components/schemas/Book" }, "type": "array" }, "history": { "items": { "$ref": "#/components/schemas/Book" }, "type": "array" } }, "required": [ "id", "name", "surname", "registrationDate", "currentBooks", "history" ], "type": "object", "additionalProperties": false }, "ErrorResponse": { "properties": { "message": { "type": "string" }, "code": { "type": "string" }, "statusCode": { "type": "number", "format": "double" } }, "required": [ "message" ], "type": "object", "additionalProperties": false }, "ApiResponse_VisitorWithBooks-Array_": { "properties": { "data": { "items": { "$ref": "#/components/schemas/VisitorWithBooks" }, "type": "array" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "ApiResponse_VisitorWithBooks_": { "properties": { "data": { "$ref": "#/components/schemas/VisitorWithBooks" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "Link": { "properties": { "table": { "type": "string" }, "id": { "type": "string" } }, "required": [ "table", "id" ], "type": "object", "additionalProperties": false }, "Visitor": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "surname": { "type": "string" }, "registrationDate": { "type": "string" }, "currentBooks": { "items": { "$ref": "#/components/schemas/Link" }, "type": "array" }, "history": { "items": { "$ref": "#/components/schemas/Link" }, "type": "array" } }, "required": [ "id", "name", "surname", "registrationDate", "currentBooks", "history" ], "type": "object", "additionalProperties": false }, "ApiResponse_Visitor_": { "properties": { "data": { "$ref": "#/components/schemas/Visitor" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "CreateVisitorRequest": { "properties": { "name": { "type": "string" }, "surname": { "type": "string" }, "registrationDate": { "type": "string" } }, "required": [ "name", "surname", "registrationDate" ], "type": "object", "additionalProperties": false }, "Partial_CreateVisitorRequest_": { "properties": { "name": { "type": "string" }, "surname": { "type": "string" }, "registrationDate": { "type": "string" } }, "type": "object", "description": "Make all properties in T optional" }, "ApiResponse_void_": { "properties": { "data": {}, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "DayOfWeek": { "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ], "type": "string" }, "Employee": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "surname": { "type": "string" }, "experience": { "type": "number", "format": "double" }, "workDays": { "items": { "$ref": "#/components/schemas/DayOfWeek" }, "type": "array" } }, "required": [ "id", "name", "surname", "experience", "workDays" ], "type": "object", "additionalProperties": false }, "ApiResponse_Employee-Array_": { "properties": { "data": { "items": { "$ref": "#/components/schemas/Employee" }, "type": "array" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "ApiResponse_Employee_": { "properties": { "data": { "$ref": "#/components/schemas/Employee" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "CreateEmployeeRequest": { "properties": { "name": { "type": "string" }, "surname": { "type": "string" }, "experience": { "type": "number", "format": "double" }, "workDays": { "items": { "$ref": "#/components/schemas/DayOfWeek" }, "type": "array" } }, "required": [ "name", "surname", "experience", "workDays" ], "type": "object", "additionalProperties": false }, "Partial_CreateEmployeeRequest_": { "properties": { "name": { "type": "string" }, "surname": { "type": "string" }, "experience": { "type": "number", "format": "double" }, "workDays": { "items": { "$ref": "#/components/schemas/DayOfWeek" }, "type": "array" } }, "type": "object", "description": "Make all properties in T optional" }, "ApiResponse_Book-Array_": { "properties": { "data": { "items": { "$ref": "#/components/schemas/Book" }, "type": "array" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "ApiResponse_Book_": { "properties": { "data": { "$ref": "#/components/schemas/Book" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "CreateBookRequest": { "properties": { "title": { "type": "string" }, "author": { "type": "string" }, "pages": { "type": "number", "format": "double" }, "year": { "type": "number", "format": "double" }, "genre": { "$ref": "#/components/schemas/Genre" } }, "required": [ "title", "author", "pages", "year", "genre" ], "type": "object", "additionalProperties": false }, "Partial_CreateBookRequest_": { "properties": { "title": { "type": "string" }, "author": { "type": "string" }, "pages": { "type": "number", "format": "double" }, "year": { "type": "number", "format": "double" }, "genre": { "$ref": "#/components/schemas/Genre" } }, "type": "object", "description": "Make all properties in T optional" }, "ApiResponse__message-string__": { "properties": { "data": { "properties": { "message": { "type": "string" } }, "required": [ "message" ], "type": "object" }, "successful": { "type": "boolean" }, "error": { "$ref": "#/components/schemas/ErrorResponse" } }, "required": [ "successful" ], "type": "object", "additionalProperties": false }, "BorrowBookRequest": { "properties": { "bookIds": { "items": { "type": "string" }, "type": "array" }, "visitorId": { "type": "string" }, "employeeId": { "type": "string" }, "borrowDate": { "type": "string" } }, "required": [ "bookIds", "visitorId", "employeeId", "borrowDate" ], "type": "object", "additionalProperties": false }, "ReturnBookRequest": { "properties": { "bookIds": { "items": { "type": "string" }, "type": "array" }, "visitorId": { "type": "string" }, "employeeId": { "type": "string" }, "returnDate": { "type": "string" } }, "required": [ "bookIds", "visitorId", "employeeId", "returnDate" ], "type": "object", "additionalProperties": false } }, "securitySchemes": {} }, "info": { "title": "lab4", "version": "1.0.0", "license": { "name": "ISC" }, "contact": {} }, "paths": { "/visitors": { "get": { "operationId": "GetVisitors", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_VisitorWithBooks-Array_" } } } } }, "tags": [ "Visitors" ], "security": [], "parameters": [] }, "post": { "operationId": "AddVisitor", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Visitor_" } } } } }, "tags": [ "Visitors" ], "security": [], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateVisitorRequest" } } } } } }, "/visitors/{id}": { "get": { "operationId": "GetVisitor", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_VisitorWithBooks_" } } } } }, "tags": [ "Visitors" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] }, "patch": { "operationId": "UpdateVisitor", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_VisitorWithBooks_" } } } } }, "tags": [ "Visitors" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Partial_CreateVisitorRequest_" } } } } }, "delete": { "operationId": "DeleteVisitor", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_void_" } } } } }, "tags": [ "Visitors" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] } }, "/visitors/{id}/download": { "get": { "operationId": "DownloadVisitor", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "type": "string" } } } } }, "tags": [ "Visitors" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] } }, "/employees": { "get": { "operationId": "GetEmployees", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Employee-Array_" } } } } }, "tags": [ "Employees" ], "security": [], "parameters": [] }, "post": { "operationId": "AddEmployee", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Employee_" } } } } }, "tags": [ "Employees" ], "security": [], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEmployeeRequest" } } } } } }, "/employees/{id}": { "get": { "operationId": "GetEmployee", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Employee_" } } } } }, "tags": [ "Employees" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] }, "patch": { "operationId": "UpdateEmployee", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Employee_" } } } } }, "tags": [ "Employees" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Partial_CreateEmployeeRequest_" } } } } }, "delete": { "operationId": "DeleteEmployee", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_void_" } } } } }, "tags": [ "Employees" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] } }, "/employees/{id}/download": { "get": { "operationId": "DownloadEmployee", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "type": "string" } } } } }, "tags": [ "Employees" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] } }, "/books": { "get": { "operationId": "GetBooks", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Book-Array_" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [] }, "post": { "operationId": "AddBook", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Book_" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBookRequest" } } } } } }, "/books/{id}": { "get": { "operationId": "GetBook", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Book_" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] }, "patch": { "operationId": "UpdateBook", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Book_" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Partial_CreateBookRequest_" } } } } }, "delete": { "operationId": "DeleteBook", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse__message-string__" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] } }, "/books/{id}/download": { "get": { "operationId": "DownloadBook", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "type": "string" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ] } }, "/books/borrow": { "post": { "operationId": "BorrowBook", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse__message-string__" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BorrowBookRequest" } } } } } }, "/books/return": { "post": { "operationId": "ReturnBook", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse__message-string__" } } } } }, "tags": [ "Books" ], "security": [], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReturnBookRequest" } } } } } } }, "servers": [ { "url": "/api" } ] }