{ "x-generator": "NSwag v14.6.3.0 (NJsonSchema v11.5.2.0 (Newtonsoft.Json v13.0.0.0))", "openapi": "3.0.0", "info": { "title": "online", "version": "v1" }, "servers": [ { "url": "http://localhost:5000" } ], "paths": { "/test": { "get": { "tags": [ "Test" ], "operationId": "Test", "parameters": [ { "name": "name", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } } } } }, "/slot/contracts/{id}": { "get": { "tags": [ "Slot" ], "operationId": "SlotGetContracts", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "guid" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SlotGetContractsResponse" } } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } } } } }, "/slot": { "get": { "tags": [ "Slot" ], "operationId": "SlotGetAll", "parameters": [ { "name": "facilityId", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "date", "in": "query", "required": true, "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SlotGetAllResponse" } } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } } } } }, "/slot/available": { "post": { "tags": [ "Slot" ], "operationId": "SlotAvailable", "requestBody": { "x-name": "AvailableSlotRequest", "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailableSlotRequest" } } }, "required": true, "x-position": 1 }, "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/outlet": { "get": { "tags": [ "Outlet" ], "operationId": "OutletGetAll", "parameters": [ { "name": "sorts", "in": "query", "schema": { "type": "string", "nullable": true } }, { "name": "filters", "in": "query", "schema": { "type": "string", "nullable": true } }, { "name": "page", "in": "query", "schema": { "type": "integer", "format": "int32", "nullable": true } }, { "name": "pageSize", "in": "query", "schema": { "type": "integer", "format": "int32", "nullable": true } } ], "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedListOfOutlet" } } } } } } }, "/outlet/{slug}": { "get": { "tags": [ "Outlet" ], "operationId": "OutletGet", "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OutletDTO" } } } } } } }, "/outlet/{slug}/admin": { "get": { "tags": [ "Outlet" ], "operationId": "OutletAdminGet", "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OutletDTO" } } } } } } }, "/example": { "get": { "tags": [ "Example" ], "operationId": "Example", "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/example/verify": { "get": { "tags": [ "Example" ], "operationId": "ExampleVerify", "parameters": [ { "name": "code", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/booking": { "post": { "tags": [ "Booking" ], "operationId": "BookingCreate", "requestBody": { "x-name": "BookingCreateRequest", "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookingCreateRequest" } } }, "required": true, "x-position": 1 }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookingCreateResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } } } } }, "/user/role": { "post": { "tags": [ "User" ], "operationId": "UserRole", "requestBody": { "x-name": "UserRoleRequest", "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRoleRequest" } } }, "required": true, "x-position": 1 }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized" }, "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } } } } }, "/account/register": { "post": { "tags": [ "Account" ], "operationId": "Register", "requestBody": { "x-name": "UserRegisterRequest", "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRegisterRequest" } } }, "required": true, "x-position": 1 }, "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "204": { "description": "No Content" } } } }, "/account/refresh": { "post": { "tags": [ "Account" ], "operationId": "Refresh", "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserModel" } } } } } } }, "/account/refresh/revokeAll": { "post": { "tags": [ "Account" ], "operationId": "RefreshRevokeAll", "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "204": { "description": "No Content" } } } }, "/account/refresh/revoke": { "post": { "tags": [ "Account" ], "operationId": "RefreshRevoke", "requestBody": { "x-name": "RefreshRevokeRequest", "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshRevokeRequest" } } }, "required": true, "x-position": 1 }, "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "204": { "description": "No Content" } } } }, "/account/refresh/list": { "get": { "tags": [ "Account" ], "operationId": "RefreshList", "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RefreshListResponse" } } } } } } } }, "/account/passkey": { "post": { "tags": [ "Account" ], "operationId": "Passkey", "requestBody": { "x-name": "PasskeyRequest", "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasskeyRequest" } } }, "required": true, "x-position": 1 }, "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/account/me": { "get": { "tags": [ "Account" ], "operationId": "AccountMe", "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserModel" } } } }, "401": { "description": "Unauthorized" } } } }, "/account/logout": { "post": { "tags": [ "Account" ], "operationId": "Logout", "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/account/login": { "post": { "tags": [ "Account" ], "operationId": "Login", "requestBody": { "x-name": "LoginRequest", "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginRequest" } } }, "required": true, "x-position": 1 }, "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/account/login/google": { "get": { "tags": [ "Account" ], "operationId": "LoginGoogle", "parameters": [ { "name": "returnUrl", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "500": { "description": "Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalErrorResponse" } } } }, "204": { "description": "No Content" } } } } }, "components": { "schemas": { "InternalErrorResponse": { "type": "object", "description": "the dto used to send an error response to the client when an unhandled exception occurs on the server", "additionalProperties": false, "required": [ "status", "code", "reason", "note" ], "properties": { "status": { "type": "string", "description": "error status", "default": "Internal Server Error!" }, "code": { "type": "integer", "description": "http status code of the error response", "format": "int32", "default": 500 }, "reason": { "type": "string", "description": "the reason for the error", "default": "Something unexpected has happened" }, "note": { "type": "string", "description": "additional information or instructions", "default": "See application log for stack trace." } } }, "TestResponse": { "type": "object", "additionalProperties": false, "required": [ "success" ], "properties": { "success": { "type": "boolean" } } }, "SlotGetContractsResponse": { "type": "object", "additionalProperties": false, "required": [ "id", "slotId", "contractId", "contractName", "price", "canPayLater" ], "properties": { "id": { "type": "integer", "format": "int32" }, "slotId": { "type": "string", "format": "guid" }, "contractId": { "type": "integer", "format": "int32" }, "contractName": { "type": "string" }, "price": { "type": "number", "format": "decimal" }, "validationId": { "type": "integer", "format": "int32", "nullable": true }, "canPayLater": { "type": "boolean" }, "description": { "type": "string", "nullable": true } } }, "ErrorResponse": { "type": "object", "description": "the dto used to send an error response to the client", "additionalProperties": false, "required": [ "statusCode", "message", "errors" ], "properties": { "statusCode": { "type": "integer", "description": "the http status code sent to the client. default is 400.", "format": "int32", "default": 400 }, "message": { "type": "string", "description": "the message for the error response", "default": "One or more errors occurred!" }, "errors": { "type": "object", "description": "the collection of errors for the current context", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } }, "SlotGetAllResponse": { "type": "object", "additionalProperties": false, "required": [ "id", "startDatetime", "booked", "total", "isAvailable" ], "properties": { "id": { "type": "string", "format": "guid" }, "facilityId": { "type": "integer", "format": "int32", "nullable": true }, "resourceId": { "type": "integer", "format": "int32", "nullable": true }, "resourceName": { "type": "string", "nullable": true }, "startDatetime": { "type": "string", "format": "date-time" }, "endDatetime": { "type": "string", "format": "date-time", "nullable": true }, "booked": { "type": "integer", "format": "int32" }, "total": { "type": "integer", "format": "int32" }, "isAvailable": { "type": "boolean" } } }, "AvailableSlotRequest": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "format": "guid" }, "slotCount": { "type": "integer", "format": "int32", "nullable": true } } }, "PaginatedListOfOutlet": { "type": "object", "additionalProperties": false, "required": [ "items", "pageNumber", "totalPages", "totalCount", "hasPreviousPage", "hasNextPage" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/Outlet" } }, "pageNumber": { "type": "integer", "format": "int32" }, "totalPages": { "type": "integer", "format": "int32" }, "totalCount": { "type": "integer", "format": "int32" }, "hasPreviousPage": { "type": "boolean" }, "hasNextPage": { "type": "boolean" } } }, "Outlet": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "slug", "name", "businessId", "business", "vatNumber", "displayName", "outletTypeId", "outletType", "isActive", "facilities", "extras", "contractOutlets" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "slug": { "type": "string" }, "name": { "type": "string" }, "businessId": { "type": "integer", "format": "int32" }, "business": { "$ref": "#/components/schemas/Business" }, "vatNumber": { "type": "string" }, "logo": { "type": "string", "nullable": true }, "address": { "type": "string", "nullable": true }, "company": { "type": "string", "nullable": true }, "registration": { "type": "string", "nullable": true }, "displayName": { "type": "string" }, "outletTypeId": { "type": "integer", "format": "int32" }, "outletType": { "$ref": "#/components/schemas/OutletType" }, "isActive": { "type": "boolean" }, "facilities": { "type": "array", "items": { "$ref": "#/components/schemas/Facility" } }, "extras": { "type": "array", "items": { "$ref": "#/components/schemas/Extra" } }, "contractOutlets": { "type": "array", "items": { "$ref": "#/components/schemas/ContractOutlet" } } } }, "Business": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "name", "outlets", "contracts", "contractFields" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "outlets": { "type": "array", "items": { "$ref": "#/components/schemas/Outlet" } }, "contracts": { "type": "array", "items": { "$ref": "#/components/schemas/Contract" } }, "contractFields": { "type": "array", "items": { "$ref": "#/components/schemas/ContractField" } } } }, "Contract": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "name", "businessId", "business" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "businessId": { "type": "integer", "format": "int32" }, "business": { "$ref": "#/components/schemas/Business" } } }, "ContractField": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "name", "businessId", "business", "contractFieldConfigs" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "fieldValidation": { "type": "string", "nullable": true }, "businessId": { "type": "integer", "format": "int32" }, "business": { "$ref": "#/components/schemas/Business" }, "contractFieldConfigs": { "type": "array", "items": { "$ref": "#/components/schemas/ContractFieldConfig" } } } }, "ContractFieldConfig": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "contractId", "contract", "contractConfigId", "contractField", "isActive" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "contractId": { "type": "integer", "format": "int32" }, "contract": { "$ref": "#/components/schemas/Contract" }, "contractConfigId": { "type": "integer", "format": "int32" }, "contractField": { "$ref": "#/components/schemas/ContractField" }, "isActive": { "type": "boolean" } } }, "OutletType": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "name" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" } } }, "Facility": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "name", "outletId", "outlet", "facilityTypeId", "facilityType", "resources", "slots", "facilityExtras" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "outletId": { "type": "integer", "format": "int32" }, "outlet": { "$ref": "#/components/schemas/Outlet" }, "isActive": { "type": "boolean", "nullable": true }, "facilityTypeId": { "type": "integer", "format": "int32" }, "facilityType": { "$ref": "#/components/schemas/FacilityType" }, "resources": { "type": "array", "items": { "$ref": "#/components/schemas/Resource" } }, "slots": { "type": "array", "items": { "$ref": "#/components/schemas/Slot" } }, "facilityExtras": { "type": "array", "items": { "$ref": "#/components/schemas/FacilityExtra" } } } }, "FacilityType": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" } } }, "Resource": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "name", "facilityId", "facility", "isActive", "slots" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "facilityId": { "type": "integer", "format": "int32" }, "facility": { "$ref": "#/components/schemas/Facility" }, "isActive": { "type": "boolean" }, "slots": { "type": "array", "items": { "$ref": "#/components/schemas/Slot" } } } }, "Slot": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "startDatetime", "maxBookings", "slotContracts", "extraBookings" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "string", "format": "guid" }, "resourceId": { "type": "integer", "format": "int32", "nullable": true }, "resource": { "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/Resource" } ] }, "facilityId": { "type": "integer", "format": "int32", "nullable": true }, "facility": { "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/Facility" } ] }, "startDatetime": { "type": "string", "format": "date-time" }, "endDatetime": { "type": "string", "format": "date-time", "nullable": true }, "maxBookings": { "type": "integer", "format": "int32" }, "slotContracts": { "type": "array", "items": { "$ref": "#/components/schemas/SlotContract" } }, "extraBookings": { "type": "array", "items": { "$ref": "#/components/schemas/ExtraBooking" } } } }, "SlotContract": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "slotId", "slot", "contractId", "contract", "price", "canPayLater" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "slotId": { "type": "string", "format": "guid" }, "slot": { "$ref": "#/components/schemas/Slot" }, "contractId": { "type": "integer", "format": "int32" }, "contract": { "$ref": "#/components/schemas/Contract" }, "price": { "type": "number", "format": "decimal" }, "validationId": { "type": "integer", "format": "int32", "nullable": true }, "validation": { "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/Validation" } ] }, "canPayLater": { "type": "boolean" }, "description": { "type": "string", "nullable": true } } }, "Validation": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" } } }, "ExtraBooking": { "type": "object", "additionalProperties": false, "required": [ "extraId", "extra", "bookingId", "booking" ], "properties": { "extraId": { "type": "integer", "format": "int32" }, "extra": { "$ref": "#/components/schemas/Extra" }, "bookingId": { "type": "integer", "format": "int32" }, "booking": { "$ref": "#/components/schemas/Booking" } } }, "Extra": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "outletId", "outlet" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "outletId": { "type": "integer", "format": "int32" }, "outlet": { "$ref": "#/components/schemas/Outlet" } } }, "Booking": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "bookingStatusId", "bookingStatus", "bookingStatusDate", "isPaid", "amountOutstanding", "amountPaid" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "bookingStatusId": { "type": "integer", "format": "int32" }, "bookingStatus": { "$ref": "#/components/schemas/BookingStatus" }, "bookingStatusDate": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "format": "guid", "nullable": true }, "user": { "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/User" } ] }, "isPaid": { "type": "boolean" }, "amountOutstanding": { "type": "number", "format": "decimal" }, "amountPaid": { "type": "number", "format": "decimal" } } }, "BookingStatus": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" } } }, "User": { "type": "object", "additionalProperties": false, "required": [ "id", "emailConfirmed", "phoneNumberConfirmed", "twoFactorEnabled", "lockoutEnabled", "accessFailedCount", "firstName", "lastName", "userContracts", "userRoles" ], "properties": { "id": { "type": "string", "format": "guid" }, "userName": { "type": "string", "nullable": true }, "normalizedUserName": { "type": "string", "nullable": true }, "email": { "type": "string", "nullable": true }, "normalizedEmail": { "type": "string", "nullable": true }, "emailConfirmed": { "type": "boolean" }, "passwordHash": { "type": "string", "nullable": true }, "securityStamp": { "type": "string", "nullable": true }, "concurrencyStamp": { "type": "string", "nullable": true }, "phoneNumber": { "type": "string", "nullable": true }, "phoneNumberConfirmed": { "type": "boolean" }, "twoFactorEnabled": { "type": "boolean" }, "lockoutEnd": { "type": "string", "format": "date-time", "nullable": true }, "lockoutEnabled": { "type": "boolean" }, "accessFailedCount": { "type": "integer", "format": "int32" }, "firstName": { "type": "string" }, "lastName": { "type": "string" }, "picture": { "type": "string", "nullable": true }, "userContracts": { "type": "array", "items": { "$ref": "#/components/schemas/UserContract" } }, "userRoles": { "type": "array", "items": { "$ref": "#/components/schemas/UserRole" } } } }, "UserContract": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "contractId", "contract", "startDate", "price", "isActive", "userId", "user" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "contractId": { "type": "integer", "format": "int32" }, "contract": { "$ref": "#/components/schemas/Contract" }, "startDate": { "type": "string", "format": "date-time" }, "endDate": { "type": "string", "format": "date-time", "nullable": true }, "price": { "type": "number", "format": "decimal" }, "isActive": { "type": "boolean" }, "userId": { "type": "string", "format": "guid" }, "user": { "$ref": "#/components/schemas/User" } } }, "UserRole": { "type": "object", "additionalProperties": false, "required": [ "userId", "roleId", "id", "role" ], "properties": { "userId": { "type": "string", "format": "guid" }, "roleId": { "type": "string", "format": "guid" }, "id": { "type": "integer", "format": "int32" }, "outletId": { "type": "integer", "format": "int32", "nullable": true }, "outlet": { "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/Outlet" } ] }, "role": { "$ref": "#/components/schemas/Role" } } }, "Role": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "format": "guid" }, "name": { "type": "string", "nullable": true }, "normalizedName": { "type": "string", "nullable": true }, "concurrencyStamp": { "type": "string", "nullable": true } } }, "FacilityExtra": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "facilityId", "facility", "extraId", "extra", "name", "code", "price", "startDate", "bookingStatusId", "bookingStatus", "isAvailable", "isOnline", "userId", "user" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "facilityId": { "type": "integer", "format": "int32" }, "facility": { "$ref": "#/components/schemas/Facility" }, "extraId": { "type": "integer", "format": "int32" }, "extra": { "$ref": "#/components/schemas/Extra" }, "name": { "type": "string" }, "code": { "type": "string" }, "price": { "type": "number", "format": "decimal" }, "startDate": { "type": "string", "format": "date-time" }, "endDate": { "type": "string", "format": "date-time", "nullable": true }, "bookingStatusId": { "type": "integer", "format": "int32" }, "bookingStatus": { "$ref": "#/components/schemas/BookingStatus" }, "isAvailable": { "type": "boolean" }, "isOnline": { "type": "boolean" }, "userId": { "type": "string", "format": "guid" }, "user": { "$ref": "#/components/schemas/User" } } }, "ContractOutlet": { "type": "object", "additionalProperties": false, "required": [ "created", "id", "contractId", "contract", "outletId", "outlet", "isActive" ], "properties": { "created": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "format": "guid", "nullable": true }, "lastModified": { "type": "string", "format": "date-time", "nullable": true }, "lastModifiedBy": { "type": "string", "format": "guid", "nullable": true }, "id": { "type": "integer", "format": "int32" }, "contractId": { "type": "integer", "format": "int32" }, "contract": { "$ref": "#/components/schemas/Contract" }, "outletId": { "type": "integer", "format": "int32" }, "outlet": { "$ref": "#/components/schemas/Outlet" }, "contractStart": { "type": "string", "format": "date-time", "nullable": true }, "contractEnd": { "type": "string", "format": "date-time", "nullable": true }, "isActive": { "type": "boolean" } } }, "OutletDTO": { "type": "object", "additionalProperties": false, "required": [ "id", "slug", "name", "businessId", "business", "vatNumber", "displayName", "outletTypeId", "outletType", "isActive", "facilities" ], "properties": { "id": { "type": "integer", "format": "int32" }, "slug": { "type": "string" }, "name": { "type": "string" }, "businessId": { "type": "integer", "format": "int32" }, "business": { "$ref": "#/components/schemas/BusinessDTO" }, "vatNumber": { "type": "string" }, "logo": { "type": "string", "nullable": true }, "address": { "type": "string", "nullable": true }, "company": { "type": "string", "nullable": true }, "registration": { "type": "string", "nullable": true }, "displayName": { "type": "string" }, "outletTypeId": { "type": "integer", "format": "int32" }, "outletType": { "$ref": "#/components/schemas/OutletTypeDTO" }, "isActive": { "type": "boolean" }, "facilities": { "type": "array", "items": { "$ref": "#/components/schemas/FacilityDTO" } } } }, "BusinessDTO": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" } } }, "OutletTypeDTO": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" } } }, "FacilityDTO": { "type": "object", "additionalProperties": false, "required": [ "id", "name", "outletId", "facilityTypeId", "facilityType" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" }, "outletId": { "type": "integer", "format": "int32" }, "isActive": { "type": "boolean", "nullable": true }, "facilityTypeId": { "type": "integer", "format": "int32" }, "facilityType": { "$ref": "#/components/schemas/FacilityTypeDTO" } } }, "FacilityTypeDTO": { "type": "object", "additionalProperties": false, "required": [ "id", "name" ], "properties": { "id": { "type": "integer", "format": "int32" }, "name": { "type": "string" } } }, "BookingCreateResponse": { "type": "object", "additionalProperties": false, "required": [ "bookingIds", "slotId", "quantity", "email", "status", "totalPrice", "createdAt", "expiresAt" ], "properties": { "bookingIds": { "type": "array", "items": { "type": "integer", "format": "int32" } }, "slotId": { "type": "string", "format": "guid" }, "quantity": { "type": "integer", "format": "int32" }, "email": { "type": "string" }, "status": { "type": "string" }, "totalPrice": { "type": "number", "format": "decimal" }, "createdAt": { "type": "string", "format": "date-time" }, "expiresAt": { "type": "string", "format": "date-time" } } }, "BookingCreateRequest": { "type": "object", "additionalProperties": false, "required": [ "slotId", "email", "slotContractId", "quantity" ], "properties": { "slotId": { "type": "string", "format": "guid", "minLength": 1, "nullable": false }, "slotContractId": { "type": "integer", "format": "int32", "minimum": 0.0, "exclusiveMinimum": true }, "quantity": { "type": "integer", "format": "int32", "minimum": 0.0, "exclusiveMinimum": true }, "email": { "type": "string", "format": "email", "minLength": 1, "pattern": "^[^@]+@[^@]+$", "nullable": false } } }, "UserRoleRequest": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string", "minLength": 1, "nullable": false } } }, "UserRegisterRequest": { "type": "object", "additionalProperties": false, "required": [ "firstName", "lastName", "email", "password" ], "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" }, "email": { "type": "string" }, "password": { "type": "string" } } }, "UserModel": { "type": "object", "additionalProperties": false, "required": [ "id", "email", "emailConfirmed", "firstName", "lastName", "name" ], "properties": { "id": { "type": "string" }, "email": { "type": "string" }, "emailConfirmed": { "type": "boolean" }, "firstName": { "type": "string" }, "lastName": { "type": "string" }, "name": { "type": "string" }, "picture": { "type": "string", "nullable": true } } }, "RefreshRevokeRequest": { "type": "object", "additionalProperties": false, "required": [ "id" ], "properties": { "id": { "type": "string", "format": "guid" } } }, "RefreshListResponse": { "type": "object", "additionalProperties": false, "required": [ "id", "expiresAtUtc", "browser", "browserVersion", "device", "platform", "processor", "isCurrent" ], "properties": { "id": { "type": "string", "format": "guid" }, "expiresAtUtc": { "type": "string", "format": "date-time" }, "browser": { "type": "string" }, "browserVersion": { "type": "string" }, "device": { "type": "string" }, "platform": { "type": "string" }, "processor": { "type": "string" }, "isCurrent": { "type": "boolean" } } }, "PasskeyRequest": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" } } }, "LoginRequest": { "type": "object", "additionalProperties": false, "required": [ "email", "password" ], "properties": { "email": { "type": "string" }, "password": { "type": "string" }, "twoFactorCode": { "type": "string", "nullable": true }, "twoFactorRecoveryCode": { "type": "string", "nullable": true } } } } } }